Day 105: OTel Collector → Tempo/Jaeger
The Collector: a buffer and router for telemetry
Rather than every service sending telemetry directly to a backend, the OpenTelemetry Collector sits in between — receiving data from many services, optionally batching/filtering/enriching it, and exporting to one or more backends (Tempo, Jaeger, a vendor platform). This indirection means changing your backend is a Collector config change, not an application redeploy.
receivers:
otlp: { protocols: { grpc: {} } }
processors:
batch: {}
exporters:
otlp/tempo:
endpoint: tempo:4317
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlp/tempo]Tempo and Jaeger are both trace storage/query backends — Tempo is notably designed to be cheap at scale by not requiring its own separate indexing (it relies on trace IDs, often looked up via logs/metrics that reference them), while Jaeger has historically been the more established, full-featured tracing UI/backend.
Key terms
- OTel Collector
- A telemetry pipeline that receives, processes, and routes data to one or more backends.
Your company wants to switch tracing backends from Jaeger to Tempo. Why does having an OTel Collector in place make this easier?