August 3rd, 2015 was the date of the first commit in the internal Jaeger repository at Uber. Technically, the true birthday of the project was probably a week or so earlier, because while I was prototyping the collector service we went through a number of project names, some of them rather embarrassing to name here, and the real first commits happened in a differently named repository. Once we settled on the name Jaeger, we did not preserve the commit history and the first commit was a full snapshot (lesson: don’t do that!) …

In this article we explain the concept of observability in microservices, and its challenges for traditional monitoring tools.


In the last decade, we saw a significant shift in how modern, internet-scale applications are being built. Cloud computing (infrastructure as a service) and containerization technologies (popularized by Docker) enabled a new breed of distributed system designs commonly referred to as microservices (and their next incarnation, FaaS). Successful companies like Twitter and Netflix have been able to leverage them to build highly scalable, efficient, and reliable systems, and to deliver more features faster to their customers.

This article is an extract taken…

Recently, OpenTelemetry has been announced as a new CNCF sandbox project resulting from a merger of OpenTracing and OpenCensus [1], [2], [3], [4]. Several people have already asked me what OpenTelemetry means for the Jaeger project (incubating at CNCF), and whether it is going to replace Jaeger. I will attempt to answer these questions in this post.

TLDR; OpenTelemetry is great news for the Jaeger project!

Why OpenTelemetry

I’ve been working on OpenTracing from its inception at a Zipkin workshop back in the Fall of 2015. We had just begun deploying distributed tracing at Uber, and I knew that we needed an…

This post illustrates some practical examples of distributed context propagation. More detailed examples are presented in Chapter 10 of my book, Mastering Distributed Tracing.


One of the first thing to go as we make the software systems distributed is our ability to observe and understand what the application as a whole is doing. We are usually well-set with tools telling us what each individual component is doing, while leaving us in the dark about the big picture. …

Photo by Trekphiler

Update (21 March 2019): my book Mastering Distributed Tracing has a newer version of this tutorial.

TL;DR; main tutorial in Take OpenTracing for a HotROD ride.

Jaeger comes with a microservices-based demo application called HotROD. I have previously published an article, Take OpenTracing for a HotROD ride, that uses HotROD and Jaeger to demonstrate capabilities of distributed tracing, Jaeger, and OpenTracing. There is also a video recording of this demo live at OpenShift Commons Briefing.

NB: this is simply a re-post of the previous article since Medium does not allow sharing articles across more than one publication.

In February we introduced Jaeger in a blog post Evolving Distributed Tracing at Uber Engineering. Two months later Jaeger backend has been released as an open source project. So many things have happened since then. We built a great community of users who deploy Jaeger in their organizations and contribute to the project (special kudos to Red Hat’s Hawkular team). We added many new features. We joined the Cloud Native Computing Foundation as its 12th project. And now we are proud to announce the official 1.0 release of Jaeger backend.

Even though Jaeger has been integrated with thousands of applications…

Photo by Trekphiler

Update (21 March 2019): my book Mastering Distributed Tracing has a newer version of this tutorial.

Update (July 2017): watch this demo live at OpenShift Commons Briefing.

OpenTracing is a new, open standard for instrumenting applications and OSS packages for distributed tracing and monitoring. In this post we explore the features and capabilities of OpenTracing using a demo application HotROD from Jaeger, a distributed tracing system recently donated by Uber Technologies to Cloud Native Computing Foundation. The presentation is structured as a walkthrough / tutorial showcasing how OpenTracing concepts can be applied in practice to monitor a microservices-based architecture and…

Update (21 March 2019): my book Mastering Distributed Tracing is out!

In Go 1.7 we have a new package net/http/httptrace that provides a convenient mechanism for observing what happens during an HTTP request. In this article I will show how it can be used in the context of distributed tracing, by using OpenTracing API to instrument a client and a server and visualize the results in Zipkin UI.

First, a bit of an introduction.

What is Distributed Tracing and OpenTracing?

Distributed tracing is a technique for monitoring and profiling systems built on microservices architecture, popularized by such systems as X-Trace, Google’s Dapper and Twitter’s Zipkin. At…

Yuri Shkuro

Software engineer. Creator of tracing platform Jaeger. Author of “Mastering Distributed Tracing”.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store