<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tempo data source on Grafana Labs</title><link>https://grafana.com/docs/grafana/v13.0/datasources/tempo/</link><description>Recent content in Tempo data source on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v13.0/datasources/tempo/index.xml" rel="self" type="application/rss+xml"/><item><title>Configure the Tempo data source</title><link>https://grafana.com/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/</link><pubDate>Tue, 14 Apr 2026 14:59:56 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/</guid><content><![CDATA[&lt;h1 id=&#34;configure-the-tempo-data-source&#34;&gt;Configure the Tempo data source&lt;/h1&gt;
&lt;p&gt;The Tempo data source connects Grafana to your Tempo database and lets you configure features and integrations with other telemetry signals.&lt;/p&gt;
&lt;p&gt;You can configure the data source using either the data source interface in Grafana or using a configuration file.
This page explains how to connect Grafana to Tempo, set up authentication, and enable streaming.
For trace correlation features, provisioning, and other settings, refer to the linked sub-pages.&lt;/p&gt;
&lt;p&gt;Depending upon your tracing environment, you may have more than one Tempo instance.
Grafana supports multiple Tempo data sources.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;To configure a Tempo data source, you need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Administrator rights to your Grafana instance.&lt;/li&gt;
&lt;li&gt;A Tempo instance configured to send tracing data to Grafana.&lt;/li&gt;
&lt;li&gt;An application or service instrumented to emit traces. Refer to 
    &lt;a href=&#34;/docs/tempo/latest/getting-started/instrumentation/&#34;&gt;Instrument for tracing&lt;/a&gt; if you haven&amp;rsquo;t set this up yet.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&amp;rsquo;re provisioning a Tempo data source, you also need administrative rights on the server hosting your Grafana instance.
Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/provision/&#34;&gt;Provision the Tempo data source&lt;/a&gt; for provisioning instructions.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo/tempo-data-source-provisioned-error.png&#34;
  alt=&#34;Provisioned data source warning&#34; width=&#34;1143&#34;
     height=&#34;385&#34;/&gt;&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;You can&amp;rsquo;t modify a provisioned data source from the Grafana UI. The settings form is read-only and the &lt;strong&gt;Save &amp;amp; test&lt;/strong&gt; button is replaced by &lt;strong&gt;Test&lt;/strong&gt; (you can test the connection but not save changes).&lt;/p&gt;
&lt;p&gt;To make changes, you can either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Clone the data source:&lt;/strong&gt; Create a new data source of the same type and copy the settings from the provisioned data source. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/provision/#clone-a-provisioned-data-source-for-grafana-cloud&#34;&gt;Clone a provisioned data source for Grafana Cloud&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Update the provisioning file:&lt;/strong&gt; Edit the YAML configuration file. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/provision/&#34;&gt;Provision the Tempo data source&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;add-or-modify-a-data-source&#34;&gt;Add or modify a data source&lt;/h2&gt;
&lt;p&gt;You can use these procedures to configure a new Tempo data source or to edit an existing one.&lt;/p&gt;
&lt;h3 id=&#34;add-a-new-data-source&#34;&gt;Add a new data source&lt;/h3&gt;
&lt;p&gt;Follow these steps to set up a new Tempo data source:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;Connections&lt;/strong&gt; in the main menu.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enter &lt;code&gt;Tempo&lt;/code&gt; in the search bar.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;Tempo&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;Add new data source&lt;/strong&gt; in the top-right corner of the page.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the &lt;strong&gt;Settings&lt;/strong&gt; tab, complete the &lt;strong&gt;Name&lt;/strong&gt;, &lt;strong&gt;Connection&lt;/strong&gt;, and &lt;strong&gt;Authentication&lt;/strong&gt; sections.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the &lt;strong&gt;Name&lt;/strong&gt; field to specify the name used for the data source in panels, queries, and Explore. Toggle the &lt;strong&gt;Default&lt;/strong&gt; switch for the data source to be pre-selected for new panels.&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Connection&lt;/strong&gt;, enter the &lt;strong&gt;URL&lt;/strong&gt; of the Tempo instance. Refer to the &lt;a href=&#34;#connection&#34;&gt;connection&lt;/a&gt; section for URL format examples.&lt;/li&gt;
&lt;li&gt;Complete the &lt;a href=&#34;#authentication&#34;&gt;&lt;strong&gt;Authentication&lt;/strong&gt; section&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optional: Configure other sections to add capabilities to your tracing data. Refer to the &lt;a href=&#34;trace-correlations/&#34;&gt;Configure trace correlations&lt;/a&gt; and &lt;a href=&#34;#other-settings&#34;&gt;Other settings&lt;/a&gt; sections for available options.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;Save &amp;amp; test&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This video explains how to add data sources, including Loki, Tempo, and Mimir, to Grafana and Grafana Cloud. Tempo data source setup starts at 4:58 in the video.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#39;https://www.youtube.com/embed/cqHO0oYW6Ic&#39; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h3 id=&#34;update-an-existing-data-source&#34;&gt;Update an existing data source&lt;/h3&gt;
&lt;p&gt;To modify an existing Tempo data source:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Connections&lt;/strong&gt; in the main menu.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Data sources&lt;/strong&gt; to view a list of configured data sources.&lt;/li&gt;
&lt;li&gt;Select the Tempo data source you want to modify.&lt;/li&gt;
&lt;li&gt;Configure or update additional sections to add capabilities to your tracing data.&lt;/li&gt;
&lt;li&gt;After completing your updates, select &lt;strong&gt;Save &amp;amp; test&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;connection&#34;&gt;Connection&lt;/h2&gt;
&lt;p&gt;The URL format depends on your environment:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Environment&lt;/th&gt;
              &lt;th&gt;URL format&lt;/th&gt;
              &lt;th&gt;Example&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Self-managed Tempo&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;http://&amp;lt;TEMPO_HOST&amp;gt;:&amp;lt;PORT&amp;gt;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;http://tempo:3200&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Grafana Cloud Traces&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;https://tempo-&amp;lt;REGION&amp;gt;.grafana.net/tempo&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;https://tempo-prod-01-eu-west-0.grafana.net/tempo&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The default port depends on the protocol: &lt;code&gt;3200&lt;/code&gt; for HTTP, &lt;code&gt;9095&lt;/code&gt; for gRPC.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Grafana Cloud includes &lt;a href=&#34;/docs/grafana-cloud/send-data/traces/&#34;&gt;Grafana Cloud Traces&lt;/a&gt;, a pre-configured tracing data source backed by Tempo. Add a Tempo data source manually when you need to connect to a self-managed Tempo instance or require custom configuration beyond what Grafana Cloud Traces provides.&lt;/p&gt;
&lt;p&gt;The URLs in this table are for &lt;strong&gt;querying&lt;/strong&gt; traces from Grafana. To configure how your applications &lt;strong&gt;send&lt;/strong&gt; traces to Tempo (OTLP endpoints), refer to &lt;a href=&#34;/docs/grafana-cloud/send-data/traces/set-up-tracing/&#34;&gt;Set up tracing&lt;/a&gt; for Grafana Cloud or 
    &lt;a href=&#34;/docs/tempo/latest/getting-started/instrumentation/&#34;&gt;Instrument for tracing&lt;/a&gt; for self-managed Tempo.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;authentication&#34;&gt;Authentication&lt;/h2&gt;
&lt;p&gt;Use this section to select an authentication method to access the data source.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Use Transport Layer Security (TLS) for an additional layer of security when working with Tempo.
For additional information on setting up TLS encryption with Tempo, refer to 
    &lt;a href=&#34;/docs/tempo/latest/configuration/network/tls/&#34;&gt;Configure TLS communication&lt;/a&gt; and 
    &lt;a href=&#34;/docs/tempo/latest/configuration/&#34;&gt;Tempo configuration&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;



&lt;div data-shared=&#34;datasources/datasouce-authentication.md&#34;&gt;
            

&lt;!-- Authentication procedure from shared file --&gt;
&lt;p&gt;To set up authentication:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Select an authentication method from the drop-down list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Basic authentication&lt;/strong&gt;: Authenticates your data source using a username and password&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Forward OAuth identity&lt;/strong&gt;: Forwards the OAuth access token and the OIDC ID token, if available, of the user querying to the data source&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No authentication&lt;/strong&gt;: No authentication is required to access the data source&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For &lt;strong&gt;Basic authentication&lt;/strong&gt; only: Enter the &lt;strong&gt;User&lt;/strong&gt; and &lt;strong&gt;Password&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optional: Complete the &lt;strong&gt;TLS settings&lt;/strong&gt; for additional security methods.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;TLS Client Authentication&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Toggle on to use client authentication. When enabled, it adds the &lt;strong&gt;Server name&lt;/strong&gt;, &lt;strong&gt;Client cert&lt;/strong&gt;, and &lt;strong&gt;Client key&lt;/strong&gt; fields. The client provides a certificate that is validated by the server to establish the client&amp;rsquo;s trusted identity. The client key encrypts the data between client and server. These details are encrypted and stored in the Grafana database.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Add self-signed certificate&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Activate this option to use a self-signed TLS certificate. You can add your own Certificate Authority (CA) certificate on top of one generated by the certificate authorities for additional security measure.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Skip TLS certification validation&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;When activated, it bypasses TLS certificate verification. Not recommended, unless absolutely necessary for testing.
&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo/tempo-data-source-authentication.png&#34;
  alt=&#34;Authentication section showing the TLS client certificate options&#34; width=&#34;633&#34;
     height=&#34;914&#34;/&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optional: Add &lt;strong&gt;HTTP Headers&lt;/strong&gt;. You can pass along additional context and metadata data about the request and response. Select &lt;strong&gt;Add header&lt;/strong&gt; to add &lt;strong&gt;Header&lt;/strong&gt; and &lt;strong&gt;Value&lt;/strong&gt; fields.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;Save &amp;amp; test&lt;/strong&gt; to preserve your changes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

  &lt;/div&gt;

        
&lt;p&gt;&lt;strong&gt;Connecting to Grafana Cloud Traces:&lt;/strong&gt; Select &lt;strong&gt;Basic authentication&lt;/strong&gt;. Use your Grafana Cloud stack&amp;rsquo;s instance ID (shown in the Tempo data source URL on the Cloud Portal) as the &lt;strong&gt;User&lt;/strong&gt;, and a Cloud Access Policy token with &lt;code&gt;traces:read&lt;/code&gt; scope as the &lt;strong&gt;Password&lt;/strong&gt;. Don&amp;rsquo;t use your Grafana login credentials.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Self-managed Tempo:&lt;/strong&gt; If Tempo is configured without authentication, select &lt;strong&gt;No authentication&lt;/strong&gt;. If your Tempo instance uses basic auth, enter the credentials configured in your Tempo &lt;code&gt;server&lt;/code&gt; block or reverse proxy.&lt;/p&gt;
&lt;h2 id=&#34;multi-tenancy&#34;&gt;Multi-tenancy&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re using a multi-tenant Tempo deployment, you need to send a tenant ID with each request so Tempo routes queries to the correct tenant.&lt;/p&gt;
&lt;p&gt;To configure multi-tenancy:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the Tempo data source settings, scroll to the &lt;strong&gt;Authentication&lt;/strong&gt; section.&lt;/li&gt;
&lt;li&gt;Expand the &lt;strong&gt;HTTP Headers&lt;/strong&gt; subsection.&lt;/li&gt;
&lt;li&gt;Add a header with the name &lt;code&gt;X-Scope-OrgID&lt;/code&gt; and the value set to your tenant ID.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This header is set in the Grafana data source for &lt;em&gt;querying&lt;/em&gt;. The same header must also be set on the &lt;em&gt;write path&lt;/em&gt; (in your Alloy or OpenTelemetry Collector configuration) to route trace data to the correct tenant on ingest.&lt;/p&gt;
&lt;p&gt;For more information, refer to the 
    &lt;a href=&#34;/docs/tempo/latest/operations/multitenancy/&#34;&gt;Tempo multi-tenancy documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;streaming&#34;&gt;Streaming&lt;/h2&gt;
&lt;p&gt;Streaming enables TraceQL query results to be displayed as they become available.
Without streaming, no results are displayed until all results have returned.&lt;/p&gt;
&lt;p&gt;To use streaming, you need to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Run Tempo version 2.2 or later, or Grafana Enterprise Traces (GET) version 2.2 or later, or use Grafana Cloud Traces.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Grafana Cloud Traces:&lt;/strong&gt; Streaming is supported out of the box. No additional infrastructure configuration is required.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Self-managed Tempo or GET:&lt;/strong&gt; Tempo must have &lt;code&gt;stream_over_http_enabled: true&lt;/code&gt; in its configuration for streaming to work. If your Tempo or GET instance is behind a load balancer or proxy that doesn&amp;rsquo;t support gRPC or HTTP2, streaming may not work and should be deactivated.&lt;/p&gt;
&lt;p&gt;For more information, refer to 
    &lt;a href=&#34;/docs/tempo/latest/api_docs/#tempo-grpc-api&#34;&gt;Tempo gRPC API&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;activate-streaming&#34;&gt;Activate streaming&lt;/h3&gt;
