# Distributed Tracing

Record: `arch:distributed-tracing`
Kind: mechanism
Layer: [Observability](https://banes-lab.com/records/layer/observability.md)
Severity: mandatory for distributed systems
Scope: distributed system, service mesh
Canonical: https://banes-lab.com/ontology#arch-distributed-tracing

## Repair

- Refactored by: Add Tracing Middleware, Propagate Context
- Detected by: broken traces, missing spans
- Violated by: service calls without trace propagation
- Measured by: trace completeness, span coverage
- Enforced by: observability policy

## requires

- [Trace Context Propagation](https://banes-lab.com/records/lex/trace-context-propagation.md)

## reinforces

- [Observability](https://banes-lab.com/records/arch/observability.md)
- [Causality](https://banes-lab.com/records/arch/causality.md)

## enables

- [Latency/Failure Root Cause Analysis](https://banes-lab.com/records/lex/latency-failure-root-cause-analysis.md)

## conflicts-with

- [Opaque Distributed Calls](https://banes-lab.com/records/lex/opaque-distributed-calls.md)

## tensions-with

- [Overhead/Sampling](https://banes-lab.com/records/lex/overhead-sampling.md)

## tensions

- [Distributed Tracing Overhead/Sampling](https://banes-lab.com/records/tension/distributed-tracing-overhead-sampling.md)

## referenced-by

- [Correlation ID](https://banes-lab.com/records/arch/correlation-id.md)
