1. Les concepts du tracing #
Suivre une requête de bout en bout.
Trace et span #
| Concept | Définition |
|---|---|
| Trace | Le parcours complet d'une requête, identifié par un trace_id |
| Span | Une opération (appel HTTP, requête SQL) avec début, durée, attributs, événements et statut |
| Relation parent-enfant | Chaque span connaît son parent : on obtient un arbre |
| Contexte | trace_id + span_id transmis d'un service à l'autre |
| Propagation | Transport du contexte dans les en-têtes (W3C traceparent, ou B3, ou uber-trace-id historique) |
traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
# version-trace_id(16 octets)-span_id parent(8 octets)-drapeaux (01 = échantillonné)2. Jaeger #
Un projet CNCF mature.
Histoire #
Jaeger a été créé chez Uber en 2015, donné à la CNCF en 2017 et y est « graduated » depuis 2019. La version 2 (fin 2024) reconstruit Jaeger sur l'OpenTelemetry Collector : réception OTLP native, configuration au format du Collector, et possibilité d'ajouter n'importe quel processeur OpenTelemetry.
À savoir : Les clients Jaeger historiques (bibliothèques jaeger-client-*) sont abandonnés au profit des SDK OpenTelemetry. La version 1 de Jaeger est elle aussi arrivée en fin de vie : les nouvelles installations doivent partir de la v2.Architecture #
| Rôle | Fonction |
|---|---|
| Collector | Reçoit les spans (OTLP), les traite et les écrit dans le stockage |
| Query | API et interface web de recherche (port 16686) |
| Ingester | Lit les spans depuis Kafka et les écrit dans le stockage (architecture avec tampon) |
| Stockage | Mémoire, Badger, Elasticsearch, OpenSearch, Cassandra, ou plugin distant (gRPC) |
