After switching from REST to GraphQL, teams often lose control over performance. Typical picture: a request slows down, but it's unclear which resolver is to blame. N+1 queries masquerade as normal responses, and an incompatible schema change breaks a mobile app. With 5+ years of experience, we have implemented GraphQL observability for 50+ projects — from startups to enterprise — and know which tools actually work in production. In one case, p95 latency of operations rose from 200 to 800 ms in a week. Only resolver tracing showed that the problem was a new user.orders handler that made 50 separate database requests. Observability helped identify this in an hour, reducing diagnosis time from hours to minutes, and after fixing the N+1 queries, latency dropped by 60%.
Our GraphQL monitoring solution integrates Apollo Studio, GraphQL Hive, or OpenTelemetry for resolver tracing, with Prometheus metrics displayed in Grafana dashboards. This setup provides comprehensive GraphQL API monitoring, including N+1 query detection and core web vitals tracking.
Problems We Solve
- Invisible field usage: Apollo Studio shows which fields clients actually request. This helps remove deprecated fields without fear.
- Slow handlers without tracing: OpenTelemetry with Jaeger/Tempo allows you to see exactly which handler is slowing things down — down to the argument level.
- Breaking schema changes: automatic backward compatibility checks at each deploy prevent production failures.
How We Do It: Stack and Configs
Apollo Studio (GraphOS)
// Installation
npm install @apollo/server @apollo/server/plugin/usageReporting
import { ApolloServer } from '@apollo/server'
import { ApolloServerPluginUsageReporting } from '@apollo/server/plugin/usageReporting'
const server = new ApolloServer({
typeDefs,
resolvers,
plugins: [
ApolloServerPluginUsageReporting({
// APOLLO_KEY from environment variables
sendVariableValues: {
// Do not send sensitive variables
exceptNames: ['password', 'token', 'secret']
},
sendHeaders: {
exceptNames: ['Authorization', 'Cookie']
},
// Tracing sampling (100% expensive, 10% sufficient for analysis)
fieldLevelInstrumentation: 0.1
})
]
})
According to official docs for Apollo's GraphOS, the platform provides: p50/p95/p99 latency breakdown by operation, field usage, schema checks with real client queries, degradation alerts.
GraphQL Hive (self-hosted platform)
# Docker Compose for GraphQL Hive
docker run -d \
-e HIVE_TOKEN=your-token \
-e TARGET=your-org/your-project/production \
ghcr.io/kamilkisiela/graphql-hive/cli:latest
import { useHive } from '@graphql-hive/client'
import { envelop, useSchema } from '@envelop/core'
const getEnveloped = envelop({
plugins: [
useSchema(schema),
useHive({
enabled: true,
token: process.env.HIVE_TOKEN,
usage: {
sampleRate: 1.0,
exclude: ['IntrospectionQuery']
},
reporting: {
author: 'CI Pipeline',
commit: process.env.GIT_SHA
}
})
]
})
OpenTelemetry Handler Tracing
For self-hosted observability with Jaeger/Tempo, we use a plugin that creates a span for each handler. This provides a full picture of the request, including database calls. OpenTelemetry is free and open-source; only hosting costs for the collector (~$30-50/month).
Comparison: Apollo Studio vs GraphQL Hive
| Criteria | Apollo Studio | GraphQL Hive |
|---|---|---|
| Hosting | Cloud (SaaS) | Self-hosted (Docker) |
| Field usage | Yes, per-client detail | Yes, via usage reporting |
| Schema checks | Yes, CI integration | Yes, via @graphql-inspector |
| Data retention | 90 days default | Configurable (up to 2 years) |
| Cost | Free for small, paid for enterprise ($99/month) | Open source, optional paid hosting |
| Data residency | AWS regions | Full control |
Apollo's cloud solution is 5x faster to set up than building custom monitoring, while Hive offers 2x cost savings for large teams. Combined OpenTelemetry and Apollo Studio provides 2x more comprehensive tracing than Apollo Studio alone.
Typical Monitoring Metrics
| Metric | Target Value | Source |
|---|---|---|
| p95 latency | < 500 ms | Apollo/Hive |
| Error rate | < 1% | Apollo/Hive |
| N+1 queries | 0 | OpenTelemetry |
| Schema compliance | 100% | Schema checks |
With monitoring in place, you get schema change alerts and full GraphQL API monitoring, including p95 latency tracking.
How to Choose Between Apollo Studio and GraphQL Hive?
If you need a quick cloud solution without administration overhead — choose Apollo's studio platform. If you have data residency requirements or a large budget — choose Hive. We help with the selection during the audit phase.
Why Add OpenTelemetry Separately?
OpenTelemetry provides full request tracing, including calls to third-party APIs and databases. Apollo Studio/Hive only see the GraphQL layer. Combining both gives 100% visibility. It also helps identify impact on Core Web Vitals by optimizing TTFB.
Example: How OpenTelemetry Saved Production
A client complained about slow responses, but Apollo Studio metrics showed no issues. OpenTelemetry revealed that one handler made 200 MongoDB requests instead of one due to a missing dataloader. Fixing it reduced latency by 4x.
Common Setup Mistakes
- Too low sample rate (below 1%) — statistically unreliable p99.
- No filtering of sensitive data — credential leakage through metrics.
- Ignoring schema change alerts during deploy — risk of breaking changes.
Our Setup Process
- Analysis: audit current schema, identify bottlenecks using
@apollo/roverorgraphql-inspector. - Design: choose tool (Apollo Studio, Hive, or OpenTelemetry), design metrics (p50/p95/p99, error rate, Prometheus metrics).
- Implementation: integrate plugin, configure resolver tracing, publish schema.
- Testing: verify on staging, compare before/after metrics. In one project, we reduced 95th percentile latency from 2s to 300ms.
- Deploy and alerts: set up notifications in Slack/Telegram for degradation (e.g., p95 latency > 500ms), plus Grafana dashboards.
Our certified engineers guarantee a robust solution.
What's Included and Timeline
GraphQL monitoring setup takes 2 to 5 business days depending on schema complexity and chosen solution. Includes: connecting Apollo Studio or GraphQL Hive with schema publishing, resolver tracing via OpenTelemetry (Jaeger/Tempo), Prometheus metrics + Grafana dashboard with panels "Top Slow Operations", "Error Rate", "Slowest Resolvers", configuring alerts and automatic backward compatibility checks, operations documentation.
Setup cost starts at $2,000, and clients typically save $500–$1,000 per month in operational costs. Annual savings can reach $12,000. Investment in monitoring pays off on average in 2-3 months — reducing problem-finding time and preventing incidents saves budgets. Our service costs $2,000 and typically saves $500-$1,000 per month, achieving ROI in 2-3 months. Contact us to set up monitoring for your project. Get a consultation on tool selection and fast integration.







