{"id":130805,"date":"2025-07-04T12:25:22","date_gmt":"2025-07-04T12:25:22","guid":{"rendered":"\/tutorials\/?p=130805"},"modified":"2026-03-09T19:16:21","modified_gmt":"2026-03-09T19:16:21","slug":"how-to-install-grafana-tempo","status":"publish","type":"post","link":"\/ng\/tutorials\/how-to-install-grafana-tempo","title":{"rendered":"How to install Grafana Tempo for distributed tracing"},"content":{"rendered":"<?xml encoding=\"utf-8\" ?><p>Grafana Tempo is an open-source distributed tracing back end from Grafana Labs. In other words, it tracks &ndash; or &ldquo;traces&rdquo; &ndash; requests through every stage in an application. It collects, stores, and analyzes this trace data instrumented with tools like <strong>OpenTelemetry<\/strong> or <strong>Jaeger<\/strong>. Unlike other back ends, Tempo avoids external databases by writing directly to object storage, making it simpler to operate at scale.<\/p><p>This guide will walk you through installing Tempo on a Linux server, configuring it in single binary mode, integrating it with Grafana, sending test traces, and viewing them through Grafana&rsquo;s User Interface (UI). By the end, you&rsquo;ll have a basic <strong>Tempo tracing setup<\/strong> ready for debugging and performance monitoring.<\/p><p>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-prerequisites\"><strong>Prerequisites<\/strong><\/h2><p>Before you begin the <strong>Grafana Tempo<\/strong> installation, make sure your environment meets the following requirements:<\/p><ul class=\"wp-block-list\">\n<li><strong>Ubuntu 20.04 <\/strong>or<strong> later<\/strong> as your VPS operating system. Hostinger offers a single-click Ubuntu template with its <a href=\"\/ng\/vps-hosting\">VPS hosting plans<\/a>.<\/li>\n\n\n\n<li><strong>Sudo <\/strong>or<strong> root <\/strong>access to perform system-level changes.<\/li>\n\n\n\n<li><a href=\"\/ng\/tutorials\/how-to-install-grafana\">Grafana installed<\/a> on your VPS.<\/li>\n\n\n\n<li>Terminal access via <a href=\"\/ng\/tutorials\/how-to-use-putty-ssh\">SSH<\/a> or local shell.<\/li>\n\n\n\n<li>Basic familiarity with <a href=\"\/ng\/tutorials\/linux-commands\">Linux commands<\/a><strong>.<\/strong><\/li>\n\n\n\n<li>Ensure these basic tools are installed:\n<ul class=\"wp-block-list\">\n<li><strong>wget<\/strong> to download files.<\/li>\n\n\n\n<li><strong>tar<\/strong> or <strong>unzip<\/strong> to extract Tempo binaries.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Tracing clients like <strong>OpenTelemetry Collector<\/strong> or <strong>Jaeger<\/strong> to send traces to Tempo (this is optional).<\/li>\n<\/ul><p>With the above in place, you&rsquo;re ready to start installing <strong>Tempo<\/strong>.<\/p><?xml encoding=\"utf-8\" ?><figure class=\"wp-block-image size-large\"><a class=\"hgr-tutorials-cta hgr-tutorials-cta-vps-hosting\" href=\"\/ng\/vps-hosting\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2023\/02\/VPS-hosting-banner.png\/public\" alt=\"\" class=\"wp-image-77934\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2023\/02\/VPS-hosting-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2023\/02\/VPS-hosting-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2023\/02\/VPS-hosting-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2023\/02\/VPS-hosting-banner.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-1-download-and-install-tempo\"><strong>1. Download and install Tempo<\/strong><\/h2><p>Grafana Tempo supports two common installation methods: running as a <strong>single binary<\/strong> or using a <strong>Docker container<\/strong>. The binary method is best for local testing, while Docker is often used in production environments.<\/p><p>To install Tempo using the binary:<\/p><ol class=\"wp-block-list\">\n<li>Download the<strong> Tempo 2.8.1 <\/strong>binary for Linux:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">wget https:\/\/github.com\/grafana\/tempo\/releases\/download\/v2.8.1\/tempo_2.8.1_linux_amd64.tar.gz<\/pre><ol start=\"2\" class=\"wp-block-list\">\n<li>Extract the archive:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">tar -xvf tempo_2.8.1_linux_amd64.tar.gz<\/pre><p>This will extract the following files:<\/p><ul class=\"wp-block-list\">\n<li><strong>tempo<\/strong> &ndash; the main Tempo server binary<\/li>\n\n\n\n<li><strong>tempo-cli<\/strong> &ndash; a command-line tool for interacting with Tempo<\/li>\n\n\n\n<li><strong>tempo-query<\/strong> &ndash; a lightweight UI for querying traces directly<br><\/li>\n<\/ul><ol start=\"3\" class=\"wp-block-list\">\n<li>Make binaries executable and move them to your system path:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">chmod +x tempo tempo-cli tempo-query\nsudo mv tempo tempo-cli tempo-query \/usr\/local\/bin\/<\/pre><p>The <strong>\/usr\/local\/bin directory<\/strong> is commonly used for user-installed programs, and makes the <strong>tempo<\/strong> commands accessible from anywhere in the terminal without specifying the full path.<\/p><ol start=\"4\" class=\"wp-block-list\">\n<li>Verify the checksum for integrity (optional):<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">echo \"3ae537720814c7c5bea9e7ff82c373b62c44eea1271e1d0ac34d92922f53b223&nbsp; tempo_2.8.1_linux_amd64.tar.gz\" | sha256sum --check<\/pre><p>Alternatively, you can install Tempo using Docker:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run --rm -p 3200:3200 grafana\/tempo:2.8.1<\/pre><p>This command runs the Tempo server with default settings and exposes port 3200 for trace ingestion and querying. For production use, mount a custom configuration file and connect external storage.<\/p><p>Tempo is now installed and ready to be configured.<\/p><h2 class=\"wp-block-heading\" id=\"h-2-configure-tempo\"><strong>2. Configure Tempo<\/strong><\/h2><p>Tempo relies on a configuration file to define how it runs. This includes trace receivers, local storage paths, and server settings. Before running the service, you must create and customize this file.<\/p><p>Create a directory for the Tempo configuration:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo mkdir -p \/etc\/tempo\ncd \/etc\/tempo<\/pre><p>Now, create a new configuration file:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo nano tempo.yaml<\/pre><p>Paste in the following minimal configuration:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">server:\n  http_listen_port: 3200\n\ndistributor:\n  receivers:\n    otlp:\n      protocols:\n        grpc:\n        http:\n    jaeger:\n      protocols:\n        thrift_http:\n        grpc:\n\ningester:\n  trace_idle_period: 10s\n  max_block_duration: 5m\n\ncompactor:\n  compaction:\n    block_retention: 1h\n\nstorage:\n  trace:\n    backend: local\n    local:\n      path: \/tmp\/tempo\/traces\n    wal:\n      path: \/tmp\/tempo\/wal<\/pre><p>Here&rsquo;s what each key section of the config means:<\/p><ul class=\"wp-block-list\">\n<li><strong>server<\/strong> &ndash; sets the HTTP listening port for Tempo&rsquo;s main interface<\/li>\n\n\n\n<li><strong>distributor.receivers<\/strong> &ndash; defines supported tracing protocols, like <strong>OpenTelemetry (OTLP)<\/strong> and <strong>Jaeger<\/strong>.<\/li>\n\n\n\n<li><strong>ingester<\/strong> &ndash; handles trace batching and flushing behavior<\/li>\n\n\n\n<li><strong>compactor<\/strong> &ndash; controls how long trace blocks are retained before cleanup<\/li>\n\n\n\n<li><strong>storage.trace<\/strong> &ndash; stores trace data locally for testing, with a local WAL path required<\/li>\n<\/ul><p>This configuration is designed for quick testing in <strong>single binary mode<\/strong>. For production deployments, you&rsquo;ll need to configure external object storage and fine-tune each service component.<\/p><p>Next, you&rsquo;ll start the Tempo service and verify that it works.<\/p><h2 class=\"wp-block-heading\" id=\"h-3-run-tempo-as-a-systemd-service\"><strong>3. Run Tempo as a systemd service<\/strong><\/h2><p>To keep Tempo running in the background and automatically restart it on boot or failure, you can set it up as a <strong>systemd<\/strong> service.<\/p><ol class=\"wp-block-list\">\n<li>Create a new service unit file at <strong>\/etc\/systemd\/system\/tempo.service<\/strong>:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo nano \/etc\/systemd\/system\/tempo.service<\/pre><ol start=\"2\" class=\"wp-block-list\">\n<li>Paste the following configuration:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[Unit]\nDescription=Grafana Tempo\nAfter=network.target\n\n[Service]\nUser=root\nExecStart=\/usr\/local\/bin\/tempo -config.file=\/etc\/tempo\/tempo.yaml\nRestart=on-failure\n\n[Install]\nWantedBy=multi-user.target<\/pre><ol start=\"3\" class=\"wp-block-list\">\n<li>Reload <strong>systemd<\/strong> to recognize the new service:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo systemctl daemon-reexec\nsudo systemctl daemon-reload<\/pre><ul class=\"wp-block-list\">\n<li><strong>daemon-reexec<\/strong> &ndash; ensures changes take immediate effect on some systems.<\/li>\n\n\n\n<li><strong>daemon-reload<\/strong> &ndash; reloads unit files.<br><\/li>\n<\/ul><ol start=\"4\" class=\"wp-block-list\">\n<li>Enable and start Tempo:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo systemctl enable tempo\nsudo systemctl start tempo<\/pre><ul class=\"wp-block-list\">\n<li><strong>enable<\/strong> &ndash; makes sure Tempo starts on boot.<\/li>\n\n\n\n<li><strong>start<\/strong> &ndash; immediately starts Tempo.<br><\/li>\n<\/ul><ol start=\"5\" class=\"wp-block-list\">\n<li>Check if Tempo is running and view logs:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo systemctl status tempo\njournalctl -u tempo -f<\/pre><p>Tempo now runs as a background service and will start automatically after reboots or failures.<\/p><h2 class=\"wp-block-heading\" id=\"h-4-integrate-tempo-with-grafana\"><strong>4. Integrate Tempo with Grafana<\/strong><\/h2><p>Once Tempo is running, you can connect it to Grafana to enable trace visualization.<\/p><ol class=\"wp-block-list\">\n<li>Access Grafana in your browser by navigating to:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">http:\/\/&lt;your-server-ip&gt;:3000<\/pre><p>Replace<strong> &lt;your-server-ip&gt; <\/strong>with your actual VPS IP address or domain name.<\/p><ol start=\"2\" class=\"wp-block-list\">\n<li>Log in to Grafana. The default credentials are:\n<ul class=\"wp-block-list\">\n<li>Username: admin<\/li>\n\n\n\n<li>Password: admin<\/li>\n<\/ul>\n<\/li>\n<\/ol><p>Grafana will prompt you to change the password after the first login, so ensure you choose secure credentials.<\/p><ol start=\"2\" class=\"wp-block-list\">\n<li>In the left-hand menu, go to <strong>Connections &gt; Data sources.<\/strong><\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e19bc13b878\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1460\" height=\"794\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources.png\/public\" alt='Grafana menu showing \"Data Sources\" option under \"Connections\"' class=\"wp-image-130941\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1460px) 100vw, 1460px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"3\" class=\"wp-block-list\">\n<li>Click<strong> Add data source<\/strong>.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e19bc13cd0c\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1460\" height=\"804\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source.png\/public\" alt='Grafana data sources page with \"Add data sources\" button highlighted' class=\"wp-image-130940\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1460px) 100vw, 1460px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"4\" class=\"wp-block-list\">\n<li>Search for <strong>Tempo<\/strong> and choose it from the list of available options.<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e19bc13e379\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1460\" height=\"480\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-tempo.png\/public\" alt='Grafana data source addition page with \"Tempo\" highlighted' class=\"wp-image-130942\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-tempo.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-tempo.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-tempo.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-tempo.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-tempo.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1460px) 100vw, 1460px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"5\" class=\"wp-block-list\">\n<li>Set the <strong>URL<\/strong> to your Tempo server, for example:<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">http:\/\/localhost:3200<\/pre><p>If <strong>Tempo<\/strong> is running on a different server, use its IP address instead of <strong>localhost<\/strong><\/p><ol start=\"6\" class=\"wp-block-list\">\n<li>Click <strong>Save &amp; Test<\/strong> to verify the connection<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e19bc13f93d\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1460\" height=\"274\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-save-and-test.png\/public\" alt='Grafana Tempo data source configuration page with \"Save &amp; test\" button highlighted' class=\"wp-image-130944\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-save-and-test.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-save-and-test.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-save-and-test.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-save-and-test.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-save-and-test.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1460px) 100vw, 1460px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Grafana will connect to Tempo to confirm whether it&rsquo;s working. If successful, you will see a banner similar to this:<\/p><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e19bc1412d8\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1460\" height=\"191\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-success.png\/public\" alt='Grafana showing \"Successfully connected to Tempo data source\" message' class=\"wp-image-130945\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-success.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-success.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-success.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-success.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-connections-data-sources-add-data-source-success.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1460px) 100vw, 1460px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>Once the connection is established, you can start exploring trace data. Tempo integrates with <strong>Explore<\/strong> in Grafana, especially when paired with logs from <a href=\"\/ng\/tutorials\/how-to-install-loki\">Loki<\/a> or metrics from Prometheus. This allows you to correlate traces with log lines and performance data in one interface.<\/p><h2 class=\"wp-block-heading\" id=\"h-5-send-test-traces-to-tempo\"><strong>5. Send test traces to Tempo<\/strong><\/h2><p>To make sure <strong>Tempo<\/strong> is receiving data correctly, it&rsquo;s highly recommended to send some test traces. You can use tools like the <strong>OpenTelemetry Collector<\/strong> or the <strong>Jaeger client CLI<\/strong>.<\/p><p>You can quickly generate test traffic using Docker and the Jaeger HotROD demo app:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run --rm \n  --network=host \n  -e OTEL_EXPORTER_OTLP_ENDPOINT=http:\/\/localhost:4318 \n  jaegertracing\/example-hotrod:latest \n  all<\/pre><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e19bc142dad\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1460\" height=\"423\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/jaegertracing-hotrod-example-container.png\/public\" alt=\"Terminal showing user running Jaeger Tracing Example HotROD application container\" class=\"wp-image-130946\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/jaegertracing-hotrod-example-container.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/jaegertracing-hotrod-example-container.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/jaegertracing-hotrod-example-container.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/jaegertracing-hotrod-example-container.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/jaegertracing-hotrod-example-container.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1460px) 100vw, 1460px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>This container starts multiple services such as frontend, driver, route, and customer. However, it won&rsquo;t emit traces until a request is made.<\/p><p>To trigger trace generation, run:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">curl http:\/\/localhost:8080<\/pre><p>This request simulates a user interaction with the HotROD front end and generates distributed traces that are sent to Tempo.<\/p><p>To send OTLP traces without setting up a full collector, you can use the <strong>otel-cli<\/strong> tool:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">docker run --rm \n  --network=host ghcr.io\/equinix-labs\/otel-cli \n  --endpoint http:\/\/localhost:4318 \n  span  \n  --name \"otel-span\" \n  --service \"otel-service\"<\/pre><p>This sends a single span to Tempo using the OTLP HTTP protocol, which matches the default configuration in most local setups.<\/p><h2 class=\"wp-block-heading\" id=\"h-6-verify-the-installation\"><strong>6. Verify the installation<\/strong><\/h2><p>To confirm that everything is working, open Grafana and go to <strong>Explore<\/strong> on the left-hand menu.<\/p><p>In the <strong>Explore<\/strong> panel:<\/p><ol class=\"wp-block-list\">\n<li>Select <strong>Tempo<\/strong> as the data source from the dropdown<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e19bc1447f1\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1460\" height=\"451\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-source.png\/public\" alt='Grafana \"Explore\" page with \"Tempo\" data source selected' class=\"wp-image-130947\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-source.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-source.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-source.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-source.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-source.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1460px) 100vw, 1460px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><ol start=\"2\" class=\"wp-block-list\">\n<li>If traces have been sent successfully, you&rsquo;ll see recent trace data appear. You can search by trace ID, view a list of traces, or click into one to see detailed information.\n<ul class=\"wp-block-list\">\n<li><strong>Trace ID<\/strong> &ndash; a unique identifier for the request<\/li>\n\n\n\n<li><strong>Spans<\/strong> &ndash; operations or components involved in the trace<\/li>\n\n\n\n<li><strong>Timeline<\/strong> &ndash; visualizes the duration and order of spans<\/li>\n<\/ul>\n<\/li>\n<\/ol><div class=\"wp-block-image\"><figure data-wp-context='{\"imageId\":\"69e19bc145f76\"}' data-wp-interactive=\"core\/image\" class=\"aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1460\" height=\"849\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-traces.png\/public\" alt=\"Grafana Explore page showing testing traces produced by OpenTelemetry and Jaeger HotROD\" class=\"wp-image-130948\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-traces.png\/w=1460,fit=scale-down 1460w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-traces.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-traces.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-traces.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/2\/2025\/07\/grafana-explore-tempo-traces.png\/w=768,fit=scale-down 768w\" sizes=\"auto, (max-width: 1460px) 100vw, 1460px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" aria-label=\"Enlarge\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-style--right=\"state.imageButtonRight\" data-wp-style--top=\"state.imageButtonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure><\/div><p>If no data appears:<\/p><ul class=\"wp-block-list\">\n<li>Make sure your trace sender (<strong>Jaeger<\/strong>, <strong>otel-cli<\/strong>, etc.) has successfully pushed data<\/li>\n\n\n\n<li>Verify that the correct receiver (e.g., OTLP or Jaeger) is enabled in <strong>tempo.yaml<\/strong><\/li>\n\n\n\n<li>Ensure ports like <strong>4318<\/strong>, <strong>4317<\/strong>, or <strong>14268<\/strong> are open and not blocked by a firewall\n<ul class=\"wp-block-list\">\n<li><strong>4317<\/strong>: Default port for <strong>OTLP over gRPC<\/strong>. Used by OpenTelemetry SDKs and collectors.<\/li>\n\n\n\n<li><strong>4318<\/strong>: Default port for <strong>OTLP over HTTP<\/strong>. Used by tools like <strong>otel-cli<\/strong>.<\/li>\n\n\n\n<li><strong>14268<\/strong>: Default port for <strong>Jaeger collector&rsquo;s HTTP endpoint<\/strong>. Used by clients like Jaeger HotROD.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Check Tempo logs for errors using:<\/li>\n<\/ul><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">journalctl -u tempo -f<\/pre><p>Once you see trace data in Grafana, your Tempo installation and integration are confirmed.<\/p><h2 class=\"wp-block-heading\" id=\"h-conclusion\"><strong>Conclusion<\/strong><\/h2><p>Grafana Tempo makes distributed tracing more accessible by removing the complexity of external databases and integrating smoothly with Grafana. Whether you&rsquo;re troubleshooting latency issues or tracking down errors across microservices, Tempo helps you get the visibility you need.<\/p><p>This tutorial demonstrated how to install Tempo on an Ubuntu VPS using either the official binary or Docker, configure it to receive traces using OTLP and Jaeger protocols, and set it up as a systemd service for persistent background operation. Tempo was integrated with Grafana for trace visualization and setup was verified by sending test traces using real-world tools like <strong>otel-cli<\/strong> and the <strong>Jaeger HotROD<\/strong> demo.<\/p><p>With your Tempo tracing setup complete, you&rsquo;re ready to build a stronger observability stack. For even deeper insights, consider pairing Tempo with <a href=\"\/ng\/tutorials\/how-to-install-loki\">Loki<\/a> for logs and <a href=\"\/ng\/tutorials\/how-to-install-grafana-mimir\">Mimir<\/a> for metrics.<\/p><h2 class=\"wp-block-heading\" id=\"h-how-to-install-grafana-tempo-faq\"><strong>How to install Grafana Tempo FAQ<\/strong><\/h2><div class=\"wp-block-rank-math-faq-block\"><div class=\"rank-math-faq-item\"><h3 class=\"rank-math-question\"><strong>What is Tempo?<\/strong><\/h3><div class=\"rank-math-answer\">Grafana Tempo is an open-source tool that collects and stores trace data from applications to help developers monitor and debug system performance. Tempo is designed to be highly scalable and integrates easily with Grafana for trace visualization and analysis.<\/div><\/div><div class=\"rank-math-faq-item\"><h3 class=\"rank-math-question\"><strong>What is Grafana Tempo used for?<\/strong><\/h3><div class=\"rank-math-answer\">Grafana Tempo is used to collect, store, and query distributed traces from applications. It helps developers understand how requests move through services, identify bottlenecks, and diagnose issues. Tempo supports popular tracing protocols like OTLP and Jaeger and works seamlessly with Grafana&rsquo;s dashboards and Explore view.<\/div><\/div><div class=\"rank-math-faq-item\"><h3 class=\"rank-math-question\"><strong>Is Grafana Tempo free to use?<\/strong><\/h3><div class=\"rank-math-answer\">Yes, Grafana Tempo is completely free and open source. You can download, install, and run it without any licensing fees. It&rsquo;s maintained by Grafana Labs and supported by an active community. Paid options are available through Grafana Cloud, but self-hosted Tempo is fully functional at no cost.<\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Grafana Tempo is an open-source distributed tracing back end from Grafana Labs. In other words, it tracks &ndash; or &ldquo;traces&rdquo; &ndash; requests through every stage in an application. It collects, stores, and analyzes this trace data instrumented with tools like OpenTelemetry or Jaeger. Unlike other back ends, Tempo avoids external databases by writing directly to [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/ng\/tutorials\/how-to-install-grafana-tempo\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":533,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"How to Install Grafana Tempo on Linux","rank_math_description":"Learn how to install Grafana Tempo, configure it, and connect it to Grafana for tracing visibility and performance monitoring.","rank_math_focus_keyword":"install tempo grafana","footnotes":""},"categories":[22644],"tags":[],"class_list":["post-130805","post","type-post","status-publish","format-standard","hentry","category-vps"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/how-to-install-grafana-tempo","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/how-to-install-grafana-tempo","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-install-grafana-tempo","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/how-to-install-grafana-tempo","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/how-to-install-grafana-tempo","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/how-to-install-grafana-tempo","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/how-to-install-grafana-tempo","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/how-to-install-grafana-tempo","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts\/130805","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/users\/533"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/comments?post=130805"}],"version-history":[{"count":6,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts\/130805\/revisions"}],"predecessor-version":[{"id":143150,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/posts\/130805\/revisions\/143150"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/media?parent=130805"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/categories?post=130805"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/ng\/tutorials\/wp-json\/wp\/v2\/tags?post=130805"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}