jaeger is a free, open source monitoring & observability project written in Go and released under Apache-2.0. It has 23,217 GitHub stars, 3,119 forks and 547 open issues, and was last pushed yesterday. On this registry it ranks #12 of 97 tracked projects in Monitoring & Observability, with 5 head-to-head comparisons available. It gained 7 stars over the last 3 tracked days.

What is jaeger?

What it is

Jaeger is a distributed tracing platform hosted by the Cloud Native Computing Foundation (CNCF), where it graduated as the 7th top-level project in October 2019. It was originally created by Uber Technologies and then donated to the CNCF. The project is written in Go and released under the Apache-2.0 license, and it lives in the OpenTelemetry and observability ecosystem: it consumes traces from OpenTelemetry SDKs and reuses components from the OpenTelemetry Collector. Its repository carries topics including cncf, distributed-tracing, jaeger, observability, opentelemetry and tracing, and the project is openly governed with contributions welcome from the community.

The concrete problem it solves is turning raw spans emitted by applications into usable traces. Application code instruments with an OpenTelemetry SDK and sends spans over HTTP or gRPC to the Jaeger Collector, which passes them to a storage backend and, through a storage plugin, also serves sampling decisions back to the SDK. The Jaeger Query Service and Jaeger UI then make those stored traces searchable and viewable, so operators can follow a single request across services rather than guessing from disconnected logs. Jaeger v2 is released, which is the current line of the project.

Key capabilities

  • Distributed tracing collection over OpenTelemetry Protocol, with gRPC on port 4317 and HTTP on port 4318.
  • Collector component that receives spans from OpenTelemetry SDKs and writes them to storage.
  • Query Service plus Jaeger UI for searching and inspecting stored traces, reached on port 16686 in the all-in-one container.
  • Pluggable storage layer, with the collector and query service communicating with storage plugins over gRPC.
  • Remote sampling, where the collector returns sampling decisions to the SDK over gRPC or the sampling endpoint.
  • All-in-one deployment mode bundling UI, collector, query and in-memory storage in a single image.
  • Reuse of OpenTelemetry Collector components, with documented configuration compatibility guarantees between Jaeger releases.

Who uses it and how

  • Teams running containerized workloads who start with the all-in-one Docker image to inspect traces locally during development.
  • Production deployments that separate the collector, query service and storage backend instead of using the bundled in-memory setup.
  • Applications already instrumented with the OpenTelemetry SDK, which emit traces to Jaeger without a Jaeger-specific client library.
  • Operators upgrading across Jaeger releases, who rely on the deprecation notices and the grace period of at least 3 months or two minor version bumps before a configuration option can be removed.
  • Builders of Go integrations, since the project tracks the currently supported Go versions defined by the Go team.

Getting started

Run the all-in-one image with Docker: docker run --rm --name jaeger -p 16686:16686 -p 4317:4317 -p 4318:4318 jaegertracing/jaeger:latest. The UI is then available at http://localhost:166

project readme (upstream, from github) — read inline

Stand With Ukraine

![Slack chat][slack-img] [![Unit Tests][ci-img]][ci] [![Coverage Status][cov-img]][cov] [![Project+Community stats][community-badge]][community-stats] [![FOSSA Status][fossa-img]][fossa] [![OpenSSF Scorecard][openssf-img]][openssf] [![OpenSSF Best Practices][openssf-bp-img]][openssf-bp] [![CLOMonitor][clomonitor-img]][clomonitor] [![Artifact Hub][artifacthub-img]][artifacthub]

Jaeger - a Distributed Tracing System

💥💥💥 Jaeger v2 is out! Read the blog post and try it out.

Quick Start

Get Jaeger running in seconds with Docker:

# 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:latest

# Access the UI at http://localhost:16686
# Send traces via OTLP: gRPC on port 4317, HTTP on port 4318

For production deployments and more options, see the Getting Started Guide.

Architecture

graph TD
    SDK["OpenTelemetry SDK"] --> |HTTP or gRPC| COLLECTOR
    COLLECTOR["Jaeger Collector"] --> STORE[Storage]
    COLLECTOR --> |gRPC| PLUGIN[Storage Plugin]
    COLLECTOR --> |gRPC/sampling| SDK
    PLUGIN --> STORE
    QUERY[Jaeger Query Service] --> STORE
    QUERY --> |gRPC| PLUGIN
    UI[Jaeger UI] --> |HTTP| QUERY
    subgraph Application Host
        subgraph User Application
            SDK
        end
    end

Jaeger is a distributed tracing platform created by Uber Technologies and donated to Cloud Native Computing Foundation.

See Jaeger [documentation][doc] for getting started, operational details, and other information.

Jaeger is hosted by the Cloud Native Computing Foundation (CNCF) as the 7th top-level project, graduated in October 2019. See the CNCF Jaeger incubation announcement and Jaeger graduation announcement.

