mrkeyoor.com_
Fri 25 Sept 21:48 UTC
Dataevaluationupdated 26 Aug 2026

tempo review

Grafana Tempo stores distributed traces, the records that show how one request moves through several services. It gives teams an OpenTelemetry-compatible backend built around object storage, while Grafana supplies the main interface for searching and reading those traces.

+10stars / 7d
Verdict

Our Tempo run built in 204 seconds, but 1 of 54 tested packages failed, so the measured commit needs a test investigation before an internal build is promoted. Tempo is a sensible choice for a platform team already committed to Grafana and OpenTelemetry, especially when object storage fits its retention economics. Skip it if you want one authenticated tracing appliance or if running Kafka for Tempo 3.0 high availability would create more work than tracing solves.

We ran it

Lab card: what happened when we ran tempoScreenshot of tempo (grafana.com/oss/tempo)
Install✓ · 120s0 packages
Build✓ · 204s
Tests✗ · 633s53 passed · 1 failed of 54 (go test)
Repo1934 files~323,104 lines of source · 25.7 MB · 16 CI workflows

Answers from our run

Does tempo build from source?

Dependencies installed in 120 seconds (0 packages), and the build succeeded in 204 seconds. We cloned commit ad33aa8 into a clean Debian container with 3 CPUs and no project-specific setup.

Do tempo's tests pass?

Not all of them: 53 of 54 passed and 1 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use tempo?

Teams seeking one install with collection, storage, authentication, and a full user interface: Tempo is the backend, and the official architecture puts collectors before it and Grafana after it.

What are the alternatives to tempo?

Jaeger, Zipkin, SigNoz. Our Tempo run built in 204 seconds, but 1 of 54 tested packages failed, so the measured commit needs a test investigation before an internal build is promoted.

Setup3/5204-second build passed; production adds storage, proxy, and Kafka
Docs5/5Clear architecture, deployment, security, and migration guides
Community5/55,455 stars and code pushed on August 26, 2026
Maturity4/5v3.0.3 is current, while the 3.0 migration changes the ingest path

Discussed on

  1. hnGrafana, Loki, and Tempo will be relicensed to AGPLv3710 points
  2. hnGrafana Tempo, a scalable distributed tracing system233 points
  3. hnGrafana Tempo: High volume, minimal dependency trace storage31 points
  4. hnGrafana Tempo is now GA with the release of v1.020 points
  5. hnGrafana Tempo 2.3 release3 points

Who it’s for

Platform teams already using Grafana and OpenTelemetry that need durable trace storage.
Operators whose trace volume makes object-storage costs attractive.
Organizations able to run Grafana, collectors, storage, and an authenticating proxy as one tracing service.
Teams prepared to add Kafka and separate Tempo components when high availability becomes necessary.

Who it’s NOT for

Teams seeking one install with collection, storage, authentication, and a full user interface: Tempo is the backend, and the official architecture puts collectors before it and Grafana after it.
Anyone planning to expose the API directly: the operations guide says Tempo has no included authentication layer and requires an authenticating reverse proxy.
Small teams that need high availability without Kafka: Tempo 3.0 requires a Kafka-compatible system in microservices mode.
Tempo 2.x operators who need a reversible in-place upgrade: the 3.0 migration guide says there is no in-place downgrade after the old deployment is removed.
Organizations that cannot accept AGPL-3.0-only for the server, subject to the project's documented Apache-2.0 exceptions.
Buyers who require a clean upstream test result on the measured commit: our 54-package test run ended with 1 failure, and the available log tail did not identify its cause.

Setup reality

Our sandbox at commit ad33aa8 used 3 CPUs, 8 GB of RAM, and golang:1.24-bookworm. Installation succeeded in 120 seconds with 0 packages installed, and the build succeeded in 204 seconds. Tests failed after 633 seconds: 53 packages passed and 1 failed out of 54.

A useful deployment still needs instrumented applications, an OpenTelemetry Collector or Grafana Alloy, Grafana, and object storage credentials. Tempo has no built-in authentication, so public or shared access needs an authenticating reverse proxy. Tempo 3.0 microservices mode also needs a Kafka-compatible service and its connection settings.

The 25.7 MB checkout contained 1,934 files and about 323,104 source lines. We found 16 CI workflow files, no Dockerfile, and no tests directory, although the README links to Docker Compose and Helm examples elsewhere in the tree. Monolithic mode avoids Kafka, while high availability moves the operator into the larger microservices topology.

Tempo 3.0 is a trace backend, while Grafana is the interface

Tempo 3.0 receives spans, arranges their resources and attributes in Apache Parquet, and writes blocks to object storage. It can ingest OpenTelemetry, Jaeger, and Zipkin formats. Engineers can retrieve a known trace by ID or search across traces with TraceQL. The division of labor matters: Tempo stores and queries the data, while an instrumented application and a collector must produce useful spans in the first place.

Grafana is where most people will inspect the result. Traces Drilldown gives them point-and-click views of rates, errors, duration, and attribute comparisons, while TraceQL handles precise structural searches. The README still describes TraceQL metrics as experimental. Teams buying Tempo for a polished all-in-one tracing product will therefore be assembling several parts: instrumentation, a collector, Tempo, Grafana, and often a metrics or logs backend for correlation.