&lt;p&gt;Streaming is available in Grafana and Grafana Cloud.
The Streaming section has two toggles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Search queries&lt;/strong&gt;: Streams TraceQL search results as they arrive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metrics queries&lt;/strong&gt;: Streams TraceQL metrics query results as they arrive.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enable one or both depending on which query types you use.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo-data-source-streaming-v11.2.png&#34;
  alt=&#34;Streaming section in Tempo data source&#34; width=&#34;926&#34;
     height=&#34;255&#34;/&gt;&lt;/p&gt;
&lt;p&gt;When streaming is active, it shows as &lt;strong&gt;Enabled&lt;/strong&gt; in &lt;strong&gt;Explore&lt;/strong&gt;.
To check the status, select Explore in the menu, select your Tempo data source, and expand the &lt;strong&gt;Options&lt;/strong&gt; section.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo/tempo-query-stream-active.png&#34;
  alt=&#34;The Explore screen shows the Tempo data source with streaming active&#34; width=&#34;1196&#34;
     height=&#34;778&#34;/&gt;&lt;/p&gt;
&lt;h3 id=&#34;troubleshoot-streaming&#34;&gt;Troubleshoot streaming&lt;/h3&gt;
&lt;p&gt;If streaming isn&amp;rsquo;t working, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/troubleshooting/#streaming-issues&#34;&gt;Streaming issues&lt;/a&gt; in the troubleshooting guide.&lt;/p&gt;
&lt;h2 id=&#34;connect-traces-to-other-signals&#34;&gt;Connect traces to other signals&lt;/h2&gt;
&lt;p&gt;Grafana provides several ways to link traces to other telemetry signals. The following diagram shows the available correlation mechanisms, the direction each goes, and where each is configured.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;tempo-trace-correlation-diagram.svg&#34;
  alt=&#34;Linking traces to other signals&#34;/&gt;&lt;/p&gt;
&lt;p&gt;The Tempo data source settings page includes three sections for linking from spans to other signals. Each corresponds to a section in the settings form:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;configure-trace-to-logs/&#34;&gt;Trace to logs&lt;/a&gt;: Navigate from spans to related logs in Loki or another log data source.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;configure-trace-to-metrics/&#34;&gt;Trace to metrics&lt;/a&gt;: Link spans to metrics queries in Prometheus or other metrics data sources.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;configure-trace-to-profiles/&#34;&gt;Trace to profiles&lt;/a&gt;: Link spans to profiling data in Grafana Pyroscope with embedded flame graphs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more flexible, rule-based correlations that can target any data source or external URL, use Grafana &lt;a href=&#34;trace-correlations/&#34;&gt;Trace correlations&lt;/a&gt;. Trace correlations are configured under &lt;strong&gt;Configuration &amp;gt; Correlations&lt;/strong&gt;, not in the Tempo data source settings.&lt;/p&gt;
&lt;p&gt;To link &lt;em&gt;from&lt;/em&gt; logs or metrics &lt;em&gt;to&lt;/em&gt; traces (the reverse direction), refer to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/loki/configure-loki-data-source/#derived-fields&#34;&gt;Derived fields&lt;/a&gt; in the Loki data source (for logs to traces). The &lt;a href=&#34;configure-trace-to-logs/&#34;&gt;trace to logs&lt;/a&gt; page also covers this setup.&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/fundamentals/exemplars/&#34;&gt;Exemplars&lt;/a&gt; in the Prometheus data source (for metrics to traces).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;other-settings&#34;&gt;Other settings&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;additional-settings/&#34;&gt;Additional settings&lt;/a&gt;: Configure Service graph, node graph, search, TraceID query, span bar, and other settings.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;provision/&#34;&gt;Provision the Tempo data source&lt;/a&gt;: Configure the Tempo data source using a YAML file and clone provisioned data sources.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;custom-query-variables&#34;&gt;Custom query variables&lt;/h2&gt;
&lt;p&gt;To use a variable in your trace to logs, metrics, or profiles configuration, you need to wrap it in &lt;code&gt;${}&lt;/code&gt;.
For example, &lt;code&gt;${__span.name}&lt;/code&gt;.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Variable name&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;__tags&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;This variable uses the tag mapping from the UI to create a label matcher string in the specific data source syntax. The variable only uses tags that are present in the span. The link is still created even if only one of those tags is present in the span. You can use this if all tags are not required for the query to be useful.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;__span.spanId&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The ID of the span.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;__span.traceId&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The ID of the trace.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;__span.duration&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The duration of the span.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;__span.name&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Name of the span.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;__span.tags&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Namespace for the tags in the span. To access a specific tag named &lt;code&gt;version&lt;/code&gt;, you would use &lt;code&gt;${__span.tags.version}&lt;/code&gt;. In case the tag contains dot, you have to access it as &lt;code&gt;${__span.tags[&amp;quot;http.status&amp;quot;]}&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;__trace.traceId&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The ID of the trace.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;__trace.duration&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The duration of the trace.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;__trace.name&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;The name of the trace.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="configure-the-tempo-data-source">Configure the Tempo data source&lt;/h1>
&lt;p>The Tempo data source connects Grafana to your Tempo database and lets you configure features and integrations with other telemetry signals.&lt;/p></description></item><item><title>Query tracing data</title><link>https://grafana.com/docs/grafana/v13.0/datasources/tempo/query-editor/</link><pubDate>Tue, 14 Apr 2026 14:59:56 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/datasources/tempo/query-editor/</guid><content><![CDATA[&lt;h1 id=&#34;query-tracing-data&#34;&gt;Query tracing data&lt;/h1&gt;
&lt;p&gt;The Tempo data source&amp;rsquo;s query editor helps you query and display traces from Tempo in 
    &lt;a href=&#34;/docs/grafana/v13.0/explore/&#34;&gt;Explore&lt;/a&gt;.
The queries use &lt;a href=&#34;/docs/tempo/latest/traceql/&#34;&gt;TraceQL&lt;/a&gt;, the query language designed specifically for tracing.&lt;/p&gt;
&lt;p&gt;For general documentation on querying data sources in Grafana, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/panels-visualizations/query-transform-data/&#34;&gt;Query and transform data&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-tip&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Tip&lt;/p&gt;&lt;p&gt;Don&amp;rsquo;t know TraceQL? Try 
    &lt;a href=&#34;/docs/grafana/v13.0/explore/simplified-exploration/traces/&#34;&gt;Grafana Traces Drilldown&lt;/a&gt;, an intuitive, queryless app that lets you explore your tracing data using RED metrics.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;You can compose TraceQL queries in Grafana and Grafana Cloud using &lt;strong&gt;Explore&lt;/strong&gt; and a Tempo data source.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Before running queries, verify that your Tempo data source is configured and connected.
If queries return no results or errors, refer to &lt;a href=&#34;../configure-tempo-data-source/&#34;&gt;Configure the Tempo data source&lt;/a&gt; to check your connection and authentication settings.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;You don&amp;rsquo;t have to know TraceQL to create a query.
The &lt;strong&gt;Search&lt;/strong&gt; query builder lets you select options from drop-down lists to build a query visually.
These selections generate a TraceQL query that you can transfer to the &lt;strong&gt;TraceQL&lt;/strong&gt; editor to refine further.&lt;/p&gt;
&lt;p&gt;TraceQL queries follow the pattern &lt;code&gt;{ conditions } | pipeline&lt;/code&gt;, where conditions inside &lt;code&gt;{}&lt;/code&gt; select spans and pipeline operators like &lt;code&gt;count()&lt;/code&gt; or &lt;code&gt;avg()&lt;/code&gt; aggregate results.
To learn the full syntax, refer to 
    &lt;a href=&#34;/docs/tempo/latest/traceql/construct-traceql-queries/&#34;&gt;Construct a TraceQL query&lt;/a&gt;.
For a language overview, refer to the 
    &lt;a href=&#34;/docs/tempo/latest/traceql/&#34;&gt;TraceQL documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;choose-a-query-editing-mode&#34;&gt;Choose a query editing mode&lt;/h2&gt;
&lt;p&gt;The query editor has three &lt;strong&gt;Query types&lt;/strong&gt; that you can use to explore your tracing data.
You can use these modes by themselves or in combination to create building blocks to generate custom queries.
Adding another query adds a new query block.
Refer to &lt;a href=&#34;#use-query-types-together&#34;&gt;Use query types together&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-types.png&#34;
  alt=&#34;The three query types: Search, TraceQL, and Service Graph&#34; width=&#34;807&#34;
     height=&#34;86&#34;/&gt;&lt;/p&gt;
&lt;h3 id=&#34;search-query-builder&#34;&gt;Search query builder&lt;/h3&gt;
&lt;p&gt;Start here if you&amp;rsquo;re exploring data or learning TraceQL.
The &lt;strong&gt;Search&lt;/strong&gt; query builder provides drop-down lists and text fields to build a query visually without needing to know TraceQL syntax.
Your selections automatically generate a TraceQL query that you can copy to the editor for further refinement.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&#34;traceql-search/&#34;&gt;Search traces using the query builder&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-search-v11.png&#34;
  alt=&#34;The Search query builder&#34; width=&#34;1011&#34;
     height=&#34;435&#34;/&gt;&lt;/p&gt;
&lt;h3 id=&#34;traceql-query-editor&#34;&gt;TraceQL query editor&lt;/h3&gt;
&lt;p&gt;Use the &lt;strong&gt;TraceQL&lt;/strong&gt; editor when you need complex filters, structural queries across parent and child spans, or aggregations that the Search builder doesn&amp;rsquo;t support.
The editor provides autocomplete for attribute names, scopes, and operators.
You can also search for a trace ID by entering it directly into the query field.&lt;/p&gt;
&lt;p&gt;For copy-paste query examples, refer to &lt;a href=&#34;traceql-query-examples/&#34;&gt;TraceQL query examples&lt;/a&gt;.
Refer to &lt;a href=&#34;traceql-editor/&#34;&gt;Write TraceQL queries with the editor&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-traceql-v11.png&#34;
  alt=&#34;The TraceQL query editor&#34; width=&#34;1007&#34;
     height=&#34;277&#34;/&gt;&lt;/p&gt;
&lt;h3 id=&#34;service-graph-view&#34;&gt;Service graph view&lt;/h3&gt;
&lt;p&gt;The &lt;strong&gt;Service Graph&lt;/strong&gt; view answers a different question than trace search: instead of finding individual traces, it visualizes how your services connect and highlights request rate, error rate, and duration (RED metrics) across those connections.&lt;/p&gt;
&lt;p&gt;Using the Service Graph view, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discover spans that consistently return errors and the rates at which they occur.&lt;/li&gt;
&lt;li&gt;Get an overview of the overall rate of span calls throughout your services.&lt;/li&gt;
&lt;li&gt;Determine how long the slowest queries in your service take to complete.&lt;/li&gt;
&lt;li&gt;Examine all traces that contain spans of particular interest based on rate, error, and duration values (RED signals).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Service Graph requires metrics generation to be configured.
For more information, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/service-graph/&#34;&gt;Service Graph and Service Graph view&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph.png&#34;
  alt=&#34;Screenshot of the Service Graph view&#34; width=&#34;1290&#34;
     height=&#34;1145&#34;/&gt;&lt;/p&gt;
&lt;h2 id=&#34;understand-search-behavior&#34;&gt;Understand search behavior&lt;/h2&gt;
&lt;p&gt;Tempo search is non-deterministic. When you run a search, Tempo performs a massively parallel scan over the selected time range and returns the first N matching results. Even identical searches can return different results due to variations in machine load and network latency.&lt;/p&gt;
&lt;p&gt;This design prioritizes speed over predictability. To make results deterministic, append a &lt;code&gt;with&lt;/code&gt; clause to your TraceQL queries, for example &lt;code&gt;{ status = error } with (most_recent=true)&lt;/code&gt;, so Tempo returns the most recent matching traces. For more information, refer to 
    &lt;a href=&#34;/docs/tempo/latest/traceql/#retrieve-most-recent-results&#34;&gt;Retrieve most recent results&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;use-traceql-panels-in-dashboards&#34;&gt;Use TraceQL panels in dashboards&lt;/h2&gt;
&lt;p&gt;To add TraceQL panels to your dashboard, refer to the 
    &lt;a href=&#34;/docs/grafana/v13.0/panels-visualizations/visualizations/traces/&#34;&gt;Traces panel documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To learn more about Grafana dashboards, refer to the 
    &lt;a href=&#34;/docs/grafana/v13.0/dashboards/use-dashboards/&#34;&gt;Use dashboards documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For example dashboards with traces, visit &lt;a href=&#34;https://play.grafana.org&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana Play&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;set-options-for-query-builder-and-editor&#34;&gt;Set options for query builder and editor&lt;/h2&gt;
&lt;p&gt;The following options are available for the &lt;strong&gt;Search&lt;/strong&gt; and &lt;strong&gt;TraceQL&lt;/strong&gt; query types.
You can modify these settings in the &lt;strong&gt;Options&lt;/strong&gt; section.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-options.png&#34;
  alt=&#34;Options section in the query editors&#34; width=&#34;569&#34;
     height=&#34;117&#34;/&gt;&lt;/p&gt;
