1. Tracing concepts #
Following a request end to end.
Trace and span #
| Concept | Definition |
|---|---|
| Trace | The complete journey of a request, identified by a trace_id |
| Span | An operation (HTTP call, SQL query) with start, duration, attributes, events and status |
| Parent-child relationship | Each span knows its parent: you get a tree |
| Context | trace_id + span_id passed from one service to the next |
| Propagation | Carrying the context in headers (W3C traceparent, B3, or the historical uber-trace-id) |
traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
# version-trace_id(16 octets)-span_id parent(8 octets)-drapeaux (01 = échantillonné)2. Jaeger #
A mature CNCF project.
History #
Jaeger was created at Uber in 2015, donated to the CNCF in 2017 and has been « graduated » there since 2019. Version 2 (late 2024) rebuilds Jaeger on the OpenTelemetry Collector: native OTLP reception, Collector-style configuration, and the ability to add any OpenTelemetry processor.
Good to know: The historical Jaeger clients (jaeger-client-* libraries) are discontinued in favor of the OpenTelemetry SDKs. Jaeger version 1 has also reached end of life: new installations should start from v2.Architecture #
| Role | Function |
|---|---|
| Collector | Receives spans (OTLP), processes them and writes them to storage |
| Query | API and web search interface (port 16686) |
| Ingester | Reads spans from Kafka and writes them to storage (buffered architecture) |
| Storage | Memory, Badger, Elasticsearch, OpenSearch, Cassandra, or a remote plugin (gRPC) |
