This document provides a practical guide to distributed tracing. It discusses the limitations of traditional metrics and logging and introduces use cases for distributed tracing such as optimizing slow segments, tests, and network latency. It then covers standard instrumentation techniques for HTTP calls and clients. Additional techniques discussed include method tracing, database tracing, and including stack traces. The document concludes with tips for setting up a distributed tracing system, including using Zipkin and Jaeger, and best practices around planning, resilience, and downsampling.