Overview
Jaeger is open source software for tracing transactions between distributed services. It’s used for monitoring and troubleshooting complex microservices environments.
Jaeger’s open source community
As an open source project, Jaeger benefits from a community of hundreds of contributors. Jaeger is based on the vendor-neutral OpenTracing APIs and instrumentation.
Ridesharing company Uber developed Jaeger as an open source project in 2015. It was accepted as a Cloud Native Computing Foundation (CNCF) Incubation project in 2017 and promoted to graduated status in 2019.
Jaeger terminology and components
Jaeger presents execution requests as traces. A trace shows the data/execution path through a system.
A trace is made up of one or more spans. A span is a logical unit of work in Jaeger. Each span includes the operation name, start time, and duration. Spans may be nested and ordered.
Jaeger includes several components that work together to collect, store and visualize spans and traces.
Jaeger Client includes language-specific implementations of the OpenTracing API for distributed tracing. These can be used manually or with a variety of open source frameworks.
Jaeger Agent is a network daemon that listens for spans sent over User Datagram Protocol. The agent is meant to be placed on the same host as the instrumented application. This is usually implemented through a sidecar in container environments like Kubernetes.
Jaeger Collector receives spans and places them in a queue for processing.
Collectors require a persistent storage backend, so Jaeger also has a pluggable mechanism for span storage.
Query is a service that retrieves traces from storage.
Jaeger Console is a user interface that lets you visualize your distributed tracing data.
Jaeger and Red Hat
Jaeger is installed by default as part of Red Hat® OpenShift® Service Mesh, which includes an implementation of Istio, an open source service mesh.
This distributed tracing implementation brings a series of benefits. Jaeger integrates with Kiali, an observability console for Istio. The Jaeger backend is designed for high scalability with no single points of failure. Jaeger can connect data from different components to create a complete end-to-end trace. Jaeger also offers backwards compatibility with Zipkin.