Jaeger: distributed tracing open source da Uber

Jaeger (aprile 2017, Uber) di Yuri Shkuro: distributed tracing system per micro-servizi. OpenTracing/OpenTelemetry compatible, storage Cassandra/ES/Kafka, UI ricca. CNCF graduated 2019, standard osservabilità tracing.

Open SourceWeb JaegerUberDistributed TracingOpenTelemetryCNCFObservabilityOpen Source

Il problema del tracing distribuito

Le architetture a micro-servizi generano cascate di chiamate: una request HTTP entra, attraversa 5-50 servizi, ciascuno con le proprie latenze, errori, dipendenze downstream. I log tradizionali non bastano: serve tracing distribuito che correla tutti gli span di una singola transazione con trace ID condiviso.

Dapper (Google, 2010) e Zipkin (Twitter, 2012) sono i precursori. Uber costruisce Jaeger dopo aver superato Zipkin in scala interna.

Il rilascio

Jaeger è rilasciato open source da Uber nell’aprile 2017. Lead engineer: Yuri Shkuro. Scritto in Go, licenza Apache 2.0. Donato alla CNCF nell’ottobre 2017, graduated nell’ottobre 2019. Nome: Jägermeister (cacciatore in tedesco).

Architettura

  • Agent — sidecar/DaemonSet che raccoglie span dai servizi
  • Collector — riceve span, processa, scrive in storage
  • Query service + UI — interroga storage per visualizzare trace
  • Storage — Cassandra (originale), Elasticsearch, Kafka, gRPC plugin, Badger (embedded)
  • Ingester — Kafka → storage (deployment async)

Instrumentazione

Supporto:

  • OpenTracing API (storico) — interfaccia cross-vendor precedente
  • OpenTelemetry (OTel) — standard corrente CNCF; Jaeger è backend OTel-compatible
  • Jaeger native clients — Go, Java, Python, Node, C++

Molte librerie/framework hanno instrumentazione auto: Express, Spring Boot, gRPC, Kafka client, HTTP client, SQL driver.

Caratteristiche UI

  • Trace search — per servizio, operazione, tag, duration
  • Service dependency graph — dipendenze tra micro-servizi
  • Flame graph — latenza per span
  • Compare traces — diff tra due esecuzioni

Concorrenti

  • Zipkin (Twitter, 2012) — storico, più semplice
  • Tempo (Grafana Labs, 2020) — storage-first, integrato con Loki/Prometheus
  • AWS X-Ray, Google Cloud Trace, Azure Monitor — managed
  • Datadog APM, New Relic, Dynatrace — commerciali
  • SigNoz — OSS full stack
  • Honeycomb — analytics-oriented

Declino relativo

Dal 2023-2024 molti team stanno migrando a Grafana Tempo o SigNoz per avere stack osservabilità unificato (log + metrics + traces). Jaeger resta dominante dove già installato e stabile.

Nel contesto italiano

Jaeger è presente in:

  • Telco — TIM, Vodafone per trace B/OSS distribuiti
  • Fintech e challenger bank — debug flussi transazionali
  • Grandi e-commerce con micro-servizi
  • PA digitale — progetti con tante integrazioni inter-ente
  • SaaS B2B che vendono APIs

Lo stack tipico è OpenTelemetry SDK → Collector → Jaeger in 2024-2026.


Riferimenti: Jaeger (Uber, aprile 2017). Yuri Shkuro. Licenza Apache 2.0. Scritto in Go. CNCF graduated (ottobre 2019). OpenTracing / OpenTelemetry backend. Storage Cassandra, Elasticsearch, Kafka.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi