Grafana Tempo — Massively Scalable Distributed Tracing Backend
Grafana Tempo is a high-volume, minimal-dependency distributed tracing backend that ingests OpenTelemetry, Jaeger, and Zipkin spans into cheap object storage and integrates natively with Grafana for trace exploration.
Instalación con revisión previa
Este activo requiere revisión. El prompt copiado pide dry-run, muestra escrituras y continúa solo tras confirmación.
npx -y tokrepo@latest install 839b7415-3929-11f1-9bc6-00163e2b0d79 --target codexPrimero dry-run, confirma las escrituras y luego ejecuta este comando.
What it is
Grafana Tempo is a high-volume, minimal-dependency distributed tracing backend. It ingests spans from OpenTelemetry, Jaeger, and Zipkin into object storage (S3, GCS, Azure Blob) and provides native integration with Grafana for trace visualization.
Tempo targets platform teams and SREs who need distributed tracing at scale without the operational overhead of running Elasticsearch or Cassandra clusters that traditional tracing backends require.
The project is actively maintained and suitable for both individual developers and teams looking to integrate it into their existing toolchain. Documentation and community support are available for onboarding.
How it saves time or tokens
Tempo uses object storage instead of databases, cutting storage costs by 10-100x compared to Elasticsearch-backed alternatives. There is no indexing step, so ingestion throughput scales linearly. The TraceQL query language lets you search traces by attributes directly from Grafana without maintaining a separate query infrastructure.
For teams evaluating multiple tools in the same category, the clear documentation and active community reduce the time spent on research and troubleshooting. Getting started takes minutes rather than hours of configuration.
How to use
- Deploy Tempo using the official Helm chart or Docker Compose setup.
- Configure your applications to send traces via OTLP (OpenTelemetry), Jaeger, or Zipkin protocols.
- Set up an object storage backend (S3, GCS, or local filesystem for testing).
- Add Tempo as a data source in Grafana and use the Explore view to query traces with TraceQL.
Example
# tempo.yaml - minimal configuration
server:
http_listen_port: 3200
distributor:
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
storage:
trace:
backend: s3
s3:
bucket: tempo-traces
endpoint: s3.amazonaws.com
region: us-east-1
Related on TokRepo
- AI Tools for Monitoring — Compare Tempo with other observability and monitoring tools.
- AI Tools for DevOps — Explore the broader DevOps toolchain that Tempo fits into.
Common pitfalls
- Expecting Tempo to index all span attributes by default. Tempo is a trace store, not a search engine. Use TraceQL for attribute-based queries but set up service graphs for discovery.
- Skipping the compactor component. Without compaction, object storage fills with small files that degrade query performance over time.
- Not setting trace retention policies. Object storage is cheap but not free. Configure max_block_duration and retention to control costs.
- Not reading the changelog before upgrading. Breaking changes between versions can cause unexpected failures in production. Pin your version and review release notes.
Preguntas frecuentes
Jaeger requires an indexed storage backend like Elasticsearch or Cassandra. Tempo stores traces in object storage without indexing, reducing operational complexity and cost. Both accept the same trace formats (OTLP, Jaeger, Zipkin).
No, but Tempo is designed to work with Grafana. Without Grafana, you can still query traces via the Tempo HTTP API. Grafana provides the visualization, TraceQL editor, and correlation with logs and metrics.
TraceQL is Tempo's query language for searching traces by span attributes, duration, status, and resource labels. It runs directly in Grafana's Explore view and supports complex filters like 'find traces where span duration > 500ms and service = payment'.
Yes. Tempo is designed for high ingestion rates. Its architecture separates distributors (ingestion) from queriers (search), allowing independent scaling. Object storage backends handle virtually unlimited data volume.
Tempo natively ingests OpenTelemetry (OTLP over gRPC and HTTP), Jaeger (Thrift and gRPC), and Zipkin (JSON and Thrift). No format conversion is needed for applications already instrumented with these protocols.
Referencias (3)
- Grafana Tempo GitHub— High-volume distributed tracing backend with object storage
- Grafana Tempo Documentation— Ingests OpenTelemetry, Jaeger, and Zipkin spans
- TraceQL Documentation— TraceQL query language for trace search
Relacionados en TokRepo
Discusión
Activos relacionados
Grafana Pyroscope — Continuous Profiling Backend
Open-source continuous profiling backend from Grafana Labs that ingests pprof and eBPF profiles, supports label-based queries, and links traces to flamegraphs.
Grafana Mimir — Horizontally Scalable Prometheus Storage
Long-term metrics store for Prometheus and OpenTelemetry: multi-tenant, highly available, and queryable at a billion active series.
Grafana Alloy — OpenTelemetry Collector Distribution by Grafana
Collect, transform, and ship telemetry data with Grafana Alloy. A vendor-neutral OpenTelemetry collector with a programmable pipeline, built-in Prometheus scraping, and native Loki and Tempo support.
Ceph — Unified Distributed Storage at Scale
Ceph is a massively scalable software-defined storage platform that presents a single cluster as block, object, and file storage, powering private clouds and petabyte-scale backups.