The distributed tracing problem
Microservice architectures generate call cascades: an HTTP request enters, traverses 5-50 services, each with its own latencies, errors, downstream dependencies. Traditional logs aren’t enough: distributed tracing is needed to correlate all spans of a single transaction with a shared trace ID.
Dapper (Google, 2010) and Zipkin (Twitter, 2012) are precursors. Uber builds Jaeger after outgrowing Zipkin at internal scale.
The release
Jaeger is released open source by Uber in April 2017. Lead engineer: Yuri Shkuro. Written in Go, Apache 2.0 licence. Donated to CNCF in October 2017, graduated in October 2019. Name: Jägermeister (hunter in German).
Architecture
- Agent — sidecar/DaemonSet that collects spans from services
- Collector — receives spans, processes, writes to storage
- Query service + UI — queries storage to display traces
- Storage — Cassandra (original), Elasticsearch, Kafka, gRPC plugin, Badger (embedded)
- Ingester — Kafka → storage (async deployment)
Instrumentation
Supports:
- OpenTracing API (historical) — earlier cross-vendor interface
- OpenTelemetry (OTel) — current CNCF standard; Jaeger is an OTel-compatible backend
- Jaeger native clients — Go, Java, Python, Node, C++
Many libraries/frameworks have auto-instrumentation: Express, Spring Boot, gRPC, Kafka client, HTTP client, SQL driver.
UI features
- Trace search — by service, operation, tag, duration
- Service dependency graph — dependencies between microservices
- Flame graph — per-span latency
- Compare traces — diff between two executions
Competitors
- Zipkin (Twitter, 2012) — historical, simpler
- Tempo (Grafana Labs, 2020) — storage-first, integrated with Loki/Prometheus
- AWS X-Ray, Google Cloud Trace, Azure Monitor — managed
- Datadog APM, New Relic, Dynatrace — commercial
- SigNoz — full-stack OSS
- Honeycomb — analytics-oriented
Relative decline
From 2023-2024 many teams are migrating to Grafana Tempo or SigNoz for a unified observability stack (logs + metrics + traces). Jaeger remains dominant where already installed and stable.
In the Italian context
Jaeger is present in:
- Telco — TIM, Vodafone for distributed B/OSS traces
- Fintech and challenger banks — debug transactional flows
- Large e-commerce with microservices
- Digital PA — projects with many inter-agency integrations
- B2B SaaS selling APIs
The typical stack is OpenTelemetry SDK → Collector → Jaeger in 2024-2026.
References: Jaeger (Uber, April 2017). Yuri Shkuro. Apache 2.0 licence. Written in Go. CNCF graduated (October 2019). OpenTracing / OpenTelemetry backend. Cassandra, Elasticsearch, Kafka storage.