&lt;p&gt;After changing any option, re-run the query to apply the updates.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Limit&lt;/dt&gt;
&lt;dd&gt;Determines the maximum number of traces to return. Default value is &lt;code&gt;20&lt;/code&gt;.&lt;/dd&gt;
&lt;dt&gt;Span Limit&lt;/dt&gt;
&lt;dd&gt;Sets the maximum number of spans to return for each spanset. Default value is &lt;code&gt;3&lt;/code&gt;.&lt;/dd&gt;
&lt;dt&gt;Table Format&lt;/dt&gt;
&lt;dd&gt;Determines whether the query results table is displayed focused on &lt;strong&gt;Traces&lt;/strong&gt; or &lt;strong&gt;Spans&lt;/strong&gt;. &lt;strong&gt;Traces&lt;/strong&gt; is the default selection. When &lt;strong&gt;Traces&lt;/strong&gt; is selected, the results table starts with the trace ID. When &lt;strong&gt;Spans&lt;/strong&gt; is selected, the table starts with the trace service.&lt;/dd&gt;
&lt;dt&gt;Step&lt;/dt&gt;
&lt;dd&gt;Defines the step for metrics queries. Use duration notation, for example, &lt;code&gt;30ms&lt;/code&gt; or &lt;code&gt;1m&lt;/code&gt;.&lt;/dd&gt;
&lt;dt&gt;Streaming&lt;/dt&gt;
&lt;dd&gt;Indicates if streaming is active. Streaming lets you view partial query results before the entire query completes. Activating streaming adds the &lt;strong&gt;Table - Streaming Progress&lt;/strong&gt; section to the query results.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&#34;use-query-types-together&#34;&gt;Use query types together&lt;/h2&gt;
&lt;p&gt;You can use &lt;strong&gt;&#43; Add query&lt;/strong&gt; to create customized queries that use one or more of the query types together.
Each time you add a new query, it adds a new section, or query block, that contains &lt;strong&gt;Search&lt;/strong&gt;, &lt;strong&gt;TraceQL&lt;/strong&gt;, or &lt;strong&gt;Service Graph&lt;/strong&gt; user interface.&lt;/p&gt;
&lt;p&gt;The added query and results table appear in the navigation under &lt;strong&gt;Queries&lt;/strong&gt; and &lt;strong&gt;Tables&lt;/strong&gt; respectively.
You can use the navigation to view query, results table, and service graph blocks.&lt;/p&gt;
&lt;div class=&#34;my-cool-video&#34;&gt;
  &lt;figure class=&#34;p-0 m-0 d-flex flex-direction-column align-items-center&#34;&gt;
    &lt;video 
      width=&#34;800px&#34; 
      controls
      muted
      playsinline
      
        class=&#34;lazyload&#34;
        preload=&#34;none&#34;
        
             
      
      
        loop
      
      src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-editor.mp4&#34;
      type=&#34;video/mp4&#34;
    &gt;
    &lt;/video&gt;&lt;figcaption class=&#34;mb-2&#34;&gt;Navigating through the query blocks&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;To add a query block:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;&#43; Add query&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Choose a query type: &lt;strong&gt;Search&lt;/strong&gt;, &lt;strong&gt;TraceQL&lt;/strong&gt;, or &lt;strong&gt;Service Graph&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To remove a query block, select the &lt;strong&gt;Remove query&lt;/strong&gt; trash can icon.&lt;/p&gt;
&lt;p&gt;To rename a block, select the &lt;strong&gt;Rename&lt;/strong&gt; edit icon next to the query block name.
The name changes in the queries and table list.&lt;/p&gt;
&lt;h3 id=&#34;additional-query-block-options&#34;&gt;Additional query block options&lt;/h3&gt;
&lt;p&gt;Each query block has a set of icons in the right top corner.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-additional-options-toolbar.png&#34;
  alt=&#34;The additional options toolbar&#34; width=&#34;1007&#34;
     height=&#34;277&#34;/&gt;&lt;/p&gt;
&lt;p&gt;These icons include:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Show data source help&lt;/dt&gt;
&lt;dd&gt;Displays the &lt;strong&gt;Tempo Cheat Sheet&lt;/strong&gt; with links to documentation.&lt;/dd&gt;
&lt;dt&gt;Create recorded query&lt;/dt&gt;
&lt;dd&gt;Lets you save the current query block as a recorded query. This option is available in Grafana Cloud and Grafana Enterprise. For more information, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/administration/recorded-queries/&#34;&gt;Recorded queries&lt;/a&gt;.&lt;/dd&gt;
&lt;dt&gt;Duplicate query&lt;/dt&gt;
&lt;dd&gt;Copies the current block and adds a new identical block.&lt;/dd&gt;
&lt;dt&gt;Remove query&lt;/dt&gt;
&lt;dd&gt;Deletes the query block.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3 id=&#34;use-query-history-and-query-inspector&#34;&gt;Use query history and query inspector&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Explore&lt;/strong&gt; provides a history of all queries you&amp;rsquo;ve used within a data source and an inspector that lets you view stats, inspect queries, view JSON, and general information for your data source queries.&lt;/p&gt;
&lt;p&gt;For more information, refer to the 
    &lt;a href=&#34;/docs/grafana/v13.0/explore/explore-inspector/&#34;&gt;Query inspector in Explore&lt;/a&gt; and 
    &lt;a href=&#34;/docs/grafana/v13.0/explore/query-management/&#34;&gt;Query management in Explore&lt;/a&gt; documentation.&lt;/p&gt;
&lt;h2 id=&#34;upload-a-json-trace-file&#34;&gt;Upload a JSON trace file&lt;/h2&gt;
&lt;p&gt;You can upload a JSON file that contains a single trace and visualize it.
If the file has multiple traces, Grafana visualizes the first trace.&lt;/p&gt;
&lt;p&gt;To upload a trace file:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Explore&lt;/strong&gt; in Grafana.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Import trace&lt;/strong&gt; next to the query type selector.&lt;/li&gt;
&lt;li&gt;Upload your JSON trace file.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To download a trace or Service Graph through the 
    &lt;a href=&#34;/docs/grafana/v13.0/explore/explore-inspector/&#34;&gt;Inspector panel&lt;/a&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the inspector.&lt;/li&gt;
