“Why is that API call slow?” In a monolith, you open a profiler. In microservices? The request goes through API gateway, auth, order, inventory, payment service… Distributed tracing with Jaeger gives us the answers.
How tracing works¶
Each request gets a unique trace ID. When calling another service, the trace ID propagates in HTTP headers. Each service creates spans. The result: a waterfall diagram of the entire request.
Jaeger — from Uber to CNCF¶
Jaeger was developed by Uber and donated to CNCF in 2017. It implements the OpenTracing standard and supports multiple languages.
Sampling strategies¶
- Constant — 1% of all requests
- Probabilistic — adaptive percentage
- Rate limiting — max N traces/sec per service
We use rate limiting: 2 traces/sec. Sufficient for troubleshooting, manageable for storage.
Integration with Prometheus and Grafana¶
From Grafana, you can jump directly to a Jaeger trace — clicking from a metric to a specific request. This integration is key for efficient troubleshooting.
Distributed tracing is the third pillar of observability¶
Logs, metrics, traces — the three pillars of observability. Without tracing, you’re operating half-blind. Jaeger with OpenTracing is our choice.
Need help with implementation?
Our experts can help with design, implementation, and operations. From architecture to production.
Contact us