One Tempo 3.0 binary becomes a Kafka system for high availability

All Tempo 3.0 components compile into the same binary, and the target flag decides which ones run in a process. Monolithic mode starts the required components together and sends spans directly from the distributor to the live store. It does not require Kafka. This is the sensible evaluation path, and the project also allows local filesystem storage for development, although its production guidance recommends object storage.

Microservices mode changes the job. Distributors write to a Kafka-compatible queue, live stores serve recent traces, block builders create long-term blocks, and query services read recent and stored data. Backend workers handle compaction and retention. The split gives operators separate scaling and failure boundaries, but it also gives them Kafka partitions, more processes, caches, local working space, and object-storage behavior to monitor. Tempo 3.0 high availability is a distributed platform, not an object-storage-only service.

What happened when we ran it

Our commit ad33aa8 checkout installed in 120 seconds with 0 packages added, then built successfully in 204 seconds. The test command ran for 633 seconds and failed: 53 packages passed and 1 failed out of 54. We used an unprivileged golang:1.24-bookworm container with 3 CPUs, 8 GB of RAM, and no secrets.

The final log lines show successful packages under tempodb, including vParquet3, vParquet4, vParquet5, the pool, and the write-ahead log, followed by a bare FAIL. That tail does not name the failing package or give an error message, so it supports one conclusion only: the suite was not clean. The 25.7 MB checkout had 1,934 files and about 323,104 source lines, which makes a targeted rerun preferable to guessing.

Repository signals were mixed but useful. We counted 16 CI workflow files, which shows that upstream automation is substantial. We found no top-level Dockerfile and no tests directory, even though tests are spread across Go packages and the README links to Docker Compose, Helm, and Jsonnet examples. A newcomer should follow those deployment examples rather than assume the repository root is a ready container build context.

Three storage APIs still leave authentication to the operator

Tempo supports Amazon S3 and compatible services, Google Cloud Storage, and Azure Blob Storage for long-term data. Local disk is documented for development. A real installation also needs retention choices, bucket permissions, and enough query capacity for the searches users will run. The optional metrics generator can derive rate, error, and duration metrics and service graphs, then send them to a metrics backend such as Prometheus or Grafana Mimir.

Tempo has no included authentication layer. The official operations guide tells operators to place an authenticating reverse proxy in front of its services. Multi-tenant setups rely on that trusted boundary to set X-Scope-OrgID; accepting the header from an untrusted client would undermine tenant separation. This omission is manageable for an established platform team, but it rules out treating port 3200 as a public endpoint after a quick Docker Compose trial.

Tempo 3.0 makes the 2.x migration a real operations project

Tempo 3.0 replaces the older ingester path with Kafka, block builders, live stores, and backend scheduling in microservices mode. A monolithic deployment can update its configuration and binary. A distributed 2.x deployment has to run 2.x and 3.0 in parallel, share object storage, move traffic, verify reads and writes, and then retire the old system. The migration guide also requires vParquet4 or newer blocks.

Once the 2.x deployment is decommissioned, the guide says there is no in-place downgrade. That makes staging and a preserved old deployment important until the new path has been checked. The project provides Tempo Vulture for end-to-end write and read validation, plus a configuration migration command, but those tools do not remove the infrastructure overlap or the need to inspect the generated configuration before cutover.

August 2026 activity supports adoption, with one failed package test to resolve

Grafana published v3.0.3 on August 13, 2026, and pushed repository code again on August 26. GitHub reported 5,455 stars and 166 open issues and pull requests when we checked. The latest release includes dependency security updates, refreshed MCP documentation, a version-reporting fix, and removal of guidance for multiple monolithic instances. Those are signs of active maintenance around the current architecture.

Tempo is easiest to justify when Grafana is already the front end and a platform team owns OpenTelemetry collection, storage, and access control. Jaeger is the closer comparison for teams that prefer its tracing workflow, Zipkin suits a narrower service, and SigNoz packages more of the observability experience together. Our 204-second build passed, but the 53-to-1 package test result blocks a clean bill of health for commit ad33aa8.

Alternatives

ProjectWhat it isPick it when
Jaeger gh↗A CNCF tracing platform with its own query interface and OpenTelemetry support.pick this instead when you prefer Jaeger's interface and deployment model to a Grafana-centered tracing stack.
ZipkinA focused tracing server with a simple built-in interface.pick this instead when a smaller tracing service and straightforward lookup workflow matter more than Tempo's object-storage design.
SigNoz gh↗An OpenTelemetry observability application covering traces, metrics, logs, dashboards, and alerts.pick this instead when you want a more integrated application instead of assembling Tempo with separate Grafana-stack services.

What people are saying

  1. [github-trending] grafana/tempo
  2. [theverge] Spotify Running Mode helps match tunes to tempo

Sources

  1. Grafana Tempo repository and README
  2. Tempo architecture
  3. Tempo deployment modes
  4. Tempo authentication guidance
  5. Tempo 3.0 migration guide
  6. Tempo v3.0.3 release
  7. Measured Tempo commit ad33aa8

More data reviews

go-stock · sqlitebrowser · hydradb · DouYin_Spider · helix-db · abu · the whole board →