Jaeger — open-source distributed tracing system from Uber (2015), CNCF graduated since 2019. Shows the path of one request across many microservices as a tree of spans with timings. Used for: debugging slow requests, finding bottlenecks, understanding service dependencies. Alternatives: Zipkin (Twitter, similar), Tempo (Grafana, cheaper storage).
Below: details, example, related terms, FAQ.
// Python example (OpenTelemetry)
from opentelemetry import trace
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span('payment.charge') as span:
span.set_attribute('user.id', user_id)
result = stripe.charge(amount)
span.set_status(Status(StatusCode.OK))Similar. Jaeger has more active development (Uber/CNCF), Zipkin older + simpler UI. Both support OpenTelemetry.
With 1% sampling: 500 req/s app → ~5 traces/s → few GB/day. At higher samples — TB/week.
Grafana Tempo — cheaper (block storage, not DB), integrates with Grafana. Used by DoorDash, Reddit. New stack: Tempo instead of Jaeger.