
Tempo is an open-source distributed tracing backend that stores and queries traces from your applications. It integrates seamlessly with distributed systems to help you understand request flows, identify performance bottlenecks, and troubleshoot issues across microservices architectures. Tempo requires only object storage and is designed for cost-efficient, high-volume trace data.
In this article, you will deploy Tempo using Docker Compose, configure persistent storage for trace data, and set up Traefik as a reverse proxy to securely access your Tempo instance.
Before you begin, you need to:
sudo privileges.tempo.example.com).In this section, you prepare the required directory structure for Tempo and define environment variables in a .env file.
Create the directory structure for Tempo.
These directories store Tempo's trace blocks and configuration files.
Navigate into the tempo-tracing directory.
Set proper ownership for the Tempo data directory. Tempo runs as the tempo user (UID 10001) inside the container.
Create a .env file.
Add the following variables:
Replace:
tempo.example.com with your domain.admin@example.com with your email.Save and close the file.
Create a Tempo configuration file.
Add the following content.
Save and close the file.
This configuration enables trace ingestion via Jaeger and OpenTelemetry protocols, configures local filesystem storage for trace data, and sets a 7-day retention period. The distributor accepts traces in multiple formats while the storage backend persists them to the mounted data directory.
In this section, you create and deploy the Docker Compose stack that runs Tempo behind Traefik. Docker Compose manages both containers, applies the environment variables from your .env file, and automatically configures HTTPS routing through Traefik.
Create a new Docker Compose manifest.
Add the following content.
Save and close the file.
Key components in this configuration:
letsencrypt named volume.Create and start the services.
Verify that the services are running.
Output:
Both containers are running successfully. Tempo is ready to accept trace data while Traefik accepts connections on ports 80 and 443.
View the logs of the services.
For more information on managing a Docker Compose stack, see the How To Use Docker Compose article.
In this section, you access the Tempo API to verify your installation by checking service readiness and querying available trace endpoints.
Check the service readiness endpoint.
Output:
This confirms Tempo is operational and accepting requests.
Query the service status to view configuration details.
Output displays Tempo's current configuration, including enabled modules, storage backend, and ingestion settings. This endpoint is useful for verifying your deployment configuration.
Check the build information to verify the Tempo version.
Output:
This confirms Tempo is responding correctly to API requests and displays version information for troubleshooting purposes.
You have successfully deployed Tempo for distributed tracing with HTTPS encryption. The Docker Compose architecture delivers both the tracing backend and reverse proxy with filesystem persistence ensuring trace data durability. Let's Encrypt automation maintains valid certificates while Traefik performs intelligent traffic management. Tempo now stands ready to accept distributed trace spans from microservices using Jaeger, OpenTelemetry, or alternative instrumentation frameworks through its protocol-agnostic ingestion APIs.
0 Comments
Be the first to comment and share your perspective with the community.