DEV.co
Open-Source Observability · grafana

tempo

Grafana Tempo is an open-source distributed tracing backend designed to ingest, store, and query trace data from OpenTelemetry, Jaeger, Zipkin, and Kafka sources. It uses object storage (S3, GCS, Azure, or local disk) as its primary dependency, making it cost-efficient and operationally straightforward. Deep integration with Grafana provides UI-driven trace analysis via TraceQL and the Traces Drilldown interface.

Source: GitHub — github.com/grafana/tempo
5.4k
GitHub stars
723
Forks
Go
Primary language
AGPL-3.0
License (OSI-approved)

Key facts

Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.

FieldValue
Repositorygrafana/tempo
Ownergrafana
Primary languageGo
LicenseAGPL-3.0 — OSI-approved
Stars5.4k
Forks723
Open issues174
Latest releasev3.0.2 (2026-06-09)
Last updated2026-07-08
Sourcehttps://github.com/grafana/tempo

What tempo is

Tempo written in Go, implements OpenTelemetry standards natively, and stores traces in Apache Parquet format. It accepts trace data in multiple protocols (OTLP, Jaeger, Zipkin, Kafka), buffers ingestion, and writes to pluggable object storage backends. TraceQL enables trace-first queries; TraceQL metrics (experimental) allows ad-hoc metric aggregation from trace data.

Quickstart

Get the tempo source

Clone the repository and explore it locally.

terminalbash
git clone https://github.com/grafana/tempo.gitcd tempo# follow the project's README for install & configuration

Need it deployed, integrated, or customized instead? DEV.co ships production installs.

Best use cases

Large-scale distributed tracing with cost constraints

Tempo's reliance on object storage (S3, GCS, Azure) rather than specialized databases reduces operational and capital costs for high-volume trace ingestion and retention. Suitable for teams processing millions of traces daily across microservices.

Organizations already invested in Grafana ecosystem

Native Grafana integration, Traces Drilldown UI, and compatibility with Prometheus/Loki create a unified observability stack. Teams can correlate traces with metrics and logs without separate query languages or UI context-switching.

Multi-protocol trace ingestion with OpenTelemetry standardization

Tempo ingests Jaeger, Zipkin, OTLP, and Kafka formats, and stores in OpenTelemetry-compliant formats. Ideal for polyglot environments or migrations from legacy tracing backends wanting a standards-based path forward.

Implementation considerations

  • Object storage setup is non-negotiable: S3, GCS, Azure, or local disk must be provisioned and configured before Tempo ingestion begins. Plan for bucket policies, IAM, and retention policies upfront.
  • Trace sampling and ingestion throttling must be configured at the collector level (OpenTelemetry Collector or equivalent) to prevent unbounded storage costs and query performance degradation.
  • TraceQL metrics is experimental; validate feature stability and performance in non-production environments before relying on it for production alerting or SLO dashboards.
  • Grafana version compatibility: ensure Grafana deployment supports the TraceQL version bundled with Tempo; version mismatches can cause UI/query failures.
  • Data retention and archival: define trace TTL policies and plan for long-term archival (e.g., cold storage) to manage object storage costs at scale.

When to avoid it — and what to weigh

  • Real-time sub-millisecond trace querying — Tempo is optimized for cost and scale, not lowest-latency queries. Object storage backends introduce inherent read latency; not suitable for sub-millisecond SLA requirements or interactive debugging sessions demanding instant response.
  • Standalone deployment without Grafana — Tempo's trace querying strength depends heavily on Grafana UI and TraceQL. Using Tempo without Grafana integration significantly reduces usability; the backend alone provides limited ad-hoc query capabilities.
  • Proprietary, closed-source infrastructure requirements — Tempo is AGPL-3.0-licensed. Internal modifications or embedding in proprietary products require legal review and may trigger copyleft obligations. Organizations with strict closed-source policies should evaluate this carefully.
  • Simple, lightweight tracing with minimal operational overhead — Tempo requires object storage configuration, ingestion buffering, and Grafana deployment. Teams needing lightweight, all-in-one solutions may find simpler alternatives (e.g., Jaeger with local storage) more appropriate.

