distributed tracing
**Distributed tracing** is an observability technique that **tracks a single request** as it flows through multiple services in a distributed system, recording timing, metadata, and relationships at each step. It is essential for debugging latency, identifying bottlenecks, and understanding complex AI system behavior.
**How Distributed Tracing Works**
- **Trace**: Represents the entire journey of a single request through the system. Each trace has a unique **trace ID**.
- **Span**: A single operation within a trace — one for the API gateway, one for preprocessing, one for model inference, one for RAG retrieval, etc. Each span records start time, duration, status, and metadata.
- **Context Propagation**: The trace ID and parent span ID are passed between services (via HTTP headers, message metadata) so each service can attach its spans to the correct trace.
- **Span Relationships**: Spans form a tree — a parent span (user request) spawns child spans (preprocessing, inference, postprocessing), which may spawn their own children.
**Distributed Tracing for AI Systems**
- **LLM Pipeline Tracing**: Track the full flow: input validation → prompt construction → context retrieval (RAG) → model inference → output validation → response formatting.
- **Latency Attribution**: Determine exactly where time is spent — is the bottleneck in retrieval, inference, or postprocessing?
- **Multi-Model Pipelines**: Trace agent workflows that call multiple models, tools, and external APIs.
- **Error Localization**: When a request fails, the trace shows exactly which service and operation caused the failure.
**Tracing Tools**
- **OpenTelemetry**: The industry standard open-source framework for traces (and metrics and logs). Provides SDKs for all major languages.
- **Jaeger**: Open-source distributed tracing backend, originally developed by Uber.
- **Zipkin**: Open-source tracing system, originally developed by Twitter.
- **Datadog APM**: Commercial distributed tracing with AI-specific features.
- **LangSmith**: Purpose-built tracing for LLM applications (LangChain ecosystem).
- **Helicone**: LLM-specific observability platform with request tracing.
**Best Practices**
- **Instrument Everything**: Add tracing to all service boundaries and significant internal operations.
- **Sampling**: At high traffic, trace a representative sample (e.g., 1%) rather than every request.
- **Include Model Metadata**: Attach model version, token counts, and generation parameters as span attributes.
Distributed tracing is **indispensable** for production AI systems — without it, debugging issues in multi-service LLM pipelines is nearly impossible.