Monitoring a federated graph
As with any distributed architecture, a federated graph introduces more complexity than its monolithic counterpart. To help address this complexity and improve reliability, you should make sure that your federated graph has proper observability, monitoring, and automation in place.
This article describes Apollo managed federation features that help you monitor and debug your graph.
Federated graphs can push operation metrics to Apollo Studio to enable many powerful tools, including:
With a federated graph, your subgraphs pass trace data (timing and error information for each resolved schema field) to the gateway for every operation. The gateway then pushes that data to Studio:
Individual subgraphs do not push trace data directly to Studio.
Traces are displayed in Studio in the shape of the query plan, with each unique fetch to a subgraph reporting timing and error data.
Operation-level statistics are still collected for operations sent by clients, and those operations are validated as part of schema checks.
To enable federated tracing, you set the
APOLLO_KEY environment variable in your gateway's environment. Do not set this environment variable for your subgraph servers.
If other features require you to set
APOLLO_KEY in your subgraph servers, disable usage reporting in those servers.
Also ensure that all instances of Apollo Server in your graph are using an up-to-date version of the
View basic details for the subgraphs that make up your federated graph with the Rover CLI's
rover subgraph list command:
$ rover subgraph list docs-example-graph@productionListing subgraphs for docs-example-graph@production using credentials from the default profile.┌──────────┬───────────────────────────────┬────────────────────────────┐│ Name │ Routing Url │ Last Updated │├──────────┼───────────────────────────────┼────────────────────────────┤│ products │ http://localhost:4001/graphql │ 2020-12-18 10:29:14 -08:00 │├──────────┼───────────────────────────────┼────────────────────────────┤│ reviews │ http://localhost:4002/graphql │ 2020-12-18 10:28:59 -08:00 │└──────────┴───────────────────────────────┴────────────────────────────┘View full details at https://studio.apollographql.com/graph/docs-example-graph/service-list
This command includes a link to an Apollo Studio page that provides additional information about your subgraphs.
If you're using the Apollo CLI, run
apollo service:list instead.