8 Distributed tracing

 

This chapter covers

  • What distributed tracing is and why it’s important
  • Seeing distributed tracing in action for troubleshooting
  • Considerations on how and where to use distributed tracing
  • How to go about selecting a distributed tracing solution

In the “good old days,” when running a monolithic application, things were sort of convenient, from an observability perspective; you had a web server as the frontend tier, your application server (like a Java-based app), and a database such as MySQL. In this setup, it was not too hard to figure out which of the components caused an issue. The logs from these components would cover both the where and what. In addition, you may capture some metrics, indicating overall health and performance.

8.1 Intro and terminology

8.1.1 Motivational example

8.1.2 Terminology

8.1.3 Use cases

8.2 Using distributed tracing in a microservices app

8.2.1 Example app overview

8.2.2 Implementing the example app

8.2.3 The “happy path”

8.2.4 Exploring a failure in the example app

8.3 Practical considerations

8.3.1 Sampling

8.3.2 Observability tax

8.3.3 Traces vs. metrics vs. logs

Summary