Jaeger
Jaeger is a distributed tracing system that receives, stores, queries, and visualizes traces.
Why consider Jaeger?
An open-source distributed tracing platform for monitoring and troubleshooting workflows in complex microservices architectures.
Learn Jaeger by building
Practical setup notes, real use cases, and copy-ready examples in one focused guide.
In this guide3 sections
Jaeger is a highly scalable distributed tracing platform, available through its official website, that was originally created by Uber Technologies and later donated to the Cloud Native Computing Foundation (CNCF). Designed to monitor and troubleshoot workflows in complex distributed systems, Jaeger helps developers connect the dots between disparate components within a microservices architecture. By accurately mapping the flow of requests and data as they traverse various services, Jaeger empowers engineering teams to identify performance bottlenecks, pinpoint the root causes of errors, and systematically analyze service dependencies.
Operating in modern cloud-native environments requires robust observability tools, and Jaeger delivers by providing full end-to-end visibility into distributed requests. It natively supports OpenTelemetry and scales to accommodate the high throughput characteristic of large production environments.
Why Use Distributed Tracing?
In a microservices architecture, a single user action may trigger a cascade of calls across multiple independent services. Each of these services can introduce its own delays, errors, or performance degradations. Traditional monitoring and logging often fall short because they lack the context needed to tie these individual service logs into a cohesive story of the request's journey.
Distributed tracing observability platforms, such as Jaeger, solve this problem by propagating context along with the request. By attaching a unique trace ID to a request as it enters the system, Jaeger allows you to track its entire lifecycle across service boundaries. This provides immediate insights into how long each step took, which services failed, and where the critical path was blocked. Furthermore, native OpenTelemetry (OTLP) support means Jaeger accepts standard trace data over HTTP or gRPC out of the box, making instrumentation standardized and vendor-neutral.
Running Jaeger Locally
The quickest and easiest way to start exploring Jaeger is by using its provided all-in-one Docker image. As described in the Jaeger documentation, this configuration conveniently bundles the Jaeger UI, the collector, the query components, and a lightweight in-memory storage backend into a single container process.
You can spin up the Jaeger all-in-one instance by executing the following command in your terminal:
# Run Jaeger all-in-one (includes UI, collector, query, and in-memory storage)docker run --rm --name jaeger \ -p 16686:16686 \ -p 4317:4317 \ -p 4318:4318 \ jaegertracing/jaeger:latestAfter the container initializes, you can access the powerful visual Jaeger UI by navigating your web browser to http://localhost:16686. To start populating the UI with data, you can send OpenTelemetry traces to the running collector via gRPC on port 4317 or HTTP on port 4318.
Important Development Constraints
While the all-in-one distribution is perfect for local development and rapid prototyping, it is strictly intended for transient workloads. The setup relies on an in-memory storage mechanism to hold trace data. Consequently, any traces collected during a session are entirely lost as soon as the container is stopped or restarted.
For production deployments where historical trace data must be securely retained, the official GitHub repository and documentation recommend configuring Jaeger with a durable, persistent storage backend. Supported high-availability databases include Elasticsearch, OpenSearch, Cassandra, and ClickHouse, ensuring that your observability data remains safe and queryable over time.
Related tools
More options with a similar category or technology profile.
diskus
Minimal, fast alternative to du -sh written in Rust using multi-threaded directory traversal.
peco
Simplistic interactive filtering tool for Unix pipelines, process lists, and file trees.
Dapr CLI
Command-line tool for managing Dapr distributed application runtime environments and sidecars.
Freeze
Generate beautiful image screenshots and SVGs of code snippets and terminal outputs.