Jaeger
Jaeger is an open source distributed tracing platform that stores, searches, and visualizes the path of requests across services. It helps you find where a request slowed down or failed in a distributed system.
itCloud native tools and technologies | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic: Jaeger
Jaeger is where the scattered bits of one request are persuaded to sit at the same table. In a distributed system, a request can visit a gateway, a catalog service, a payment service, and a database. Logs report their individual gossip. A trace joins the timed pieces into one operation path.
The important unit is a span, which records one logical piece of work. Related spans form a trace. Trace context carries the trace identity across service boundaries, rather like a luggage label that must survive several enthusiastic baggage handlers. If that propagation breaks, the downstream work can appear in a different trace. Jaeger cannot recreate a relationship that was never recorded.
This means Jaeger is not an all-seeing machine. Applications need instrumentation to create spans, and the course uses OpenTelemetry for that job. Jaeger receives the resulting trace data, stores it, and makes it available through query services and the UI. The useful mental model is: instrumentation creates evidence; Jaeger receives, retains, and exposes it.
The backend has roles because the evidence has somewhere to travel. The collector receives trace data and writes storage. The query role reads storage and serves the UI. An all-in-one process is useful for development and testing, but its in-memory data disappears at restart. A larger deployment can split collector and query roles, use external storage, and scale reading separately from writing. Kafka can buffer collection before ingesters write storage, which buys decoupling and also buys another thing to operate. The universe does enjoy invoices.
A trace is the start of an investigation, not its verdict. Find a representative retained request. Check whether it is complete. Follow parent-child timing, errors, attributes, and events. A long span shows observed elapsed time, not root cause. One sampled trace does not show how often something happens. Metrics, logs, profiles, dependencies, and application behavior still have jobs to do.
Read the Intro for the architecture and tradeoffs. Use Slides for the data path and the configuration choices. Keep the Cheatsheet nearby when investigating traces, sampling, storage, security, and evidence boundaries. Then use the practice session to generate a trace and see how the pieces behave when they are not merely diagrams.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://www.jaegertracing.io/docs/2.20/
Supports
- Current Jaeger documentation map and version
- Progression rationale for the primary reference path
- https://www.jaegertracing.io/docs/2.20/getting-started/
Supports
- All-in-one container behavior and Jaeger UI access
- In-memory storage in the introductory configuration
- Requirement and recommendation for OpenTelemetry instrumentation
- HotROD as an instrumented demonstration
- Quiz questions 01 and 03
- https://www.jaegertracing.io/docs/2.20/architecture/terminology/
Supports
- Span, trace, tag, log, process, and causal relationship terminology
- Mapping between Jaeger and OpenTelemetry trace concepts
- Quiz questions 06 and 08
- https://www.jaegertracing.io/docs/2.20/architecture/
Supports
- Collector, query, ingester, all-in-one, and agent roles
- Jaeger version 2 as an OpenTelemetry Collector distribution
- Direct-to-storage and Kafka-buffered architecture tradeoffs
- OpenTelemetry Collector placement options
- Independent read and write scaling with separated roles
- In-memory and Badger deployment limits
- Quiz questions 02 through 05 and 09
- https://www.jaegertracing.io/docs/2.20/architecture/apis/
Supports
- OTLP ingestion and Jaeger query API surfaces
- Separation of ingestion and query connections
- https://www.jaegertracing.io/docs/2.20/sampling/
Supports
- Sampling as an application, processing, and storage cost control
- Head, tail, remote, file-based, and adaptive sampling
- Tail-sampling memory and processing tradeoffs
- Quiz question 07
- https://www.jaegertracing.io/docs/2.20/storage/
Supports
- Persistent storage requirement
- Cassandra, Elasticsearch, and OpenSearch as primary distributed backends
- Remote and archive storage concepts
- https://www.jaegertracing.io/docs/2.20/deployment/security/
Supports
- Security mechanisms between SDKs, collectors, storage, browsers, UI, and query consumers
- Transport encryption and authentication review
- Quiz question 09
- https://www.jaegertracing.io/docs/2.20/operations/
Supports
- Official path to configuration, monitoring, performance tuning, and troubleshooting
- Rationale for the final reference link
- https://opentelemetry.io/docs/concepts/signals/traces/
Supports
- Traces and spans as evidence about an operation path
- Span timing, attributes, events, status, and relationships
- Evidence boundaries in trace interpretation
- Quiz question 08
- https://opentelemetry.io/docs/concepts/context-propagation/
Supports
- Injection and extraction of trace context across service boundaries
- Broken propagation as a cause of disconnected traces
- Quiz question 06
- https://github.com/sindresorhus/awesome
Supports
- Starting directory for awesome-list discovery
- https://github.com/magsther/awesome-opentelemetry
Supports
- Discovery of Tracetest, Grafana Tempo, and SigNoz as relevant tracing ecosystem projects
- https://docs.tracetest.io/
Supports
- Trace-based integration and end-to-end testing with OpenTelemetry traces
- Assertions on spans, timing, transactions, and side effects
- Tracetest awesome-link rationale
- https://grafana.com/docs/tempo/latest/
Supports
- Tempo as an open source distributed tracing backend
- Support for open tracing protocols and correlation with metrics and logs
- Grafana Tempo awesome-link rationale
- https://signoz.io/docs/what-is-signoz/
Supports
- SigNoz as an OpenTelemetry-based observability tool
- Correlated traces, metrics, logs, exceptions, alerts, and dashboards
- SigNoz awesome-link rationale
- https://github.com/jaegertracing/jaeger/blob/main/examples/hotrod/README.md
Supports
- Versioned HotROD demonstration commands, Jaeger UI access, and cleanup
- Practice reference and exercise success criteria
- https://www.jaegertracing.io/download/
Supports
- Jaeger 2 container image and current versioned image availability
- HotROD container image availability
- https://medium.com/jaegertracing/where-did-all-my-spans-go-a-guide-to-diagnosing-dropped-spans-in-jaeger-10d9697f8182
Supports
- Field Notes on pipeline-level span loss and counters
- https://www.cncf.io/announcements/2019/10/31/cloud-native-computing-foundation-announces-jaeger-graduation/
Supports
- Jaeger creation, CNCF incubation, and CNCF graduation timeline events
- https://www.cncf.io/projects/jaeger/
Supports
- CNCF incubation and graduation dates
- https://medium.com/jaegertracing/announcing-jaeger-1-0-37b5990cc59b
Supports
- Jaeger 1.0 timeline event
- https://medium.com/jaegertracing/jaeger-and-opentelemetry-1846f701d9f2
Supports
- Jaeger and OpenTelemetry relationship timeline event
- https://medium.com/jaegertracing/jaeger-embraces-opentelemetry-collector-90a545cbc24
Supports
- Collector-based direction timeline event
- https://medium.com/jaegertracing/migrating-from-jaeger-client-to-opentelemetry-sdk-bd337d796759
Supports
- OpenTelemetry SDK migration timeline event and Field Notes
- https://medium.com/jaegertracing/introducing-native-support-for-opentelemetry-in-jaeger-eb661be8183c
Supports
- Native OTLP ingestion timeline event
- https://medium.com/jaegertracing/jaeger-v2-released-09a6033d1b10
Supports
- Jaeger 2 timeline event
- https://grafana.com/oss/tempo/
Supports
- Grafana Tempo landscape placement
- https://www.honeycomb.io/platform
Supports
- Honeycomb landscape placement
- https://docs.newrelic.com/docs/distributed-tracing/concepts/introduction-distributed-tracing/
Supports
- New Relic landscape placement
- https://signoz.io/distributed-tracing/
Supports
- SigNoz landscape placement