Get Involved

Jaeger is an open source project with open governance. We welcome contributions from the community, and we would love your help to improve and extend the project. Here are some ideas for how to get involved. Many of them do not even require any coding.

Version Compatibility Guarantees

Since Jaeger uses many components from the OpenTelemetry Collector we try to maintain configuration compatibility between Jaeger releases. Occasionally, configuration options in Jaeger (or in Jaeger v1 CLI flags) can be deprecated due to usability improvements, new functionality, or changes in our dependencies. In such situations, developers introducing the deprecation are required to follow these guidelines.

In short, for a deprecated configuration option, you should expect to see the following message in the documentation or release notes:

(deprecated, will be removed after yyyy-mm-dd or in release vX.Y.Z, whichever is later)

A grace period of at least 3 months or two minor version bumps (whichever is later) from the first release containing the deprecation notice will be provided before the deprecated configuration option can be deleted.

For example, consider a scenario where v2.0.0 is released on 01-Sep-2024 containing a deprecation notice for a configuration option. This configuration option will remain in a deprecated state until the later of 01-Dec-2024 or v2.2.0 where it can be removed on or after either of those events. It may remain deprecated for longer than the aforementioned grace period.

Go Version Compatibility Guarantees

The Jaeger project attempts to track the currently supported versions of Go, as defined by the Go team. Removing support for an unsupported Go version is not considered a breaking change.

Starting with the release of Go 1.21, support for Go versions will be updated as follows:

  1. Soon after the release of a new Go minor version N, updates will be made to the build and tests steps to accommodate the latest Go minor version.
  2. Soon after the release of a new Go minor version N, support for Go version N-1 will be removed and version N will become the minimum required version.

Note: All importable code has been moved to internal packages, so there is no need to maintain backward compatibility with older compilers (previously version N-1 was used).

Storage Backend Version Support Policy

This policy covers storage backend versions only while they are reasonable for the project to test, maintain, and recommend for production use. Policy coverage is distinct from versions that may remain technically compatible with Jaeger.

For backends with a published upstream lifecycle, Jaeger bases its policy on the backend project's or vendor's supported-version or end-of-life policy, with the exact coverage defined below. Once upstream support ends, Jaeger may remove CI coverage, stop proactively fixing backend-specific issues for that version, and require users to upgrade before troubleshooting.

For backends without a clear upstream lifecycle, Jaeger supports the current stable major version and the immediately preceding major version. Older versions are best-effort only and may be removed when they block development, security fixes, dependency updates, or CI reliability.

Backend-specific policy:

  • Elasticsearch: follow Elastic's Product and Version End of Life Policy.
  • OpenSearch: follow the OpenSearch Release Schedule and Maintenance Policy. In practice, this means the current major version and the previous major version while they remain maintained.
  • Cassandra: follow Apache Cassandra's maintained release lines, as published on the Cassandra download page, with the Jaeger support target being the current major version and the previous major version.
  • ClickHouse: follow ClickHouse's release and backport policy and production guidance for stable and LTS releases. Jaeger treats LTS releases as its support lines and covers the current and previous LTS releases, which ClickHouse supports simultaneously for at least 12 months. Monthly stable releases may remain compatible or appear in CI but are not covered by this policy.

Support means backend versions are in scope for proactive compatibility fixes. CI coverage is not the definitive support matrix: it may test only a subset of supported versions and may retain older versions on a best-effort basis. CI coverage alone does not make a backend version supported. Jaeger does not provide support for the backend product itself, vendor-specific distributions, or versions outside the upstream maintenance window.

As of July 6, 2026, this policy means:

Backend Jaeger policy basis Versions covered by policy Versions not covered
Elasticsearch Elastic EOL policy 9.x; 8.19.x until Elastic's published 8.x maintenance window ends 8.18.x and earlier
OpenSearch OpenSearch maintenance policy 3.x; 2.x, with 2.19.x as the currently maintained 2.x line 1.x and earlier
Cassandra Current major plus previous major, using maintained Apache release lines 5.0.x; maintained 4.x lines, currently 4.1.x and 4.0.x 3.x and earlier
ClickHouse Current and previous ClickHouse LTS releases 26.3 LTS and 25.8 LTS Monthly stable releases and older LTS branches

This table is informational and should be refreshed when upstream policies or release lines change. Versions listed as not covered may still appear in CI on a best-effort basis; their presence in CI does not extend the support policy.

Related Repositories

Components

Documentation

Building From Source

See [CONTRIBUTING](./CONT

readme truncated — read the full docs on github

Frequently asked questions

Is jaeger free to use?

jaeger is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does jaeger do?

CNCF Jaeger, a Distributed Tracing Platform

What is jaeger written in?

jaeger is primarily written in Go. Its source is publicly available at https://github.com/jaegertracing/jaeger, and it has 23,217 GitHub stars.