Learn distributed tracing from first principles to production
Practical, code-first guides for instrumenting Go, Node.js, Python, Java, .NET, PHP, Ruby, and Laravel services with OpenTelemetry. Architecture patterns for microservices, async systems, and serverless. Deep dives into context propagation, sampling, and troubleshooting.
Language Guides
Go Distributed Tracing
Instrument Go services with OpenTelemetry. Trace goroutines, gRPC boundaries, and middleware chains in production.
Node.js Distributed Tracing
Add distributed tracing to Express, Fastify, and NestJS apps. Handle async/await context propagation and trace continuity.
Python Distributed Tracing
Trace Django, Flask, and FastAPI services end-to-end. Instrument Celery tasks and detect ORM N+1 queries with traces.
Java Distributed Tracing
Instrument Spring Boot microservices with the OpenTelemetry Java agent. Trace Kafka consumers, JPA queries, and reactive pipelines.
.NET Distributed Tracing
Add tracing to ASP.NET Core apps. Instrument Entity Framework, background services, and the middleware pipeline.
PHP Distributed Tracing
Trace PHP applications with OpenTelemetry. Instrument request lifecycles, database queries, and external HTTP calls.
Ruby Distributed Tracing
Add distributed tracing to Rails and Sinatra apps. Trace ActiveRecord queries, Sidekiq jobs, and view rendering.
Laravel Distributed Tracing
Instrument Laravel queue jobs, Eloquent queries, and event/listener chains with distributed tracing.
Architecture Patterns
Microservices Tracing Patterns
Design patterns for tracing across microservice architectures. Service mesh integration, header propagation, and dependency mapping.
Async and Event-Driven Tracing
Trace messages across Kafka, RabbitMQ, and SQS. Maintain context through async boundaries and event-driven flows.
Serverless Tracing Patterns
Instrument AWS Lambda, Azure Functions, and Google Cloud Functions. Handle cold starts and trace across function invocations.
Deep Dives
Context Propagation Deep Dive
How W3C Trace Context and B3 headers work under the hood. Cross-process propagation, baggage, and custom context fields.
Sampling Strategies Deep Dive
Head-based vs tail-based sampling, adaptive sampling, and rate limiting. Choose the right sampling strategy for your traffic.
Troubleshooting Distributed Traces
Diagnose broken traces, missing spans, and context loss. Practical troubleshooting workflows for production tracing issues.
See traces connected to live code
TraceKit links every trace span to your source code. Set live breakpoints on any function in your trace, capture variable state, and debug production issues without redeploying.