A collection of tutorials for the OpenTracing API (https://opentracing.io).
Update (Dec 8 2022): Since OpenTracing has been officially retired, I have archived this repository. The tutorials here are still useful when learning about distributed tracing, but using the OpenTelemetry API should be preferred over the OpenTracing API for new applications.
The blog post "Migrating from Jaeger client to OpenTelemetry SDK" can also be used as a reference on how to use the OpenTelemetry SDK as an OpenTracing tracer implementation.
Tutorials by Language
Also check out examples from the book Mastering Distributed Tracing:
- Chapter 4: Instrumentation Basics with OpenTracing
- Chapter 5: Instrumentation of Asynchronous Applications
- Chapter 7: Tracing with Service Mesh
- Chapter 11: Integration with Metrics and Logs
- Chapter 12: Gathering Insights Through Data Mining
The tutorials are using CNCF Jaeger (https://jaegertracing.io) as the tracing backend. For this tutorial, we'll start Jaeger via Docker with the default in-memory storage, exposing only the required ports. We'll also enable "debug" level logging:
docker run \ --rm \ -p 6831:6831/udp \ -p 6832:6832/udp \ -p 16686:16686 \ jaegertracing/all-in-one:1.7 \ --log-level=debug
Alternatively, Jaeger can be downloaded as a binary called
all-in-one for different platforms from https://jaegertracing.io/download/.
Once the backend starts, the Jaeger UI will be accessible at http://localhost:16686.