License & commercial use

Grafana Tempo is distributed under AGPL-3.0-only. The repo states: "For Apache-2.0 exceptions, see LICENSING.md." This means the primary license is copyleft (AGPL-3.0). Any exceptions must be explicitly listed in LICENSING.md.

AGPL-3.0 is a copyleft license. Use is restricted: internal deployment for observability is typically permitted, but embedding Tempo in a proprietary product, offering it as a service, or modifying and distributing it triggers AGPL-3.0 obligations (source code disclosure). The reference to Apache-2.0 exceptions in LICENSING.md suggests some components may be licensed more permissively, but this requires explicit review of that file. Recommend legal review before commercial or derivative use.

DEV.co evaluation signals

Editorial assessment — not user reviews. Directional, with an explicit confidence level.

SignalAssessment
MaintenanceActive
DocumentationStrong
License clarityNeeds review
Deployment complexityModerate
DEV.co fitGood
Assessment confidenceHigh
Security considerations

No explicit security audit details provided in README. Consider: object storage access control and encryption (S3 bucket policies, GCS IAM, Azure RBAC), TLS/mTLS for Tempo-to-Grafana communication, authentication on Tempo receivers (if exposed), and trace data sensitivity (PII in payloads). Trace data may contain sensitive business logic or user identifiers; plan for data masking, redaction, or differential privacy policies. AGPL-3.0 license: if deployed in cloud/SaaS, source code must remain accessible.

Alternatives to consider

Jaeger

Mature, CNCF-incubated distributed tracing backend. Supports Jaeger, Zipkin, OTLP. Uses Elasticsearch, Cassandra, or Badger for storage (not object-storage-first). Simpler operational model for small-to-medium scale; Apache-2.0 licensed (permissive).

Datadog APM

Fully managed SaaS distributed tracing with advanced analytics, anomaly detection, and service maps. No self-hosted operational overhead. Higher cost; vendor lock-in; proprietary. Suitable if cost and lock-in are acceptable trade-offs.

New Relic Distributed Tracing

Managed SaaS with integrated observability stack (metrics, logs, traces). No self-hosted complexity. Higher cost; vendor lock-in. Good fit for organizations already using New Relic.

Software development agency

Build on tempo with DEV.co software developers

Review the deployment examples, confirm object storage availability, and pilot Tempo with a small set of traces in your staging environment. Engage Grafana Labs support or community forums early if integrating with existing Prometheus/Loki infrastructure.

Talk to DEV.co

Related open-source tools

Surfaced by semantic similarity across the DEV.co open-source index.

tempo FAQ

Can I run Tempo without object storage?
No, not practically. Tempo is designed around object storage (S3, GCS, Azure, or local disk). Local disk can be used for development/testing, but production deployments require durable, scalable object storage.
Is Tempo compatible with Prometheus and Loki?
Yes. Tempo is deeply integrated with Grafana, Prometheus, and Loki. You can correlate traces with metrics (Prometheus) and logs (Loki) within Grafana UI. Requires Grafana datasource configuration for each.
What is TraceQL and is it production-ready?
TraceQL is Tempo's traces-first query language (inspired by LogQL/PromQL). It is production-ready. TraceQL metrics (creating metrics from traces) is marked as experimental and should be validated in non-production before production use.
Can I use Tempo behind a firewall or air-gapped network?
Yes. Tempo is self-hosted open source. It can run in private networks if object storage and Grafana connectivity are available. No internet access required after deployment, unless you require external integrations.

Custom software development services

From first prototype to production, DEV.co delivers software development services around tools like tempo. Our software development agency staffs experienced software developers and web developers for custom software development, web development, integrations, and ongoing support across open-source observability and beyond.

Ready to evaluate Tempo for your observability stack?

Review the deployment examples, confirm object storage availability, and pilot Tempo with a small set of traces in your staging environment. Engage Grafana Labs support or community forums early if integrating with existing Prometheus/Loki infrastructure.