Grafana (LGTM)

Tempo — Distributed Tracing

Store huge volumes of traces cheaply and find them by ID or by trace query.

Tempo is Grafana's distributed tracing backend, built on the same cost philosophy as Loki: store everything in object storage with minimal indexing. Tempo accepts traces in all the common formats (OpenTelemetry/OTLP, Jaeger, Zipkin) and historically focused on retrieval by trace ID — you find the trace ID from a log or a metric exemplar, then Tempo fetches the full trace. TraceQL adds the ability to search for traces by attributes (duration, status, span tags) without a separate index store.

A vast warehouse that keeps every shipment record boxed and cheap. You usually arrive already knowing the tracking number (trace_id) from a receipt (a log or metric), and the warehouse pulls that exact box instantly.

Key Concepts

1
Tempo's value is the glue in the LGTM stack. Exemplars on Prometheus/Mimir histograms carry sample trace IDs, so a latency panel links straight to an example slow trace; logs in Loki carry trace_id for the same jump. Because it indexes little and leans on object storage, Tempo can retain large trace volumes affordably, with sampling applied upstream (in the app or the OpenTelemetry Collector) to control how much is sent.