&lt;li&gt;Navigate to the &lt;strong&gt;Data&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Download traces&lt;/strong&gt; or &lt;strong&gt;Download Service Graph&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;cross-tenant-traceql-queries&#34;&gt;Cross-tenant TraceQL queries&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;ve configured a multi-stack Tempo data source, you can perform TraceQL queries across those stacks and tenants.&lt;/p&gt;
&lt;p&gt;Queries performed using the cross-tenant configured data source, in either &lt;strong&gt;Explore&lt;/strong&gt; or inside of dashboards,
are performed across all the tenants that you specified in the &lt;strong&gt;X-Scope-OrgID&lt;/strong&gt; header.&lt;/p&gt;
&lt;!-- vale Grafana.Spelling = NO --&gt;
&lt;p&gt;TraceQL queries that compare multiple spansets may not correctly return all traces in a cross-tenant query. For instance,&lt;/p&gt;
&lt;!-- vale Grafana.Quotes = YES --&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;{ span.attr1 = &amp;#34;bar&amp;#34; } &amp;amp;&amp;amp; { span.attr2 = &amp;#34;foo&amp;#34; }&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;TraceQL evaluates a contiguously stored trace.
If these two conditions are satisfied in separate tenants, then Tempo doesn&amp;rsquo;t return the trace.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&#34;/docs/grafana-cloud/connect-externally-hosted/multi-stack-data-sources/#set-up-a-multi-stack-tempo-data-source-in-grafana&#34;&gt;Set up a multi-stack Tempo data source in Grafana&lt;/a&gt; for information about configuring the Tempo data source.&lt;/p&gt;
&lt;p&gt;For information about Tempo configuration requirements, refer to the 
    &lt;a href=&#34;/docs/tempo/latest/operations/cross_tenant_query/&#34;&gt;Cross-tenant query&lt;/a&gt; and 
    &lt;a href=&#34;/docs/tempo/latest/operations/multitenancy/&#34;&gt;Enable multitenancy&lt;/a&gt; documentation.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;traceql-query-examples/&#34;&gt;TraceQL query examples&lt;/a&gt; - Copy-paste query examples for common use cases&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/latest/traceql/construct-traceql-queries/&#34;&gt;Construct a TraceQL query&lt;/a&gt; - Full TraceQL syntax, scopes, and operators&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../service-graph/&#34;&gt;Service Graph and Service Graph view&lt;/a&gt; - Visualize service dependencies and RED metrics&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../span-filters/&#34;&gt;Span filters&lt;/a&gt; - Refine trace results after querying&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../configure-tempo-data-source/&#34;&gt;Configure the Tempo data source&lt;/a&gt; - Connection, authentication, and feature settings&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="query-tracing-data">Query tracing data&lt;/h1>
&lt;p>The Tempo data source&amp;rsquo;s query editor helps you query and display traces from Tempo in
&lt;a href="/docs/grafana/v13.0/explore/">Explore&lt;/a>.
The queries use &lt;a href="/docs/tempo/latest/traceql/">TraceQL&lt;/a>, the query language designed specifically for tracing.&lt;/p></description></item><item><title>Service Graph and Service Graph view</title><link>https://grafana.com/docs/grafana/v13.0/datasources/tempo/service-graph/</link><pubDate>Tue, 14 Apr 2026 14:59:56 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/datasources/tempo/service-graph/</guid><content><![CDATA[&lt;h1 id=&#34;service-graph-and-service-graph-view&#34;&gt;Service Graph and Service Graph view&lt;/h1&gt;
&lt;p&gt;The Service Graph is a visual representation of the relationships between services in a distributed system.
Each node represents a service such as an API or database, and each edge represents requests between services.&lt;/p&gt;
&lt;p&gt;Use the Service Graph to detect performance issues, track error and latency trends across services, and navigate to the traces that caused them.&lt;/p&gt;
&lt;p&gt;The Service Graph is built on RED metrics, a monitoring methodology that focuses on three signals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Rate:&lt;/strong&gt; requests per second&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Errors:&lt;/strong&gt; failed requests per second&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duration:&lt;/strong&gt; latency distribution (for example, p50, p95, p99)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Service graph data flows from traces through a metrics pipeline into Grafana:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Your application emits traces to Tempo.&lt;/li&gt;
&lt;li&gt;The 
    &lt;a href=&#34;/docs/tempo/latest/metrics-from-traces/service_graphs/&#34;&gt;Tempo metrics generator&lt;/a&gt; or 
    &lt;a href=&#34;/docs/tempo/latest/metrics-from-traces/service_graphs/enable-service-graphs/&#34;&gt;Grafana Alloy&lt;/a&gt; processes the traces and writes service graph metrics to a Prometheus-compatible backend.&lt;/li&gt;
&lt;li&gt;Grafana reads those metrics from your linked Prometheus data source and renders the graph.&lt;/li&gt;
&lt;/ol&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 500px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-node-graph.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-node-graph.png&#34;data-srcset=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-node-graph.png?w=320 320w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-node-graph.png?w=550 550w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-node-graph.png?w=750 750w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-node-graph.png?w=900 900w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-node-graph.png?w=1040 1040w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-node-graph.png?w=1240 1240w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-node-graph.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Node graph showing service dependencies with color-coded circles representing request success and failure rates&#34;width=&#34;1333&#34;height=&#34;715&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-node-graph.png&#34;
            alt=&#34;Node graph showing service dependencies with color-coded circles representing request success and failure rates&#34;width=&#34;1333&#34;height=&#34;715&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;To use the Service Graph, you need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Service graph metrics generation&lt;/strong&gt; configured in 
    &lt;a href=&#34;/docs/tempo/latest/metrics-from-traces/service_graphs/enable-service-graphs/&#34;&gt;Grafana Alloy&lt;/a&gt; or 
    &lt;a href=&#34;/docs/tempo/latest/metrics-from-traces/service_graphs/&#34;&gt;the Tempo metrics-generator&lt;/a&gt;. Without this, no service graph data exists.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Prometheus data source&lt;/strong&gt; in Grafana that receives the generated metrics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Prometheus data source linked&lt;/strong&gt; in the Tempo data source settings under 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/additional-settings/#service-graph&#34;&gt;Service graph&lt;/a&gt;. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/additional-settings/#service-graph&#34;&gt;Additional settings&lt;/a&gt; for details, or 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/provision/&#34;&gt;Provision the data source&lt;/a&gt; for YAML configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you run a Service Graph query and see an empty result, refer to &lt;a href=&#34;#troubleshoot&#34;&gt;Troubleshoot&lt;/a&gt; on this page.&lt;/p&gt;
&lt;h2 id=&#34;how-it-works&#34;&gt;How it works&lt;/h2&gt;
&lt;p&gt;The metrics generator or Alloy inspects trace spans for parent-child relationships that represent a request, using &lt;a href=&#34;https://opentelemetry.io/docs/specs/semconv/general/trace/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;OpenTelemetry semantic conventions&lt;/a&gt;. It writes the following metrics to your Prometheus backend:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;traces_service_graph_request_total&lt;/code&gt;: Total requests between two services (counter).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;traces_service_graph_request_failed_total&lt;/code&gt;: Failed requests between two services (counter).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;traces_service_graph_request_server_seconds&lt;/code&gt;: Response time as observed by the server (histogram).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;traces_service_graph_request_client_seconds&lt;/code&gt;: Response time as observed by the client (histogram).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Grafana reads these metrics from the linked Prometheus data source to render the node graph and calculate request rates, error rates, and response times.&lt;/p&gt;
&lt;p&gt;For the full metrics reference, including labels, virtual nodes, and additional metrics, refer to 
    &lt;a href=&#34;/docs/tempo/latest/metrics-from-traces/service_graphs/&#34;&gt;Service graphs&lt;/a&gt; in the Tempo documentation.&lt;/p&gt;
&lt;h2 id=&#34;display-the-service-graph&#34;&gt;Display the Service Graph&lt;/h2&gt;
&lt;p&gt;To display the Service Graph:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to 
    &lt;a href=&#34;/docs/grafana/v13.0/explore/&#34;&gt;Explore&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Select the Tempo data source.&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Service Graph&lt;/strong&gt; query type.&lt;/li&gt;
&lt;li&gt;Run a query.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;(Optional)&lt;/em&gt; Filter by service name.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Each circle in the graph represents a service.
Numbers inside the circles indicate the response time and requests per second.&lt;/p&gt;
&lt;p&gt;Each circle&amp;rsquo;s color shows the proportion of successful and failed requests:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Color&lt;/th&gt;
              &lt;th&gt;Meaning&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Green&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Success&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Red&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Fault&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Yellow&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Errors&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Purple&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Throttled responses&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The color mix of each circle shows the proportion of each state. A mostly green circle indicates healthy traffic; visible red, yellow, or purple arcs indicate faults, errors, or throttling respectively.&lt;/p&gt;
&lt;p&gt;To open a context menu with links for quick navigation to traces, metrics, and related views, click a service.&lt;/p&gt;
&lt;p&gt;For details on navigating, zooming, and interacting with the graph layout, refer to the 
    &lt;a href=&#34;/docs/grafana/v13.0/panels-visualizations/visualizations/node-graph/&#34;&gt;Node graph panel&lt;/a&gt; documentation.&lt;/p&gt;
&lt;p&gt;To investigate a service with a high error rate, use TraceQL:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;traceql&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-traceql&#34;&gt;{ resource.service.name = &amp;#34;&amp;lt;SERVICE_NAME&amp;gt;&amp;#34; &amp;amp;&amp;amp; status = error }&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Replace &lt;em&gt;&lt;code&gt;&amp;lt;SERVICE_NAME&amp;gt;&lt;/code&gt;&lt;/em&gt; with the name shown in the Service Graph node.
Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/query-editor/traceql-query-examples/&#34;&gt;TraceQL query examples&lt;/a&gt; for more queries you can run from Service Graph observations.&lt;/p&gt;
&lt;h2 id=&#34;service-graph-view&#34;&gt;Service Graph view&lt;/h2&gt;
&lt;p&gt;The Service Graph view displays a table of RED metrics (rate, error rate, duration) alongside the node graph.
The table uses a different set of metrics from the node graph:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;traces_spanmetrics_calls_total&lt;/code&gt;: Rate and error rate columns.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;traces_spanmetrics_duration_seconds_bucket&lt;/code&gt;: Duration column.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These span metrics must be present in your linked Prometheus data source.
Span metrics generation must be enabled in your Tempo or Alloy configuration. Refer to 
    &lt;a href=&#34;/docs/tempo/latest/metrics-from-traces/service_graphs/enable-service-graphs/&#34;&gt;Enable service graphs&lt;/a&gt; in the Tempo documentation.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p docs-image--no-shadow&#34;
    style=&#34;max-width: 500px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph.png&#34;data-srcset=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph.png?w=320 320w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph.png?w=550 550w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph.png?w=750 750w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph.png?w=900 900w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph.png?w=1040 1040w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph.png?w=1240 1240w, /media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Screenshot of the Service Graph view showing a table of RED metrics alongside the node graph&#34;width=&#34;1290&#34;height=&#34;1145&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph.png&#34;
            alt=&#34;Screenshot of the Service Graph view showing a table of RED metrics alongside the node graph&#34;width=&#34;1290&#34;height=&#34;1145&#34;class=&#34;docs-image--no-shadow&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;For details on the Service Graph view, refer to the 
    &lt;a href=&#34;/docs/tempo/latest/metrics-generator/service-graph-view/&#34;&gt;Service Graph view documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To open the Service Graph view, follow the same steps as &lt;a href=&#34;#display-the-service-graph&#34;&gt;Display the Service Graph&lt;/a&gt;. The table appears alongside the node graph after you run the query.&lt;/p&gt;
&lt;p&gt;To open a query in Prometheus with the span name of that row automatically set in the query, click a row in the &lt;strong&gt;rate&lt;/strong&gt;, &lt;strong&gt;error rate&lt;/strong&gt;, or &lt;strong&gt;duration&lt;/strong&gt; columns.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo/query-editor/tempo-ds-query-service-graph-prom.png&#34;
  alt=&#34;Linked Prometheus query opened from the Service Graph view rate column&#34; width=&#34;1396&#34;
     height=&#34;1075&#34;/&gt;&lt;/p&gt;
&lt;p&gt;To open a query in Tempo with the span name of that row automatically set in the query, click a row in the &lt;strong&gt;links&lt;/strong&gt; column.&lt;/p&gt;
&lt;p&gt;You can also use TraceQL to query the same data programmatically. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/query-editor/traceql-query-examples/&#34;&gt;TraceQL query examples&lt;/a&gt; to translate Service Graph observations into queries.&lt;/p&gt;
&lt;h2 id=&#34;troubleshoot&#34;&gt;Troubleshoot&lt;/h2&gt;
&lt;p&gt;If the Service Graph isn&amp;rsquo;t displaying data, the table is empty, or you see high cardinality warnings, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/troubleshooting/#service-graph-issues&#34;&gt;Service graph issues&lt;/a&gt; in the troubleshooting guide.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/latest/metrics-from-traces/service_graphs/enable-service-graphs/&#34;&gt;Enable service graphs&lt;/a&gt; - Set up metric generation in Tempo or Alloy.&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/grafana/v13.0/panels-visualizations/visualizations/node-graph/&#34;&gt;Node graph panel&lt;/a&gt; - Navigate and customize the graph layout.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="service-graph-and-service-graph-view">Service Graph and Service Graph view&lt;/h1>
&lt;p>The Service Graph is a visual representation of the relationships between services in a distributed system.
Each node represents a service such as an API or database, and each edge represents requests between services.&lt;/p></description></item><item><title>Span filters</title><link>https://grafana.com/docs/grafana/v13.0/datasources/tempo/span-filters/</link><pubDate>Tue, 14 Apr 2026 14:59:56 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/datasources/tempo/span-filters/</guid><content><![CDATA[&lt;h1 id=&#34;span-filters&#34;&gt;Span filters&lt;/h1&gt;
&lt;p&gt;When working with traces, especially those comprising a vast number of spans, pinpointing specific spans of interest can be a daunting task.
This is where span filtering comes in.
Located above the trace timeline viewer, the &lt;strong&gt;Filters&lt;/strong&gt; bar lets you refine the spans displayed based on specific criteria.
Whether you&amp;rsquo;re looking to identify spans from a certain service, those exceeding a particular duration, or spans tagged with specific attributes, span filtering streamlines the process.&lt;/p&gt;
&lt;p&gt;The more filters you add, the more specific the results become.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-tip&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Tip&lt;/p&gt;&lt;p&gt;If you arrived from the &lt;a href=&#34;../service-graph/&#34;&gt;Service Graph&lt;/a&gt;, use &lt;strong&gt;service.name&lt;/strong&gt; and &lt;strong&gt;status = error&lt;/strong&gt; filters to drill into the specific service nodes showing errors.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/grafana/data-sources/tempo/screenshot-tempo-datasource-span-filters.png&#34;
  alt=&#34;The Filters section in the trace timeline viewer showing the filter drop-down, quick filter pills for Critical path, Errors, and High latency, navigation arrows, match count, and Show all spans toggle.&#34; width=&#34;734&#34;
     height=&#34;762&#34;/&gt;&lt;/p&gt;
&lt;h2 id=&#34;filter-types&#34;&gt;Filter types&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;Filters&lt;/strong&gt; text box lets you pick a key, choose an operator, and enter or select a value.&lt;/p&gt;
&lt;p&gt;Available filter keys include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Text search&lt;/strong&gt;: free-text search across span content&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;duration&lt;/strong&gt;: filter by span duration (operators: &lt;code&gt;=&lt;/code&gt;, &lt;code&gt;&amp;gt;=&lt;/code&gt;, &lt;code&gt;&amp;lt;=&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;service.name&lt;/strong&gt;: the service that produced the span&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;span.name&lt;/strong&gt;: the operation name of the span&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: span status (&lt;code&gt;ok&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;, &lt;code&gt;unset&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;kind&lt;/strong&gt;: span kind (for example, &lt;code&gt;server&lt;/code&gt;, &lt;code&gt;client&lt;/code&gt;, &lt;code&gt;internal&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Any span tag, process tag, or log field key present in the trace&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For most attribute keys, the available operators are &lt;code&gt;=&lt;/code&gt;, &lt;code&gt;!=&lt;/code&gt;, &lt;code&gt;=~&lt;/code&gt; (regular expression match), and &lt;code&gt;!~&lt;/code&gt; (regular expression not match).&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;The same attributes available as filter keys (for example, &lt;code&gt;span.name&lt;/code&gt;, &lt;code&gt;service.name&lt;/code&gt;, &lt;code&gt;duration&lt;/code&gt;) can be used directly in &lt;a href=&#34;../query-editor/traceql-editor/&#34;&gt;TraceQL queries&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;quick-filter-pills&#34;&gt;Quick filter pills&lt;/h2&gt;
&lt;p&gt;Below the text box, three quick-filter pills let you apply common filters with a single click:&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;button-div&#34;&gt;
      &lt;button class=&#34;expand-table-btn&#34;&gt;Expand table&lt;/button&gt;
    &lt;/div&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Pill&lt;/th&gt;
              &lt;th&gt;Effect&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Critical path&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Highlights spans in the critical path. The longest sequence of dependent tasks that determines the trace&amp;rsquo;s minimum duration.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Errors&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Selects spans where &lt;code&gt;status = error&lt;/code&gt;.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;High latency&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Selects the 10% longest spans in the trace (p90 threshold).&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;Click a pill to toggle the filter on or off.&lt;/p&gt;
&lt;h2 id=&#34;use-span-filters&#34;&gt;Use span filters&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;Filters&lt;/strong&gt; bar is always visible above the trace timeline viewer.
To add a filter:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the &lt;strong&gt;Filters&lt;/strong&gt; text box (placeholder text: &lt;em&gt;Filter by attribute or text&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;Select a key from the dropdown (for example, &lt;strong&gt;service.name&lt;/strong&gt; or &lt;strong&gt;duration&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Choose an operator (for example, &lt;code&gt;=&lt;/code&gt; or &lt;code&gt;&amp;gt;=&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Select or type a value. The text box suggests values extracted from the current trace.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The trace timeline viewer updates as you add filters, highlighting the matching spans.&lt;/p&gt;
&lt;h3 id=&#34;show-all-spans&#34;&gt;Show all spans&lt;/h3&gt;
&lt;p&gt;By default, the &lt;strong&gt;Show all spans&lt;/strong&gt; toggle is enabled, meaning all spans remain visible with matching spans highlighted.
Turn off &lt;strong&gt;Show all spans&lt;/strong&gt; to hide non-matching spans and display only the spans that meet your filter criteria.
This is particularly useful when sifting through thousands of spans, allowing you to zero in on those that truly matter.&lt;/p&gt;
&lt;p&gt;The toggle is disabled when no filters are active.&lt;/p&gt;
&lt;h3 id=&#34;navigate-between-matches&#34;&gt;Navigate between matches&lt;/h3&gt;
&lt;p&gt;Use the up and down arrow buttons next to the match count to jump between matching spans in the trace timeline.
The match count displays the current position and total matches (for example, &lt;em&gt;2/5 matches&lt;/em&gt;).&lt;/p&gt;
&lt;h3 id=&#34;remove-a-filter&#34;&gt;Remove a filter&lt;/h3&gt;
&lt;p&gt;To remove a filter, click the &lt;strong&gt;×&lt;/strong&gt; on the filter chip below the &lt;strong&gt;Filters&lt;/strong&gt; text box.&lt;/p&gt;
&lt;h2 id=&#34;common-use-cases&#34;&gt;Common use cases&lt;/h2&gt;
&lt;p&gt;To find all errors from a specific service, select &lt;code&gt;service.name&lt;/code&gt; = &lt;code&gt;checkout&lt;/code&gt;, then click the &lt;strong&gt;Errors&lt;/strong&gt; pill.&lt;/p&gt;
&lt;p&gt;To isolate slow database calls, select &lt;code&gt;span.name&lt;/code&gt; =~ &lt;code&gt;db\..*&lt;/code&gt;, then select &lt;code&gt;duration&lt;/code&gt; &amp;gt; &lt;code&gt;200ms&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To narrow to the critical path only, click the &lt;strong&gt;Critical path&lt;/strong&gt; pill, then turn off &lt;strong&gt;Show all spans&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../service-graph/&#34;&gt;Service Graph&lt;/a&gt;: Visualize service relationships and identify error-producing nodes.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../query-editor/&#34;&gt;Query editor&lt;/a&gt;: Build TraceQL queries using the same attributes available as span filter keys.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../configure-tempo-data-source/&#34;&gt;Configure the Tempo data source&lt;/a&gt;: Set up your Tempo data source and trace correlations.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="span-filters">Span filters&lt;/h1>
&lt;p>When working with traces, especially those comprising a vast number of spans, pinpointing specific spans of interest can be a daunting task.
This is where span filtering comes in.
Located above the trace timeline viewer, the &lt;strong>Filters&lt;/strong> bar lets you refine the spans displayed based on specific criteria.
Whether you&amp;rsquo;re looking to identify spans from a certain service, those exceeding a particular duration, or spans tagged with specific attributes, span filtering streamlines the process.&lt;/p></description></item><item><title>Troubleshoot Tempo data source issues</title><link>https://grafana.com/docs/grafana/v13.0/datasources/tempo/troubleshooting/</link><pubDate>Thu, 16 Apr 2026 20:21:47 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/datasources/tempo/troubleshooting/</guid><content><![CDATA[&lt;h1 id=&#34;troubleshoot-tempo-data-source-issues&#34;&gt;Troubleshoot Tempo data source issues&lt;/h1&gt;
&lt;p&gt;This document provides solutions to common issues you may encounter when configuring or using the Tempo data source in Grafana.&lt;/p&gt;
&lt;h2 id=&#34;scope-of-this-guide&#34;&gt;Scope of this guide&lt;/h2&gt;
&lt;p&gt;This guide covers issues related to connecting Grafana to Tempo and using the data source features. It applies to the following setups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Self-managed Grafana &#43; self-managed Tempo&lt;/strong&gt;—you manage both Grafana (OSS or Enterprise) and Tempo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana Cloud &#43; Cloud Traces&lt;/strong&gt;—you use Grafana Cloud with the managed Tempo backend (Grafana Cloud Traces). Some configuration (streaming, metrics generator) is handled automatically.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Grafana Cloud &#43; self-managed Tempo via PDC&lt;/strong&gt;—you use Grafana Cloud but connect to your own Tempo instance through &lt;a href=&#34;/docs/grafana-cloud/connect-externally-hosted/private-data-source-connect/&#34;&gt;Private data source connect&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Where troubleshooting steps differ between these setups, the guide calls it out. Sections labeled &lt;em&gt;Grafana Cloud only&lt;/em&gt; or &lt;em&gt;self-managed Tempo&lt;/em&gt; apply only to those environments.&lt;/p&gt;
&lt;h3 id=&#34;resources-for-troubleshooting-tempo&#34;&gt;Resources for troubleshooting Tempo&lt;/h3&gt;
&lt;p&gt;For issues with Tempo itself (not the data source), refer to the Tempo product documentation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/latest/troubleshooting/&#34;&gt;Troubleshoot Tempo&lt;/a&gt; - General Tempo troubleshooting, including ingestion failures and server-side errors.&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/latest/troubleshooting/querying/unable-to-see-trace/&#34;&gt;Unable to find traces&lt;/a&gt; - Traces missing due to ingestion, sampling, or retention issues.&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/latest/troubleshooting/querying/too-many-requests-error/&#34;&gt;Too many requests error&lt;/a&gt; - Query capacity limits and 429 errors.&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/latest/troubleshooting/querying/&#34;&gt;Query issues&lt;/a&gt; - Server-side query failures, bad blocks, and performance tuning.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;resources-for-troubleshooting-tracings-in-grafana-cloud&#34;&gt;Resources for troubleshooting tracings in Grafana Cloud&lt;/h3&gt;
&lt;p&gt;Additional resources for Grafana Cloud:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/send-data/traces/troubleshoot/&#34;&gt;Troubleshoot Grafana Cloud Traces&lt;/a&gt;, which covers quick checks, ingestion issues, TraceQL and search, service graph, exemplars, and rate limiting and retry.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/send-data/traces/investigate-traces-with-assistant/&#34;&gt;Investigate traces with Grafana Assistant&lt;/a&gt; - Use Grafana Assistant to help troubleshoot any issues.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/send-data/traces/set-up/traces-with-alloy/#troubleshoot&#34;&gt;Troubleshoot traces collection with Alloy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/grafana-cloud/send-data/traces/configure/metrics-generator/#troubleshoot-errors&#34;&gt;Troubleshoot errors with metrics-generator in Cloud Traces&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;connection-errors&#34;&gt;Connection errors&lt;/h2&gt;
&lt;p&gt;These errors occur when Grafana cannot establish or maintain a connection to the Tempo instance.&lt;/p&gt;
&lt;h3 id=&#34;failed-to-connect-to-tempo&#34;&gt;Failed to connect to Tempo&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;Failed to connect to Tempo&lt;/code&gt; or &lt;code&gt;dial tcp: connection refused&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Grafana can&amp;rsquo;t reach the Tempo instance. This typically means the Tempo process isn&amp;rsquo;t running, the URL in the data source settings is wrong, or a network-level rule is blocking the connection.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that the Tempo instance is running and accessible from the Grafana server.&lt;/li&gt;
&lt;li&gt;Check that the URL is correct in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/&#34;&gt;data source configuration&lt;/a&gt;. The default Tempo HTTP port is &lt;code&gt;3200&lt;/code&gt;. Common URL mistakes include:
&lt;ul&gt;
&lt;li&gt;Adding trailing path segments, for example, &lt;code&gt;/api&lt;/code&gt; or &lt;code&gt;/tempo&lt;/code&gt;, to self-managed Tempo URLs. The correct format is &lt;code&gt;http://&amp;lt;HOST&amp;gt;:3200&lt;/code&gt; with no path. The &lt;code&gt;/tempo&lt;/code&gt; suffix is only used for Grafana Cloud Traces URLs.&lt;/li&gt;
&lt;li&gt;Using the gRPC port (&lt;code&gt;9095&lt;/code&gt;) instead of the HTTP port (&lt;code&gt;3200&lt;/code&gt;). The Tempo data source URL must be the HTTP endpoint. Grafana derives the gRPC connection for streaming from the same URL.&lt;/li&gt;
&lt;li&gt;Refer to the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/&#34;&gt;Connection&lt;/a&gt; section for URL format examples by environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ensure there are no firewall rules blocking the connection between Grafana and Tempo.&lt;/li&gt;
&lt;li&gt;For Grafana Cloud users connecting to a self-managed Tempo instance, ensure you have configured &lt;a href=&#34;/docs/grafana-cloud/connect-externally-hosted/private-data-source-connect/&#34;&gt;Private data source connect&lt;/a&gt; if Tempo isn&amp;rsquo;t publicly accessible.&lt;/li&gt;
&lt;li&gt;Verify the protocol (HTTP or HTTPS) matches your Tempo configuration.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;connection-timeout&#34;&gt;Connection timeout&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;Connection timed out&lt;/code&gt; or &lt;code&gt;context deadline exceeded&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The connection to Tempo timed out before receiving a response. This can happen when network latency is high, Tempo is overloaded, or an intermediary device (load balancer, proxy) terminates the connection before Tempo responds.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check the network latency between Grafana and Tempo.&lt;/li&gt;
&lt;li&gt;Verify that Tempo isn&amp;rsquo;t overloaded or experiencing performance issues. If you have 
    &lt;a href=&#34;/docs/tempo/latest/operations/monitor/&#34;&gt;Tempo mixin dashboards&lt;/a&gt; installed, check them for resource saturation or elevated error rates.&lt;/li&gt;
&lt;li&gt;Increase the &lt;strong&gt;Timeout&lt;/strong&gt; setting in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/additional-settings/&#34;&gt;data source configuration&lt;/a&gt; under &lt;strong&gt;Additional settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Check if any network devices (load balancers, proxies) are timing out the connection.&lt;/li&gt;
&lt;li&gt;For large trace queries, consider reducing the time range or adding more specific filters.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;tlsssl-connection-failures&#34;&gt;TLS/SSL connection failures&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;TLS handshake failed&lt;/code&gt; or &lt;code&gt;x509: certificate signed by unknown authority&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; There&amp;rsquo;s a mismatch between the TLS settings in Grafana and what the Tempo instance supports or requires. For example, Tempo may present a self-signed certificate that the Grafana server doesn&amp;rsquo;t trust, or the certificate&amp;rsquo;s hostname doesn&amp;rsquo;t match the URL.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that Tempo has a 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/#authentication&#34;&gt;valid TLS certificate if HTTPS is enabled&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check that the certificate is trusted by the Grafana server.&lt;/li&gt;
&lt;li&gt;If using a self-signed certificate, configure the &lt;strong&gt;TLS/SSL Auth Details&lt;/strong&gt; in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/#authentication&#34;&gt;data source settings&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Ensure the certificate&amp;rsquo;s Common Name (CN) or Subject Alternative Name (SAN) matches the hostname used in the URL.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For additional information on setting up TLS encryption with Tempo, refer to 
    &lt;a href=&#34;/docs/tempo/latest/configuration/network/tls/&#34;&gt;Configure TLS communication&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;authentication-errors&#34;&gt;Authentication errors&lt;/h2&gt;
&lt;p&gt;These errors occur when there are issues with authentication credentials or permissions.&lt;/p&gt;
&lt;h3 id=&#34;authentication-failed&#34;&gt;Authentication failed&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;401 Unauthorized&lt;/code&gt; or &lt;code&gt;403 Forbidden&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The authentication credentials are invalid or the user doesn&amp;rsquo;t have permission to access Tempo. This error appears when you select &lt;strong&gt;Save &amp;amp; test&lt;/strong&gt; or when running a query.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that the authentication credentials (username/password or API key) are correct in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/#authentication&#34;&gt;data source settings&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check that the user or service account has the required permissions.&lt;/li&gt;
&lt;li&gt;Ensure the authentication method selected in the data source matches what Tempo expects.&lt;/li&gt;
&lt;li&gt;For Grafana Cloud, verify that your Cloud Access Policy token has the &lt;code&gt;traces:read&lt;/code&gt; scope. Refer to &lt;a href=&#34;/docs/grafana-cloud/send-data/traces/set-up/add-access-policy/&#34;&gt;Create a Cloud Access Policy token&lt;/a&gt; for setup instructions. To find your stack URL and credentials, refer to &lt;a href=&#34;/docs/grafana-cloud/send-data/traces/set-up/locate-url-user-password/&#34;&gt;Locate your stack URL, user, and password&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;For self-managed Tempo, ensure the credentials match those configured in the Tempo &lt;code&gt;server&lt;/code&gt; block or reverse proxy.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;save-and-test-returns-404&#34;&gt;Save and test returns 404&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;Tempo echo endpoint returned status 404&lt;/code&gt; when selecting &lt;strong&gt;Save &amp;amp; test&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The Grafana health check reaches the server but the &lt;code&gt;api/echo&lt;/code&gt; endpoint returns a 404. The most common cause is incorrect path segments in the URL (such as &lt;code&gt;/api&lt;/code&gt; or &lt;code&gt;/tempo&lt;/code&gt; on a self-managed instance) that shift the health check request to a nonexistent path. A 404 can also occur when a reverse proxy in front of Tempo rejects requests that include unexpected basic authentication headers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that the URL doesn&amp;rsquo;t include trailing path segments. For self-managed Tempo, the URL should be &lt;code&gt;http://&amp;lt;HOST&amp;gt;:3200&lt;/code&gt; with no path. Refer to the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/&#34;&gt;Connection&lt;/a&gt; section for the correct format.&lt;/li&gt;
&lt;li&gt;If a reverse proxy sits between Grafana and Tempo, check whether the proxy is returning the 404. Tempo itself ignores unexpected auth headers, but a proxy may reject them.&lt;/li&gt;
&lt;li&gt;If Tempo doesn&amp;rsquo;t require authentication, select &lt;strong&gt;No authentication&lt;/strong&gt; in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/#authentication&#34;&gt;data source settings&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check that the authentication credentials are entered in the correct fields. For Grafana Cloud, the &lt;strong&gt;User&lt;/strong&gt; field is the instance ID (not your Grafana login), and the &lt;strong&gt;Password&lt;/strong&gt; is a Cloud Access Policy token.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;multi-tenant-authentication-issues&#34;&gt;Multi-tenant authentication issues&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;Unauthorized&lt;/code&gt; when using multi-tenant Tempo&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The tenant ID (&lt;code&gt;X-Scope-OrgID&lt;/code&gt; header) is missing or incorrect. This header must be set on both the write path (in your Alloy or OpenTelemetry Collector configuration) and the read path (in the Grafana data source settings) to route data to the correct tenant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the Tempo data source settings, verify that the &lt;code&gt;X-Scope-OrgID&lt;/code&gt; header is configured under &lt;strong&gt;Authentication &amp;gt; HTTP Headers&lt;/strong&gt;. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/&#34;&gt;Multi-tenancy&lt;/a&gt; for data source configuration steps.&lt;/li&gt;
&lt;li&gt;On the write path, verify that the same &lt;code&gt;X-Scope-OrgID&lt;/code&gt; header is set in your Alloy or OpenTelemetry Collector configuration so traces are ingested under the correct tenant.&lt;/li&gt;
&lt;li&gt;Check that the authenticated user has access to the specified tenant.&lt;/li&gt;
&lt;li&gt;For cross-tenant queries, ensure all specified tenants are accessible.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more information, refer to 
    &lt;a href=&#34;/docs/tempo/latest/operations/multitenancy/&#34;&gt;Enable multi-tenancy&lt;/a&gt; and 
    &lt;a href=&#34;/docs/tempo/latest/configuration/tenant-ids/&#34;&gt;Tenant IDs&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;query-errors&#34;&gt;Query errors&lt;/h2&gt;
&lt;p&gt;These errors occur when there are issues with TraceQL queries or trace lookups.&lt;/p&gt;
&lt;h3 id=&#34;trace-not-found&#34;&gt;Trace not found&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;Trace not found&lt;/code&gt; or &lt;code&gt;trace ID not found&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The specified trace ID doesn&amp;rsquo;t exist in Tempo or has aged out of the configured retention period. Common reasons include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sampling:&lt;/strong&gt; Head or tail sampling in your instrumentation pipeline (Alloy, OpenTelemetry Collector) may have dropped the trace before it reached Tempo. This is the most common cause of missing traces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retention:&lt;/strong&gt; Traces are only available for the duration set in the Tempo retention configuration. For Grafana Cloud users, default retention periods apply unless you contact Support to change them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ingestion failure:&lt;/strong&gt; The trace may not have been successfully ingested due to rate limits, errors, or misconfigured pipelines.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Verify the trace ID is correct and complete.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check your sampling configuration in Alloy or OpenTelemetry Collector. If head or tail sampling is enabled, the trace may have been intentionally dropped. Refer to 
    &lt;a href=&#34;/docs/tempo/latest/set-up-for-tracing/instrument-send/set-up-collector/tail-sampling/&#34;&gt;Sampling strategies&lt;/a&gt; for guidance.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check that the trace is within the configured retention period for Tempo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If using time range restrictions, expand the time range in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/#traceid-query&#34;&gt;&lt;strong&gt;TraceID query&lt;/strong&gt; settings&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enable &lt;strong&gt;Use time range in query&lt;/strong&gt; in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/#traceid-query&#34;&gt;TraceID query settings&lt;/a&gt; and adjust the time shift values to search a broader range.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify the trace was successfully ingested by Tempo. You can run a broad query to check for recent traces:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;traceql&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-traceql&#34;&gt;{ } | count() &amp;gt; 0&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;If this returns results, traces are being ingested but your specific trace ID may have been dropped by sampling or aged out. For more query examples, refer to the &lt;a href=&#34;/docs/grafana-cloud/send-data/traces/traces-query-editor/traceql-cookbook/&#34;&gt;TraceQL cookbook&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For Grafana Cloud users, refer to &lt;a href=&#34;/docs/grafana-cloud/send-data/traces/troubleshoot/#traceql-and-search&#34;&gt;Troubleshoot TraceQL and search&lt;/a&gt; for TraceQL queries that can help investigate missing traces.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;traceql-syntax-errors&#34;&gt;TraceQL syntax errors&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;parse error&lt;/code&gt; or &lt;code&gt;unexpected token&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The TraceQL query contains syntax errors.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify the query follows 
    &lt;a href=&#34;/docs/tempo/latest/traceql/construct-traceql-queries/&#34;&gt;TraceQL syntax&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check that all braces, parentheses, and quotes are balanced.&lt;/li&gt;
&lt;li&gt;Ensure attribute names are correctly formatted with the correct scope. Use dot notation for span or resource attributes, for example, &lt;code&gt;span.http.status_code&lt;/code&gt; or &lt;code&gt;resource.service.name&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use the &lt;strong&gt;Search&lt;/strong&gt; query builder to generate valid TraceQL queries if you&amp;rsquo;re unfamiliar with the syntax.&lt;/li&gt;
&lt;li&gt;Verify operators are used correctly. Supported operators include &lt;code&gt;=&lt;/code&gt;, &lt;code&gt;!=&lt;/code&gt;, &lt;code&gt;=~&lt;/code&gt;, &lt;code&gt;!~&lt;/code&gt;, &lt;code&gt;&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;&lt;/code&gt;, &lt;code&gt;&amp;gt;=&lt;/code&gt;, &lt;code&gt;&amp;lt;=&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;query-returns-no-results&#34;&gt;Query returns no results&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The query is valid but doesn&amp;rsquo;t match any traces.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Expand the time range to search a broader period.&lt;/li&gt;
&lt;li&gt;Verify the attribute names and values exist in your traces.&lt;/li&gt;
&lt;li&gt;Check that the attribute names match exactly, as they&amp;rsquo;re case-sensitive.&lt;/li&gt;
&lt;li&gt;Use the &lt;strong&gt;Search&lt;/strong&gt; query builder to explore available attributes and values.&lt;/li&gt;
&lt;li&gt;Start with a broader query and progressively add filters to narrow results.&lt;/li&gt;
&lt;li&gt;Try 
    &lt;a href=&#34;/docs/grafana/v13.0/explore/simplified-exploration/traces/&#34;&gt;Grafana Traces Drilldown&lt;/a&gt;, a queryless app that lets you explore tracing data using RED metrics without writing TraceQL.&lt;/li&gt;
&lt;li&gt;Note that Tempo search is non-deterministic—identical queries can return different results because Tempo scans in parallel and returns the first matching traces. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/query-editor/&#34;&gt;Understand search behavior&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;Verify traces are being ingested into Tempo by querying for a known trace ID.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;traces-not-appearing-after-successful-connection&#34;&gt;Traces not appearing after successful connection&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; &lt;strong&gt;Save &amp;amp; test&lt;/strong&gt; succeeds, but running queries in Explore returns no traces. The data source connection is valid, but no trace data is reaching Tempo, or the queries don&amp;rsquo;t match any ingested data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that your applications are instrumented and that your collector (Alloy, OpenTelemetry Collector) is forwarding spans to Tempo. Check collector logs for send errors, rejected spans, or drops.&lt;/li&gt;
&lt;li&gt;For Grafana Cloud users who send traces with Alloy, refer to &lt;a href=&#34;/docs/grafana-cloud/send-data/traces/set-up/traces-with-alloy/#troubleshoot&#34;&gt;Troubleshoot sending traces with Alloy&lt;/a&gt; for ingestion-side issues.&lt;/li&gt;
&lt;li&gt;Confirm that the query time range covers the period when traces were generated. Trace data only appears for the window in which spans were ingested.&lt;/li&gt;
&lt;li&gt;For multi-tenant setups, verify that the &lt;code&gt;X-Scope-OrgID&lt;/code&gt; header is the same on both the write path (collector) and the read path (Grafana data source). A mismatch causes traces to be ingested under one tenant and queried under another.&lt;/li&gt;
&lt;li&gt;Try a broad query, for example, &lt;code&gt;{}&lt;/code&gt;, with a short, recent time range to confirm that any traces exist in Tempo. If this returns results, your original query filters are too narrow.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;query-timeout&#34;&gt;Query timeout&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;context deadline exceeded&lt;/code&gt; or &lt;code&gt;query timeout&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The query took too long to execute. Trace searches scan raw trace data across the selected time range, so broad queries over long periods can exceed timeout limits.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Reduce the time range to limit the amount of data scanned.&lt;/li&gt;
&lt;li&gt;Add more specific filters to narrow the search scope.&lt;/li&gt;
&lt;li&gt;Use indexed attributes in your queries when possible for faster lookups.&lt;/li&gt;
&lt;li&gt;For self-managed Tempo, increase the query timeout in the Tempo server configuration if appropriate.&lt;/li&gt;
&lt;li&gt;If you need aggregate data (rates, counts, durations) rather than individual traces, consider using 
    &lt;a href=&#34;/docs/tempo/latest/traceql/metrics-queries/&#34;&gt;TraceQL metrics queries&lt;/a&gt; (for example, &lt;code&gt;{ } | rate()&lt;/code&gt;) or pre-computed metrics from the 
    &lt;a href=&#34;/docs/tempo/latest/metrics-generator/&#34;&gt;metrics generator&lt;/a&gt;, which are optimized for aggregate workloads.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;traceql-metrics-query-fails&#34;&gt;TraceQL metrics query fails&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;localblocks processor not found&lt;/code&gt; or &lt;code&gt;metrics-generator not configured&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; TraceQL metrics queries (such as &lt;code&gt;{ } | rate()&lt;/code&gt; or &lt;code&gt;{ } | count_over_time()&lt;/code&gt;) require the &lt;code&gt;local-blocks&lt;/code&gt; processor to be active in the Tempo metrics-generator configuration. This processor is separate from the &lt;code&gt;service-graphs&lt;/code&gt; and &lt;code&gt;span-metrics&lt;/code&gt; processors and must be enabled independently.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;For self-managed Tempo, activate the &lt;code&gt;local-blocks&lt;/code&gt; processor in the overrides configuration. The configuration path depends on your Tempo version and deployment method:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Standard: &lt;code&gt;overrides.metrics_generator_processors: [&amp;quot;local-blocks&amp;quot;]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Newer versions and Helm: &lt;code&gt;overrides.defaults.metrics_generator.processors: [local-blocks]&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to 
    &lt;a href=&#34;/docs/tempo/latest/metrics-from-traces/metrics-queries/configure-traceql-metrics/&#34;&gt;Configure TraceQL metrics&lt;/a&gt; for setup steps and required configuration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For Grafana Cloud, the &lt;code&gt;local-blocks&lt;/code&gt; processor is enabled by default. If you still see this error, contact &lt;a href=&#34;/contact/&#34;&gt;Grafana Support&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify that the metrics generator is running and healthy by checking the Tempo metrics-generator logs for errors.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;streaming-issues&#34;&gt;Streaming issues&lt;/h2&gt;
&lt;p&gt;Streaming displays TraceQL query results as they become available. Without streaming, you don&amp;rsquo;t see results until the query completes. Streaming is available for Grafana Cloud users by default. For self-managed Tempo, search streaming requires Tempo v2.2 or later, and metrics streaming requires Tempo v2.7 or later. Both require &lt;code&gt;stream_over_http_enabled: true&lt;/code&gt; in the Tempo configuration.&lt;/p&gt;
&lt;p&gt;For more information, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/#streaming&#34;&gt;Streaming&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;streaming-not-working&#34;&gt;Streaming not working&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Results don&amp;rsquo;t appear incrementally and only display after the full query completes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;For self-managed Tempo, verify that you&amp;rsquo;re using the required Tempo version (v2.2 or later for search streaming, v2.7 or later for metrics streaming) and that streaming is enabled in your configuration (&lt;code&gt;stream_over_http_enabled: true&lt;/code&gt;). Refer to 
    &lt;a href=&#34;/docs/tempo/latest/api_docs/#tempo-grpc-api&#34;&gt;Tempo gRPC API&lt;/a&gt; in the Tempo documentation. Streaming is available for Grafana Cloud users by default.&lt;/li&gt;
&lt;li&gt;Verify that &lt;strong&gt;Streaming&lt;/strong&gt; is enabled in your 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/#streaming&#34;&gt;Tempo data source settings&lt;/a&gt;. The &lt;strong&gt;Search queries&lt;/strong&gt; and &lt;strong&gt;Metrics queries&lt;/strong&gt; toggles are independent—check that the toggle for the query type you&amp;rsquo;re using is enabled.&lt;/li&gt;
&lt;li&gt;If your Tempo instance is behind a load balancer or proxy that doesn&amp;rsquo;t support gRPC or HTTP2, streaming may not work. Disable streaming and use standard HTTP queries instead.&lt;/li&gt;
&lt;li&gt;If you&amp;rsquo;re using &lt;a href=&#34;/docs/grafana-cloud/connect-externally-hosted/private-data-source-connect/&#34;&gt;Private data source connect (PDC)&lt;/a&gt; to reach Tempo, verify that the PDC tunnel is running and the Tempo instance is reachable from the PDC agent. PDC connectivity issues can present as streaming timeouts.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;grpc-transport-security-error&#34;&gt;gRPC transport security error&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;rpc error: code = Unavailable desc = credentials require transport level security&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Grafana tries to use gRPC over an insecure (non-TLS) connection. Streaming uses gRPC, which may require TLS depending on your Tempo configuration.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Configure TLS between Grafana and Tempo. Refer to 
    &lt;a href=&#34;/docs/tempo/latest/configuration/network/tls/&#34;&gt;Configure TLS communication&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If TLS isn&amp;rsquo;t an option, disable streaming in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/#streaming&#34;&gt;Tempo data source settings&lt;/a&gt; and use standard HTTP queries instead.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;partial-results-or-streaming-errors&#34;&gt;Partial results or streaming errors&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;stream error&lt;/code&gt; or incomplete results during streaming&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The streaming connection was interrupted before all results were delivered.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check network stability between the browser and Grafana.&lt;/li&gt;
&lt;li&gt;Verify that proxies or load balancers aren&amp;rsquo;t terminating long-lived connections.&lt;/li&gt;
&lt;li&gt;Disable streaming and use standard queries if issues persist.&lt;/li&gt;
&lt;li&gt;Check Tempo server logs for any errors related to streaming.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;service-graph-issues&#34;&gt;Service graph issues&lt;/h2&gt;
&lt;p&gt;The Service Graph visualizes service dependencies and highlights request rate, error rate, and duration (RED metrics) across connections. It requires a linked Prometheus data source with service graph metrics generated by the Tempo metrics generator or Grafana Alloy. For more information, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/service-graph/&#34;&gt;Service Graph and Service Graph view&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;service-graph-not-displaying&#34;&gt;Service graph not displaying&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The Service Graph view shows no data or an empty graph.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Verify that a Prometheus data source is linked in the Tempo data source &lt;strong&gt;Service Graph&lt;/strong&gt; settings under 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/additional-settings/&#34;&gt;Additional settings&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For self-managed Tempo, check that the metrics generator is configured to produce service graph metrics. Refer to 
    &lt;a href=&#34;/docs/tempo/latest/metrics-generator/service-graph-view/&#34;&gt;Service graph metrics&lt;/a&gt; in the Tempo documentation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ensure the following service graph metrics exist in Prometheus:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;traces_service_graph_request_total&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;traces_service_graph_request_failed_total&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;traces_service_graph_request_server_seconds_sum&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify that Grafana Alloy or the Tempo metrics generator is configured to produce these metrics. These are distinct from span metrics (&lt;code&gt;traces_spanmetrics_*&lt;/code&gt;), which power the Service Graph view table.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;To verify the metrics exist, run the following query in Explore with your Prometheus data source selected:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;promql&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-promql&#34;&gt;{__name__=~&amp;#34;traces_service_graph_request.*&amp;#34;}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check the Prometheus data source connection is working.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For Grafana Cloud Traces users, refer to &lt;a href=&#34;/docs/grafana-cloud/send-data/traces/troubleshoot/#troubleshoot-service-graph-and-red-metrics&#34;&gt;Troubleshoot service graph and RED metrics&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;service-graph-view-table-is-empty&#34;&gt;Service Graph view table is empty&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The Service Graph node graph renders correctly, but the RED metrics table alongside it shows no data.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Service Graph view table uses a different set of metrics from the node graph. The Grafana frontend queries &lt;code&gt;traces_spanmetrics_calls_total&lt;/code&gt; and &lt;code&gt;traces_spanmetrics_latency_bucket&lt;/code&gt;. Confirm that these metrics exist in your linked Prometheus data source. Newer Tempo versions may produce &lt;code&gt;traces_spanmetrics_duration_seconds_bucket&lt;/code&gt; instead of &lt;code&gt;traces_spanmetrics_latency_bucket&lt;/code&gt;. If you only have the newer metric name, the duration column shows no data until the Grafana frontend supports the renamed metric.&lt;/li&gt;
&lt;li&gt;Verify that span metrics generation is enabled in your Tempo or Alloy configuration. Refer to 
    &lt;a href=&#34;/docs/tempo/latest/metrics-from-traces/service_graphs/enable-service-graphs/&#34;&gt;Enable service graphs&lt;/a&gt; in the Tempo documentation.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;high-cardinality-warnings&#34;&gt;High cardinality warnings&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Service graph or span metrics queries produce high-cardinality warnings or slow queries.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Review the label cardinality of your service graph and span metrics. High-cardinality labels (such as unique Pod names or request IDs) create many time series and degrade query performance.&lt;/li&gt;
&lt;li&gt;Refer to 
    &lt;a href=&#34;/docs/tempo/latest/metrics-from-traces/metrics-generator/cardinality/&#34;&gt;Cardinality&lt;/a&gt; in the Tempo documentation for guidance on managing label cardinality.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;service-graph-shows-incomplete-data&#34;&gt;Service graph shows incomplete data&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Some services or connections are missing from the graph.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that all services are instrumented and sending spans.&lt;/li&gt;
&lt;li&gt;Check that span names and service names are consistent.&lt;/li&gt;
&lt;li&gt;Ensure the time range includes data from all expected services.&lt;/li&gt;
&lt;li&gt;Verify the Prometheus data source has metrics for all services.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;trace-to-logsmetricsprofiles-issues&#34;&gt;Trace to logs/metrics/profiles issues&lt;/h2&gt;
&lt;p&gt;These issues relate to the correlation features that link traces to other telemetry signals. For configuration details, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/configure-trace-to-logs/&#34;&gt;Trace to logs&lt;/a&gt;, 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/configure-trace-to-metrics/&#34;&gt;Trace to metrics&lt;/a&gt;, and 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/configure-trace-to-profiles/&#34;&gt;Trace to profiles&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;trace-to-logs-link-not-appearing&#34;&gt;Trace to logs link not appearing&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Links to logs don&amp;rsquo;t appear when viewing a trace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that a Loki or other log data source is configured in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/configure-trace-to-logs/&#34;&gt;Trace to logs&lt;/a&gt; settings.&lt;/li&gt;
&lt;li&gt;Check that the configured tags exist in your spans.&lt;/li&gt;
&lt;li&gt;Ensure at least one mapped tag has a non-empty value in the span.&lt;/li&gt;
&lt;li&gt;If using a custom query, verify the query syntax is valid for the target data source.&lt;/li&gt;
&lt;li&gt;Check that &lt;strong&gt;Filter by trace ID&lt;/strong&gt; or &lt;strong&gt;Filter by span ID&lt;/strong&gt; aren&amp;rsquo;t enabled when using a custom query.&lt;/li&gt;
&lt;li&gt;If using &lt;strong&gt;Filter by trace ID&lt;/strong&gt; with Loki derived fields, verify that the derived field regular expression matches the trace ID field name used in your logs. Different instrumentation libraries use different field names (&lt;code&gt;traceID&lt;/code&gt;, &lt;code&gt;trace_id&lt;/code&gt;, or &lt;code&gt;traceId&lt;/code&gt;). Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/configure-trace-to-logs/&#34;&gt;Trace to logs&lt;/a&gt; for common regular expression patterns by instrumentation format.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;loki-log-lines-dont-show-a-trace-link&#34;&gt;Loki log lines don&amp;rsquo;t show a trace link&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The reverse direction—navigating from a Loki log line to a trace—isn&amp;rsquo;t working. No trace link appears on log lines.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that a derived field is configured in the Loki data source under &lt;strong&gt;Additional settings &amp;gt; Derived fields&lt;/strong&gt;. The derived field extracts the trace ID from log lines and creates a link to Tempo.&lt;/li&gt;
&lt;li&gt;Check that the derived field regular expression matches the trace ID format in your logs. Use &lt;strong&gt;Show example log message&lt;/strong&gt; in the derived field settings to test the regular expression against a sample log line.&lt;/li&gt;
&lt;li&gt;Confirm the &lt;strong&gt;Internal link&lt;/strong&gt; toggle is enabled and points to the correct Tempo data source.&lt;/li&gt;
&lt;li&gt;If different services use different trace ID field names, you need a separate derived field entry for each format. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/configure-trace-to-logs/&#34;&gt;Trace to logs&lt;/a&gt; for regular expression patterns by format.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;trace-to-metrics-link-not-appearing&#34;&gt;Trace to metrics link not appearing&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Links to metrics don&amp;rsquo;t appear when viewing a trace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that a Prometheus or other metrics data source is configured in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/configure-trace-to-metrics/&#34;&gt;Trace to metrics&lt;/a&gt; settings.&lt;/li&gt;
&lt;li&gt;Check that the configured tags exist in your spans.&lt;/li&gt;
&lt;li&gt;If using custom queries, verify they&amp;rsquo;re valid PromQL.&lt;/li&gt;
&lt;li&gt;Ensure the &lt;code&gt;$__tags&lt;/code&gt; variable is correctly placed in custom queries.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;trace-to-profiles-link-not-appearing&#34;&gt;Trace to profiles link not appearing&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Links to profiling data don&amp;rsquo;t appear when viewing a trace.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that a Grafana Pyroscope data source is configured in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/configure-trace-to-profiles/&#34;&gt;Trace to profiles&lt;/a&gt; settings.&lt;/li&gt;
&lt;li&gt;Check that the configured tags exist in your spans.&lt;/li&gt;
&lt;li&gt;Verify that the configured profile type matches what Pyroscope has data for (for example, &lt;code&gt;process_cpu:cpu:nanoseconds:cpu:nanoseconds&lt;/code&gt;). A mismatch between the configured profile type and the available data causes the link to not appear.&lt;/li&gt;
&lt;li&gt;Tighten the &lt;strong&gt;Span start time shift&lt;/strong&gt; and &lt;strong&gt;Span end time shift&lt;/strong&gt; values. Profiles are sampled at intervals, so a narrow time window around the span is more likely to match profile data than a wide one.&lt;/li&gt;
&lt;li&gt;Verify that the profiling data source is connected and returning data.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;links-appear-but-return-no-data&#34;&gt;Links appear but return no data&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The generated query doesn&amp;rsquo;t match any data in the target data source.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Adjust the &lt;strong&gt;Span start time shift&lt;/strong&gt; and &lt;strong&gt;Span end time shift&lt;/strong&gt; to widen the time range.&lt;/li&gt;
&lt;li&gt;Verify that log or metric labels match the span attributes.&lt;/li&gt;
&lt;li&gt;Check that the tag mappings correctly translate attribute names between data sources. Span attributes use dots (for example, &lt;code&gt;service.name&lt;/code&gt;) but Loki labels use underscores (for example, &lt;code&gt;service_name&lt;/code&gt;). Ensure tag mappings account for this difference. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/configure-trace-to-logs/&#34;&gt;Trace to logs&lt;/a&gt; for tag mapping configuration.&lt;/li&gt;
&lt;li&gt;If a tag like &lt;code&gt;pod&lt;/code&gt; is stored as Loki &lt;a href=&#34;/docs/loki/latest/get-started/labels/structured-metadata/&#34;&gt;structured metadata&lt;/a&gt; rather than an indexed label, the auto-generated stream selector &lt;code&gt;{pod=&amp;quot;...&amp;quot;}&lt;/code&gt; returns no results. Enable &lt;strong&gt;Use custom query&lt;/strong&gt; and move the tag to a pipeline filter. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/configure-trace-to-logs/&#34;&gt;Trace to logs&lt;/a&gt; for a custom query example.&lt;/li&gt;
&lt;li&gt;Run the generated query directly in the target data source&amp;rsquo;s Explore view to confirm it returns data outside of the trace context.&lt;/li&gt;
&lt;li&gt;Use the Query Inspector to view the generated query and verify it&amp;rsquo;s correct.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;performance-issues&#34;&gt;Performance issues&lt;/h2&gt;
&lt;p&gt;These issues relate to slow queries or high resource usage.&lt;/p&gt;
&lt;h3 id=&#34;slow-trace-queries&#34;&gt;Slow trace queries&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Queries take a long time to return results.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Reduce the dashboard or Explore time range.&lt;/li&gt;
&lt;li&gt;Add more specific filters to narrow the search scope.&lt;/li&gt;
&lt;li&gt;Use indexed attributes in TraceQL queries when possible.&lt;/li&gt;
&lt;li&gt;Enable streaming to see results as they become available.&lt;/li&gt;
&lt;li&gt;Consider using the &lt;strong&gt;Search&lt;/strong&gt; query builder which can help optimize queries.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;high-memory-usage-during-queries&#34;&gt;High memory usage during queries&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Large traces or result sets consume excessive memory.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Reduce the &lt;strong&gt;Limit&lt;/strong&gt; setting in query options to return fewer traces.&lt;/li&gt;
&lt;li&gt;Reduce the &lt;strong&gt;Span Limit&lt;/strong&gt; setting to return fewer spans per trace.&lt;/li&gt;
&lt;li&gt;Add filters to reduce the result set size.&lt;/li&gt;
&lt;li&gt;Avoid querying very large time ranges.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;other-common-issues&#34;&gt;Other common issues&lt;/h2&gt;
&lt;p&gt;The following issues don&amp;rsquo;t produce specific error messages but are commonly encountered.&lt;/p&gt;
&lt;h3 id=&#34;node-graph-not-displaying&#34;&gt;Node graph not displaying&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The node graph visualization doesn&amp;rsquo;t appear above the trace view.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that &lt;strong&gt;Node graph&lt;/strong&gt; is enabled in the Tempo data source settings under 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/additional-settings/&#34;&gt;Additional settings&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check that the trace contains multiple spans with parent-child relationships. Spans must include &lt;code&gt;traceID&lt;/code&gt; and &lt;code&gt;spanID&lt;/code&gt;, and non-root spans must include &lt;code&gt;parentSpanID&lt;/code&gt; to establish hierarchy. If these identifiers are missing, the trace data is incomplete at the instrumentation level and the graph can&amp;rsquo;t be rendered.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;autocomplete-not-working&#34;&gt;Autocomplete not working&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The TraceQL editor doesn&amp;rsquo;t show suggestions for attributes or values. Autocomplete requires Tempo to enumerate tags, which requires a supported storage backend (&lt;code&gt;vParquet&lt;/code&gt; or later).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;For self-managed Tempo, verify that the storage backend supports tag search. Tempo requires &lt;code&gt;vParquet&lt;/code&gt; format or later for tag-based search and autocomplete. Refer to 
    &lt;a href=&#34;/docs/tempo/latest/configuration/parquet/&#34;&gt;Parquet configuration&lt;/a&gt; for details. Grafana Cloud Traces supports autocomplete by default.&lt;/li&gt;
&lt;li&gt;Check the &lt;strong&gt;Tags time range&lt;/strong&gt; setting in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/additional-settings/&#34;&gt;data source settings&lt;/a&gt; to ensure it covers a period with recent trace data.&lt;/li&gt;
&lt;li&gt;Increase the &lt;strong&gt;Tag limit&lt;/strong&gt; setting if you have many unique attributes.&lt;/li&gt;
&lt;li&gt;Verify the Tempo data source connection is working by selecting &lt;strong&gt;Save &amp;amp; test&lt;/strong&gt; in the data source settings.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;data-source-settings-disappear-after-restart&#34;&gt;Data source settings disappear after restart&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; You configured settings in the Grafana UI (such as trace-to-logs links, service graph, or span time shifts), but they disappear after Grafana restarts. This happens when the data source is provisioned via a YAML configuration file, Helm chart, or Terraform. Provisioned data sources are read-only in the UI—any changes you make through the UI aren&amp;rsquo;t persisted and silently revert on the next restart.&lt;/p&gt;
&lt;p&gt;You can tell a data source is provisioned if the settings form is read-only and the button reads &lt;strong&gt;Test&lt;/strong&gt; instead of &lt;strong&gt;Save &amp;amp; test&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;To change settings permanently, edit the provisioning YAML file and restart Grafana (or wait for the provisioning system to reload). Any setting available in the UI can be set in the YAML file, including trace-to-logs, trace-to-metrics, and service graph configuration. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/provision/&#34;&gt;Provision the Tempo data source&lt;/a&gt; for the full YAML reference.&lt;/li&gt;
&lt;li&gt;For Grafana Cloud, you can clone the provisioned data source to create an editable copy that persists UI changes. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/provision/#clone-a-provisioned-data-source-for-grafana-cloud&#34;&gt;Clone a provisioned data source for Grafana Cloud&lt;/a&gt; for the steps.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;traceql-alerting-not-available&#34;&gt;TraceQL alerting not available&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; You can select the Tempo data source in the Grafana Alerting rule builder, but standard TraceQL search queries return trace data (spans and trace IDs), not numeric time series. Alert rules require numeric data to evaluate thresholds, so trace search queries don&amp;rsquo;t produce usable alert conditions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;TraceQL metrics queries (such as &lt;code&gt;{ } | rate()&lt;/code&gt; or &lt;code&gt;{ status = error } | count_over_time()&lt;/code&gt;) return numeric time series and can drive alert thresholds directly. However, TraceQL alerting requires the experimental &lt;code&gt;tempoAlerting&lt;/code&gt; feature flag, which is disabled by default. To enable it, set the 
    &lt;a href=&#34;/docs/grafana/v13.0/setup-grafana/configure-grafana/#feature_toggles&#34;&gt;&lt;code&gt;tempoAlerting&lt;/code&gt; feature flag&lt;/a&gt; in your Grafana configuration. For Grafana Cloud, contact Support to enable it. For step-by-step setup, refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/alerting/examples/trace-based-alerts/&#34;&gt;Trace-based alerts&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;The &lt;code&gt;tempoAlerting&lt;/code&gt; feature flag is experimental. For production alerting, consider the Prometheus-based approach described below.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Alternatively, use the Tempo metrics generator to produce Prometheus metrics from trace data, then create alert rules against the Prometheus data source that stores those metrics.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Configure the Tempo 
    &lt;a href=&#34;/docs/tempo/latest/metrics-generator/&#34;&gt;metrics generator&lt;/a&gt; (using the &lt;code&gt;service-graphs&lt;/code&gt;, &lt;code&gt;span-metrics&lt;/code&gt;, or &lt;code&gt;local-blocks&lt;/code&gt; processor) to produce metrics from traces and remote-write them to a Prometheus-compatible backend.&lt;/li&gt;
&lt;li&gt;Create alert rules against the Prometheus data source that receives those metrics. For example, alert on high error rates using &lt;code&gt;traces_spanmetrics_calls_total&lt;/code&gt; with a &lt;code&gt;status_code=&amp;quot;STATUS_CODE_ERROR&amp;quot;&lt;/code&gt; filter.&lt;/li&gt;
&lt;li&gt;Refer to the feature support table in the 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/&#34;&gt;Tempo data source overview&lt;/a&gt; for details on alerting support.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;switching-between-multiple-tempo-instances&#34;&gt;Switching between multiple Tempo instances&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; You have multiple Tempo data sources configured (for example, one per environment or per tenant), but there&amp;rsquo;s no built-in UI dropdown in Explore or dashboards to switch between them dynamically.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Workaround:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In dashboards, create a 
    &lt;a href=&#34;/docs/grafana/v13.0/dashboards/variables/add-template-variables/#add-a-data-source-variable&#34;&gt;data source template variable&lt;/a&gt; filtered to &lt;code&gt;tempo&lt;/code&gt; type. This adds a dropdown that lets viewers switch between Tempo instances without editing the dashboard.&lt;/li&gt;
&lt;li&gt;In Explore, use the data source picker in the top bar to switch between configured Tempo data sources.&lt;/li&gt;
&lt;li&gt;For multi-tenant setups on a single Tempo instance, consider using the &lt;code&gt;X-Scope-OrgID&lt;/code&gt; header instead of separate data sources. Refer to 
    &lt;a href=&#34;/docs/grafana/v13.0/datasources/tempo/configure-tempo-data-source/&#34;&gt;Multi-tenancy&lt;/a&gt; for configuration details.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;private-data-source-connect-issues-grafana-cloud-only&#34;&gt;Private data source connect issues (&lt;em&gt;Grafana Cloud only&lt;/em&gt;)&lt;/h2&gt;
&lt;p&gt;These issues relate to connecting to a private Tempo instance using Private data source connect (PDC). PDC is only available in Grafana Cloud.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;Private data source connect allows Grafana Cloud to securely connect to data sources in your private network without exposing them to the public internet. For setup instructions, refer to &lt;a href=&#34;/docs/grafana-cloud/connect-externally-hosted/private-data-source-connect/&#34;&gt;Private data source connect&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;pdc-agent-not-connected&#34;&gt;PDC agent not connected&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;No healthy PDC agents available&lt;/code&gt; or &lt;code&gt;Private data source connect agent not connected&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The PDC agent installed in your private network isn&amp;rsquo;t running or can&amp;rsquo;t connect to Grafana Cloud.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify the PDC agent is running in your private network.&lt;/li&gt;
&lt;li&gt;Check the PDC agent logs for connection errors.&lt;/li&gt;
&lt;li&gt;Ensure the PDC agent has outbound network access to Grafana Cloud endpoints.&lt;/li&gt;
&lt;li&gt;Verify the PDC agent is using the correct token for your Grafana Cloud instance.&lt;/li&gt;
&lt;li&gt;Check that firewall rules allow outbound HTTPS (port 443) connections from the PDC agent.&lt;/li&gt;
&lt;li&gt;Restart the PDC agent if it appears stuck or unresponsive.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more information, refer to &lt;a href=&#34;/docs/grafana-cloud/connect-externally-hosted/private-data-source-connect/&#34;&gt;Private data source connect&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;connection-through-pdc-failing&#34;&gt;Connection through PDC failing&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;Failed to connect through private data source&lt;/code&gt; or &lt;code&gt;Connection refused via PDC&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The PDC agent is connected to Grafana Cloud but cannot reach the Tempo instance in your private network.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify the Tempo URL is correct and accessible from the machine running the PDC agent.&lt;/li&gt;
&lt;li&gt;Check that the PDC agent can resolve the Tempo hostname (DNS resolution).&lt;/li&gt;
&lt;li&gt;Ensure there are no firewall rules blocking connections from the PDC agent to Tempo.&lt;/li&gt;
&lt;li&gt;Verify the Tempo port (default &lt;code&gt;3200&lt;/code&gt;) is open and accessible.&lt;/li&gt;
&lt;li&gt;Test connectivity from the PDC agent host to Tempo using &lt;code&gt;curl&lt;/code&gt; or &lt;code&gt;telnet&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;pdc-timeout-errors&#34;&gt;PDC timeout errors&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;Request timed out via private data source connect&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Queries through the PDC tunnel are timing out.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check network latency between the PDC agent and Tempo.&lt;/li&gt;
&lt;li&gt;Verify the PDC agent host has sufficient resources (CPU, memory, network bandwidth).&lt;/li&gt;
&lt;li&gt;Ensure no network devices between the PDC agent and Tempo are dropping long-running connections.&lt;/li&gt;
&lt;li&gt;For large queries, consider reducing the time range or adding more specific filters.&lt;/li&gt;
&lt;li&gt;Check if multiple data sources are sharing the same PDC agent, which may cause resource contention.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;pdc-authentication-mismatch&#34;&gt;PDC authentication mismatch&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Error message:&lt;/strong&gt; &lt;code&gt;Unauthorized&lt;/code&gt; or &lt;code&gt;403 Forbidden&lt;/code&gt; when using PDC&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; The authentication configured in the data source doesn&amp;rsquo;t work with the PDC connection.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Verify that authentication credentials are configured correctly in the Grafana Cloud data source settings.&lt;/li&gt;
&lt;li&gt;Check that the Tempo instance accepts the authentication method configured.&lt;/li&gt;
&lt;li&gt;Ensure any required headers (such as &lt;code&gt;X-Scope-OrgID&lt;/code&gt; for multi-tenant Tempo) are properly forwarded through PDC.&lt;/li&gt;
&lt;li&gt;Test the connection directly from the PDC agent host to verify credentials work outside of PDC.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;get-additional-help&#34;&gt;Get additional help&lt;/h2&gt;
&lt;p&gt;If you continue to experience issues after following this troubleshooting guide:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;For Grafana Cloud users, try &lt;a href=&#34;/docs/grafana-cloud/send-data/traces/investigate-traces-with-assistant/&#34;&gt;Grafana Assistant&lt;/a&gt; to investigate trace issues interactively (if enabled on your account).&lt;/li&gt;
&lt;li&gt;For Grafana Cloud users who send traces with Alloy, refer to the &lt;a href=&#34;/docs/grafana-cloud/send-data/traces/set-up/traces-with-alloy/#troubleshoot&#34;&gt;Alloy troubleshooting steps&lt;/a&gt; for ingestion-side issues.&lt;/li&gt;
&lt;li&gt;Ask questions in the &lt;a href=&#34;https://community.grafana.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana community forums&lt;/a&gt; or the &lt;a href=&#34;https://slack.grafana.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana Community Slack&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Review the &lt;a href=&#34;https://github.com/grafana/grafana/issues&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana GitHub issues&lt;/a&gt; for known bugs.&lt;/li&gt;
&lt;li&gt;Review the &lt;a href=&#34;https://github.com/grafana/tempo/issues&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tempo GitHub issues&lt;/a&gt; for Tempo-specific bugs.&lt;/li&gt;
&lt;li&gt;Enable 
    &lt;a href=&#34;/docs/grafana/v13.0/setup-grafana/configure-grafana/#log&#34;&gt;debug logging&lt;/a&gt; in Grafana to capture detailed error information.&lt;/li&gt;
&lt;li&gt;Check 
    &lt;a href=&#34;/docs/tempo/latest/operations/monitor/&#34;&gt;Tempo server logs&lt;/a&gt; for additional error details.&lt;/li&gt;
&lt;li&gt;Contact &lt;a href=&#34;/contact/&#34;&gt;Grafana Support&lt;/a&gt; if you&amp;rsquo;re an Enterprise, Cloud Pro, or Cloud Contracted user.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When reporting issues, include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grafana version&lt;/li&gt;
&lt;li&gt;Tempo version&lt;/li&gt;
&lt;li&gt;Error messages (redact sensitive information)&lt;/li&gt;
&lt;li&gt;Steps to reproduce&lt;/li&gt;
&lt;li&gt;TraceQL query examples (redact sensitive data)&lt;/li&gt;
&lt;li&gt;Relevant configuration settings&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="troubleshoot-tempo-data-source-issues">Troubleshoot Tempo data source issues&lt;/h1>
&lt;p>This document provides solutions to common issues you may encounter when configuring or using the Tempo data source in Grafana.&lt;/p></description></item></channel></rss>