Jump to section

What is Jaeger?

Copy URL

Jaeger is open source software for tracing transactions between distributed services. It’s used for monitoring and troubleshooting complex microservices environments.

Distributed tracing is a way to see and understand the whole chain of events in a complex interaction between microservices.

Modern, cloud-native software development relies on microservices: independent services that each provide a different core function. When a user makes a request in an app, many individual services respond to produce a result.

A single call in an app can invoke dozens of different services that interact with each other. How can developers and engineers isolate a problem when something goes wrong or a request is running slow? We need a way to keep track of all the connections.

That’s where distributed tracing comes in. It’s often run as part of a service mesh, which is a way to manage and observe microservices.

Jaeger uses distributed tracing to follow the path of a request through different microservices. Rather than guessing, we can see a visual representation of the call flows.

Organized information about transactions is useful for debugging and optimization. Jaeger includes tools to monitor distributed transactions, optimize performance and latency, and perform root cause analysis (RCA), a method of problem solving.

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 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 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.

Keep reading

Article

How microservices support IT integration in healthcare

Microservices enable developers in healthcare and other industries to create applications made from loosely coupled services, making them easier to develop, test, deploy, and upgrade.

Article

What are microservices?

Microservices are an architectural approach to building applications where pieces of an app work independently, but together.

Article

What's a service mesh?

A service mesh is an infrastructure layer built into an app which documents how services interact making it easier to optimize communication and avoid downtime.

More about microservices

Products

An enterprise application platform with a unified set of tested services for bringing apps to market on your choice of infrastructure.

Resources

Podcast

Command Line Heroes Season 1, Episode 3:

"The Agile revolution"

E-book

Enterprise Java microservices with Eclipse MicroProfile

Training

Free training course

Developing Cloud-Native Applications with Microservices Architectures