Router Instruments
Standard metric instruments for the router's request lifecycle
Standard metric instruments
GraphOS Router and Apollo Router Core provide a set of standard router instruments that expose detailed information about the router's request lifecycle. You can consume the metrics they capture by configuring a metrics exporter.
Standard router instruments are different than OpenTelemetry (OTel) instruments or custom instruments:
Router instruments provide standard metrics about the router request lifeycle and have names starting with
apollo.router
orapollo_router
.OTel instruments provide metrics about the HTTP lifecycle and have names starting with
http
.Custom instruments provide customized metrics about the router request lifecycle.
The rest of this reference lists the available standard router instruments.
GraphQL
apollo.router.graphql_error
- counts GraphQL errors in responses, attributes:code
: error code
Session
apollo.router.session.count.active
- Number of in-flight GraphQL requests
Cache
apollo.router.cache.size
— Number of entries in the cacheapollo.router.cache.hit.time
- Time to hit the cache in secondsapollo.router.cache.hit.time.count
- Number of cache hitsapollo.router.cache.miss.time
- Time to miss the cache in secondsapollo.router.cache.miss.time.count
- Number of cache missesapollo.router.cache.storage.estimated_size
- The estimated storage size of the cache in bytes (query planner in memory only).
All cache metrics listed above have the following attributes:
kind
: the cache being queried (apq
,query planner
,introspection
)storage
: The backend storage of the cache (memory
,redis
)
Coprocessor
apollo.router.operations.coprocessor.total
- Total operations with coprocessors enabled.apollo.router.operations.coprocessor.duration
- Time spent waiting for the coprocessor to answer, in seconds.
The coprocessor operations metric has the following attributes:
coprocessor.stage
: string (RouterRequest
,RouterResponse
,SubgraphRequest
,SubgraphResponse
)coprocessor.succeeded
: bool
Performance
apollo_router_schema_load_duration
- Time spent loading the schema in seconds.
Query planning
apollo.router.query_planning.warmup.duration
- Time spent warming up the query planner queries in seconds.apollo.router.query_planning.plan.duration
- Histogram of plan durations isolated to query planning time only.apollo.router.query_planning.total.duration
- Histogram of plan durations including queue time.apollo.router.query_planning.queued
- When the legacy planner is used, a gauge of the number of queued plans requests.apollo.router.query_planning.plan.evaluated_plans
- Histogram of the number of evaluated query plans.apollo.router.v8.heap.used
- heap memory used by V8, in bytes.apollo.router.v8.heap.total
- total heap allocated by V8, in bytes.
Compute jobs
apollo.router.compute_jobs.queued
- A gauge of the number of jobs queued for the thread pool dedicated to CPU-heavy components like GraphQL parsing and validation, and the (new) query planner.apollo.router.compute_jobs.queue_is_full
- A counter of requests rejected because the queue was full
Uplink
apollo_router_uplink_fetch_duration_seconds
- Uplink request duration, attributes:url
: The Uplink URL that was polledquery
: The query that the router sent to Uplink (SupergraphSdl
orLicense
)kind
: (new
,unchanged
,http_error
,uplink_error
)code
: The error code depending on type (if an error occurred)error
: The error message (if an error occurred)
apollo_router_uplink_fetch_count_total
status
: (success
,failure
)query
: The query that the router sent to Uplink (SupergraphSdl
orLicense
)
Subscriptions
apollo.router.opened.subscriptions
- Number of different opened subscriptions (not the number of clients with an opened subscriptions in case it's deduplicated)apollo.router.skipped.event.count
- Number of subscription events that has been skipped because too many events have been received from the subgraph but not yet sent to the client.
Batching
apollo.router.operations.batching
- A counter of the number of query batches received by the router.apollo.router.operations.batching.size
- A histogram tracking the number of queries contained within a query batch.
GraphOS Studio
apollo.router.telemetry.studio.reports
- The number of reports submitted to GraphOS Studio by the router.report.type
: The type of report submitted: "traces" or "metrics"report.protocol
: Either "apollo" or "otlp", depending on the otlp_tracing_sampler configuration.
Telemetry
apollo.router.telemetry.batch_processor.errors
- The number of errors encountered by exporter batch processors.name
: One ofapollo-tracing
,datadog-tracing
,jaeger-collector
,otlp-tracing
,zipkin-tracing
.error
= One ofchannel closed
,channel full
.