π Proof of Concept: Converting Jaeger with Tempo for Tracing
π‘ What I Want to Achieve
In this post, Iβll walk you through how to set up a proof of concept (PoC) application for tracing, using Tempo as a back-end for Jaeger. Jaeger is a well-known tool for tracing microservices, while Tempo provides scalable, highly-efficient tracing data storage. Combining the two gives us the best of both worlds: an intuitive UI with Jaeger and the scalability of Tempo. π―
βοΈ Step-by-Step Guide
1. Setting Up Tempo
Tempo is a high-performance, cost-effective distributed tracing backend option. To integrate it with Jaeger:
-
Install Tempo: First, install Tempo by following these instructions.
-
Configure Jaeger: Modify your Jaeger configuration to send traces to Tempo as the back-end for storing the traces.
2. Configuring Jaeger for Tempo
In your Jaeger configuration, you'll want to specify Tempo as your data store. This can be done by editing your Jaeger collector.yaml or jaeger-agent.yaml file:
Jaeger collector config
collector:
# Use tempo as a back-end
otel-collector:
endpoint: tempo:4317
insecure: true
This allows Jaeger to ingest traces but offloads the storage to Tempo.
3. Deploying the PoC Application
Use Docker or Kubernetes to run both Jaeger and Tempo. Hereβs a quick example of running the stack using Docker Compose:
version: '3.7'
services:
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "16686:16686"
environment:
- COLLECTOR_ZIPKIN_HTTP_PORT=9411
tempo:
image: grafana/tempo:latest
ports:
- "3200:3200"
volumes:
- ./tempo.yaml:/etc/tempo.yaml
Once deployed, you'll be able to access Jaeger's UI at http://localhost:16686 to visualize the traces while Tempo stores the data. π
4. Validating Traces
To verify that your traces are successfully routed through Jaeger and stored in Tempo, use Jaeger's UI to query traces. Tempo's scalability means you can handle much larger trace volumes without slowing down your UI.

Example of tracing requests using Jaeger UI connected with Tempo
π€ The Future of Scalable Tracing
With this setup, you get the best of both worlds: Jaegerβs powerful tracing capabilities and Tempoβs efficient storage for large-scale systems. This setup provides a highly scalable way to manage microservices traces, making it easier to monitor performance bottlenecks or diagnose failures in distributed systems.
π Connect with me:
-
πΌ LinkedIn: https://www.linkedin.com/in/rifaterdemsahin/
-
π¦ Twitter: https://x.com/rifaterdemsahin
-
π₯ YouTube: https://www.youtube.com/@RifatErdemSahin
-
π» GitHub: https://github.com/rifaterdemsahin
π Let's explore the future of observability together!
Imported from rifaterdemsahin.com Β· 2025