<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Release notes on Grafana Labs</title><link>https://grafana.com/docs/tempo/v2.2.x/release-notes/</link><description>Recent content in Release notes on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/tempo/v2.2.x/release-notes/index.xml" rel="self" type="application/rss+xml"/><item><title>Version 2.2 release notes</title><link>https://grafana.com/docs/tempo/v2.2.x/release-notes/v2-2/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/tempo/v2.2.x/release-notes/v2-2/</guid><content><![CDATA[&lt;h1 id=&#34;version-22-release-notes&#34;&gt;Version 2.2 release notes&lt;/h1&gt;
&lt;p&gt;The Tempo team is pleased to announce the release of Tempo 2.2.&lt;/p&gt;
&lt;p&gt;This release gives you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Major additions to the TraceQL language: structural operators (descendant, child, sibling), results grouped by attribute (&lt;code&gt;by()&lt;/code&gt;), a &lt;code&gt;select&lt;/code&gt; operator, and 3 new intrinsic attributes.&lt;/li&gt;
&lt;li&gt;Faster TraceQL results, thanks to a streaming endpoint that returns partial results as the query executes as well as a multitude of performance-related improvements.&lt;/li&gt;
&lt;li&gt;An experimental metrics-summary API that returns RED metrics for recently received spans grouped by your attribute of choice.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tempo 2.2 makes vParquet2, a Parquet version designed to be more compatible with other Parquet implementations, the default block format. This block format is required for using structural operators and improves query performance relative to previous formats.&lt;/p&gt;
&lt;p&gt;Read the &lt;a href=&#34;/blog/2023/08/02/grafana-tempo-2.2-release-traceql-structural-operators-are-here/&#34;&gt;Tempo 2.2 blog post&lt;/a&gt; for more examples and details about these improvements.&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;For a complete list of changes, enhancements, and bug fixes refer to the &lt;a href=&#34;https://github.com/grafana/tempo/releases/tag/v2.2.0&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tempo 2.2 changelog&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;features-and-enhancements&#34;&gt;Features and enhancements&lt;/h2&gt;
&lt;p&gt;Some of the most important features and enhancements in Tempo 2.2 are highlighted below.&lt;/p&gt;
&lt;h3 id=&#34;expanding-the-traceql-language&#34;&gt;Expanding the TraceQL language&lt;/h3&gt;
&lt;p&gt;With this release, we’ve added to the &lt;a href=&#34;../../traceql/&#34;&gt;TraceQL language&lt;/a&gt;.
TraceQL now offers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Structural operators: descendant (&amp;raquo;), child (&amp;gt;), and sibling (~) (&lt;a href=&#34;../../traceql/#structural&#34;&gt;documentation&lt;/a&gt;). Find relevant traces based on their structure and relationships among spans. [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2625&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#2625&lt;/a&gt; &lt;a href=&#34;https://github.com/grafana/tempo/pull/2660&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#2660&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;select()&lt;/code&gt; operation that allows you to specify arbitrary span attributes that you want included in the TraceQL response (&lt;a href=&#34;../../traceql/#selection&#34;&gt;documentation&lt;/a&gt;) [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2494&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2494&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;by()&lt;/code&gt; operation that groups span sets within a trace by an attribute of your choosing. This operation is not supported in the Grafana UI yet; you can only use &lt;code&gt;by()&lt;/code&gt; when querying Tempo’s search API directly. (&lt;a href=&#34;../../traceql/#grouping&#34;&gt;documentation&lt;/a&gt;  [PR  &lt;a href=&#34;https://github.com/grafana/tempo/pull/2490&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2490&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;New intrinsic attributes for use in TraceQL queries: &lt;code&gt;traceDuration&lt;/code&gt;, &lt;code&gt;rootName&lt;/code&gt;, and &lt;code&gt;rootServiceName&lt;/code&gt; (&lt;a href=&#34;../../traceql/&#34;&gt;documentation&lt;/a&gt;) [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2503&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#2503&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Read the &lt;a href=&#34;/blog/2023/08/02/grafana-tempo-2.2-release-traceql-structural-operators-are-here/&#34;&gt;Tempo 2.2 blog post&lt;/a&gt; for examples of how to use these new language additions.&lt;/p&gt;
&lt;p&gt;To learn more about the TraceQL syntax, see the &lt;a href=&#34;../../traceql/&#34;&gt;TraceQL documentation&lt;/a&gt;.
For information on planned future extensions to the TraceQL language, see &lt;a href=&#34;../../traceql/architecture/&#34;&gt;future work&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;get-traceql-results-faster&#34;&gt;Get TraceQL results faster&lt;/h3&gt;
&lt;p&gt;We’re always trying to reduce the time you spend waiting to get results to your TraceQL queries, and we’ve made some nice progress on this front with this release.&lt;/p&gt;
&lt;p&gt;We’ve added a &lt;a href=&#34;https://grpc.io/docs/what-is-grpc/core-concepts/#bidirectional-streaming-rpc&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;GRPC streaming&lt;/a&gt; endpoint to Tempo’s query frontend that allows a client to stream search results from Tempo. The Tempo CLI has been updated to use this new streaming endpoint [PR  &lt;a href=&#34;https://github.com/grafana/tempo/pull/2366&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#2366&lt;/a&gt;] . As of version 10.1, Grafana supports it as well, though you must first enable the &lt;code&gt;traceQLStreaming&lt;/code&gt; feature toggle [PR &lt;a href=&#34;https://github.com/grafana/grafana/pull/72288&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#72288&lt;/a&gt;].&lt;/p&gt;
&lt;p&gt;By streaming results to the client, you can start to look at traces matching your query before the entire query completes. This is particularly helpful for long-running queries; while the total time to complete the query is the same, you can start looking at your first matches before the full set of matched traces is returned.&lt;/p&gt;
&lt;p&gt;In addition to streaming partial results, we’ve merged a number of improvements to speed up TraceQL queries. Here are just a few:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add support for query batching between frontend and queriers to improve throughput [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2677&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2677&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Improve performance of TraceQL regex [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2484&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2484&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Fully skip over Parquet row groups with no matches in the column dictionaries [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2676&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2676&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;New synchronous read mode for vParquet and vParquet2 [PRs &lt;a href=&#34;https://github.com/grafana/tempo/pull/2165&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2165&lt;/a&gt;, &lt;a href=&#34;https://github.com/grafana/tempo/pull/2535&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2535&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Improved TraceQL throughput by asynchronously creating jobs. [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2530&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2530&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;metrics-summary-api-experimental&#34;&gt;Metrics summary API (experimental)&lt;/h3&gt;
&lt;p&gt;Tempo has added an experimental API that returns RED metrics (span count, erroring span count, and latency information) for spans of &lt;code&gt;kind=server&lt;/code&gt; sent in the last hour, grouped by an attribute of your choice.
For example, you could use this API to compare error rates of spans with different values of the &lt;code&gt;namespace&lt;/code&gt; attribute.
From here, you might see that spans from &lt;code&gt;namespace=A&lt;/code&gt; have a significantly higher error rate than those from &lt;code&gt;namespace=B&lt;/code&gt;.
As another example, you could use this API to compare latencies of your spans broken down by the &lt;code&gt;region&lt;/code&gt; attribute.
From here, you might notice that spans from &lt;code&gt;region=North-America&lt;/code&gt; have higher latencies than those from &lt;code&gt;region=Asia-Pacific&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This API is meant to enable ad-hoc analysis of your incoming spans; by segmenting your spans by attribute and looking for differences in RED metrics, you can more quickly isolate where problems like elevated error rates or higher latencies are coming from.&lt;/p&gt;
&lt;p&gt;Unlike RED metrics computed by Tempo’s [metrics-generator]((../../metrics-generator/), the values returned by this API are not persisted as time series. This has the advantage that you do not need to provide your own time series databases for storing and querying these metrics. It also allows you to compute RED metrics broken down by high cardinality attributes that would be too expensive to store in a time series database. Use the metrics generator if you want to store and visualize RED metrics over multi-hour or multi-day time ranges, or you want to alert on these metrics.&lt;/p&gt;
&lt;p&gt;To learn more about this API, refer to the &lt;a href=&#34;../../api_docs/metrics-summary/&#34;&gt;metrics summary API documentation.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This work is represented in multiple PRs: &lt;a href=&#34;https://github.com/grafana/tempo/pull/2368&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2368&lt;/a&gt;, &lt;a href=&#34;https://github.com/grafana/tempo/pull/2418&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2418&lt;/a&gt;, &lt;a href=&#34;https://github.com/grafana/tempo/pull/2424&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2424&lt;/a&gt;, &lt;a href=&#34;https://github.com/grafana/tempo/pull/2442&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2442&lt;/a&gt;, &lt;a href=&#34;https://github.com/grafana/tempo/pull/2480&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2480&lt;/a&gt;, &lt;a href=&#34;https://github.com/grafana/tempo/pull/2481&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2481&lt;/a&gt;, &lt;a href=&#34;https://github.com/grafana/tempo/pull/2501&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2501&lt;/a&gt;, &lt;a href=&#34;https://github.com/grafana/tempo/pull/2579&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2579&lt;/a&gt;, and &lt;a href=&#34;https://github.com/grafana/tempo/pull/2582&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2582&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;other-enhancements&#34;&gt;Other enhancements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Tempo’s &lt;a href=&#34;../../api_docs/#search-tag-values&#34;&gt;tag values&lt;/a&gt; and &lt;a href=&#34;../../api_docs/#search-tags&#34;&gt;tag names&lt;/a&gt; APIs now support filtering [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2253&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2253&lt;/a&gt;]. This lets you retrieve all valid attribute values and names given certain criteria. For example, you can get a list of values for the attribute &lt;code&gt;namespace&lt;/code&gt; seen on spans with attribute &lt;code&gt;resource=A.&lt;/code&gt; This feature is off by default; to enable, configure &lt;code&gt;autocomplete_filtering_enabled&lt;/code&gt;. (&lt;a href=&#34;../../api_docs/&#34;&gt;documentation&lt;/a&gt;). Grafana’s autocomplete can make use of this filtering capability to provide better suggestions starting in v10.2 &lt;a href=&#34;https://github.com/grafana/grafana/pull/67845&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR [67845]&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tempo’s metrics-generator now supports span filtering. Setting up filters allows you to compute metrics over the specific spans you care about, excluding others. It also can reduce the cardinality of generated metrics, and therefore the cost of storing those metrics in a Prometheus-compatible TSDB. (&lt;a href=&#34;../../metrics-generator/span_metrics/#filtering&#34;&gt;documentation&lt;/a&gt;) [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2274&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2274&lt;/a&gt;]&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tempo’s metrics-generator can now detect virtual nodes (&lt;a href=&#34;../../metrics-generator/service_graphs/#virtual-nodes&#34;&gt;documentation&lt;/a&gt;) [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2365&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2365&lt;/a&gt;]. As a result, you’ll now see these virtual nodes represented in your service graph. For more information, refer to the &lt;a href=&#34;../../metrics-generator/service_graphs/#virtual-nodes&#34;&gt;virtual nodes documentation&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;upgrade-considerations&#34;&gt;Upgrade considerations&lt;/h2&gt;
&lt;p&gt;When &lt;a href=&#34;../../setup/upgrade/&#34;&gt;upgrading&lt;/a&gt; to Tempo 2.2, be aware of these breaking changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JSonnet users only: We&amp;rsquo;ve converted the metrics-generator component from a k8s deployment to a k8s statefulset. Refer to the PR for seamless migration instructions. [PRs &lt;a href=&#34;https://github.com/grafana/tempo/pull/2533&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#2533&lt;/a&gt;, &lt;a href=&#34;https://github.com/grafana/tempo/pull/2647&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#2467&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Removed or renamed configuration parameters (see section below)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While not a breaking change, upgrading to Tempo 2.2 will by default change Tempo’s block format to vParquet2.
To stay on a previous block format, read the &lt;a href=&#34;../../configuration/parquet/#choose-a-different-block-format&#34;&gt;Parquet configuration documentation&lt;/a&gt;.
We strongly encourage upgrading to vParquet2 as soon as possible as this is required for using structural operators in your TraceQL queries and provides query performance improvements, in particular on queries using the &lt;code&gt;duration&lt;/code&gt; intrinsic.&lt;/p&gt;
&lt;h3 id=&#34;removed-or-renamed-configuration-parameters&#34;&gt;Removed or renamed configuration parameters&lt;/h3&gt;
&lt;p&gt;The following fields were removed or renamed.&lt;/p&gt;
&lt;table&gt;
  &lt;tr&gt;
   &lt;td&gt;Parameter
   &lt;/td&gt;
   &lt;td&gt;Comments
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt; ```&lt;/code&gt;
&lt;p&gt;
&lt;code&gt;  query_frontend:&lt;/code&gt;
&lt;p&gt;
&lt;code&gt;    tolerate_failed_blocks: &amp;lt;int&gt;&lt;/code&gt;
&lt;p&gt;
&lt;code&gt;  ```&lt;/code&gt;
   &lt;/td&gt;
   &lt;td&gt;Remove support for `tolerant_failed_blocks` [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2416&#34;&gt;2416&lt;/a&gt;]
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;```&lt;/code&gt;
&lt;p&gt;
&lt;code&gt;storage:&lt;/code&gt;
&lt;p&gt;
&lt;code&gt;  trace:&lt;/code&gt;
&lt;p&gt;
&lt;code&gt;    s3:&lt;/code&gt;
&lt;p&gt;
&lt;code&gt;      insecure_skip_verify: true   // renamed to tls_insecure_skip_verify&lt;/code&gt;
&lt;p&gt;
&lt;code&gt;```&lt;/code&gt;
   &lt;/td&gt;
   &lt;td&gt;Renamed `insecure_skip_verify` to `tls_insecure_skip_verify` [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2407&#34;&gt;2407&lt;/a&gt;]
   &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;h2 id=&#34;bug-fixes&#34;&gt;Bug fixes&lt;/h2&gt;
&lt;p&gt;For a complete list, refer to the &lt;a href=&#34;https://github.com/grafana/tempo/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tempo changelog&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;224&#34;&gt;2.2.4&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Alpine image version to 3.18 to patch &lt;a href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2022-48174&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;CVE-2022-48174&lt;/a&gt; &lt;a href=&#34;https://github.com/grafana/tempo/pull/3046&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 3046&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Bumped Jaeger query docker image to 1.50.0 &lt;a href=&#34;https://github.com/grafana/tempo/pull/2998&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2998&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;223&#34;&gt;2.2.3&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed S3 credentials providers configuration &lt;a href=&#34;https://github.com/grafana/tempo/pull/2889&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2889&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;222&#34;&gt;2.2.2&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed node role auth IDMSv1 &lt;a href=&#34;https://github.com/grafana/tempo/pull/2760&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2760&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;221&#34;&gt;2.2.1&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed incorrect metrics for index failures &lt;a href=&#34;https://github.com/grafana/tempo/pull/2781&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2781&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fixed a panic in the metrics-generator when using multiple tenants with default overrides &lt;a href=&#34;https://github.com/grafana/tempo/pull/2786&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2786&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Restored &lt;code&gt;tenant_header_key&lt;/code&gt; removed in &lt;a href=&#34;https://github.com/grafana/tempo/pull/2414&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2414&lt;/a&gt; &lt;a href=&#34;https://github.com/grafana/tempo/pull/2795&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2786&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Disabled streaming over HTTP by default &lt;a href=&#34;https://github.com/grafana/tempo/pull/2803&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2803&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;22&#34;&gt;2.2&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed an issue in the metrics-generator that prevented scaling up parallelism when remote writing of metrics was lagging behind [PR &lt;a href=&#34;https://github.com/grafana/tempo/issues/2463&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2463&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Fixed an issue where metrics-generator was setting wrong labels for &lt;code&gt;traces_target_info&lt;/code&gt; [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2546&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2546&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Fixed an issue where matches and other spanset level attributes were not persisted to the TraceQL results. [PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2490&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2490&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;Fixed an issue where ingester search could occasionally fail with &lt;code&gt;file does not exist&lt;/code&gt; error [PR &lt;a href=&#34;https://github.com/grafana/tempo/issues/2534&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2534&lt;/a&gt;]&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="version-22-release-notes">Version 2.2 release notes&lt;/h1>
&lt;p>The Tempo team is pleased to announce the release of Tempo 2.2.&lt;/p>
&lt;p>This release gives you:&lt;/p>
&lt;ul>
&lt;li>Major additions to the TraceQL language: structural operators (descendant, child, sibling), results grouped by attribute (&lt;code>by()&lt;/code>), a &lt;code>select&lt;/code> operator, and 3 new intrinsic attributes.&lt;/li>
&lt;li>Faster TraceQL results, thanks to a streaming endpoint that returns partial results as the query executes as well as a multitude of performance-related improvements.&lt;/li>
&lt;li>An experimental metrics-summary API that returns RED metrics for recently received spans grouped by your attribute of choice.&lt;/li>
&lt;/ul>
&lt;p>Tempo 2.2 makes vParquet2, a Parquet version designed to be more compatible with other Parquet implementations, the default block format. This block format is required for using structural operators and improves query performance relative to previous formats.&lt;/p></description></item><item><title>Version 2.1 release notes</title><link>https://grafana.com/docs/tempo/v2.2.x/release-notes/v2-1/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/tempo/v2.2.x/release-notes/v2-1/</guid><content><![CDATA[&lt;h1 id=&#34;version-21-release-notes&#34;&gt;Version 2.1 release notes&lt;/h1&gt;
&lt;p&gt;The Tempo team is pleased to announce the release of Tempo 2.1.&lt;/p&gt;
&lt;p&gt;With this release, Tempo enhances TraceQL so you can select traces using features such as span kind, aribtrary arithmetic, and new aggregates min/max/sum. In addition, Tempo 2.1 introduces vParquet2, a new experimental Parquet version designed to be more compatible with other Parquet implementations.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: For a complete list of changes and enhancements, refer to the &lt;a href=&#34;https://github.com/grafana/tempo/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tempo 2.1 changelog&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;features-and-enhancements&#34;&gt;Features and enhancements&lt;/h2&gt;
&lt;p&gt;Some of the most important features and enhancements in Tempo 2.1 are highlighted below.&lt;/p&gt;
&lt;h3 id=&#34;enhancements-to-traceql&#34;&gt;Enhancements to TraceQL&lt;/h3&gt;
&lt;p&gt;Inspired by PromQL and LogQL, TraceQL is a query language designed for selecting traces in Tempo. TraceQL makes it possible to find traces that otherwise would have been difficult or even impossible to identify with Tempo’s 1.x search.&lt;/p&gt;
&lt;p&gt;With this release, we’ve expanded the TraceQL language. In Tempo 2.0, TraceQL allowed users to select traces based upon resource attributes, time, duration, and basic aggregates. In Tempo 2.1, users can also select traces based on the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enable querying by &lt;code&gt;kind&lt;/code&gt;, an intrinsic attribute  (PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2217&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2217&lt;/a&gt;)
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{ kind = server }&lt;/code&gt;, &lt;code&gt;{ kind = client }&lt;/code&gt;, &lt;code&gt;{ kind = consumer }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{ kind = server &amp;amp;&amp;amp; duration &amp;gt; 1s }&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Support arithmetic expressions (PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2146&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2146&lt;/a&gt;)
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{ span.bytesProcessed &amp;gt; 10 * 1024 * 1024 }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{ span.bytesProcessed / 1024 / 1024 &amp;gt; 10 }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{ span.jobs / span.bytes &amp;gt; 3 }&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Enable min, max, and sum aggregate filters
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{} | min(duration) &amp;gt; 1s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{} | max(span.bytesProcessed) &amp;amp;lt; 1024 * 1024&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{} | sum(duration) &amp;gt; 1h&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Support for more numeric types: Compare floating point numbers and integers, allow floating point numbers for durations, and support negative numbers when doing aggregate filters. (PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2139&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2139&lt;/a&gt;, &lt;a href=&#34;https://github.com/grafana/tempo/pull/2304&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2304&lt;/a&gt;, &lt;a href=&#34;https://github.com/grafana/tempo/pull/2289&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2289&lt;/a&gt;)
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;{ 1 = 1.0 }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{ duration &amp;gt; 1.5s }&lt;/code&gt;, &lt;code&gt;{duration &amp;gt; 1s500ms }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{} | count() &amp;gt; -1&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This update also includes major performance improvements to TraceQL query performance. [&lt;a href=&#34;https://github.com/grafana/tempo/pull/2119&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2119&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;To learn more about the TraceQL syntax, see the &lt;a href=&#34;/docs/tempo/latest/traceql/&#34;&gt;TraceQL documentation&lt;/a&gt;. For information on planned future extensions to the TraceQL language, see &lt;a href=&#34;/docs/tempo/latest/traceql/architecture/&#34;&gt;future work&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;traceql-query-editor-improvements-experimental&#34;&gt;TraceQL query editor improvements (experimental)&lt;/h3&gt;
&lt;p&gt;Starting in Grafana 9.5, users have access to a Tempo Search tab powered by TraceQL. To enable this feature, use Grafana’s &lt;code&gt;traceqlSearch&lt;/code&gt; feature flag.  The editor can autocomplete queries and has a streamlined interface.&lt;/p&gt;
&lt;p&gt;Grafana will soon include a new Search screen that can build a TraceQL query based upon options selected in drop-downs. Contact Support to enable this feature in Grafana Cloud.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/tempo/traceql/screenshot-explore-traceql-search.png&#34;
  alt=&#34;A TraceQL search constructed by selecting options&#34; width=&#34;784&#34;
     height=&#34;512&#34;/&gt;&lt;/p&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&#34;/docs/tempo/latest/traceql/query-editor/&#34;&gt;TraceQL query editor documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;vparquet2-experimental&#34;&gt;vParquet2 (experimental)&lt;/h3&gt;
&lt;p&gt;Tempo 2.1 offers an experimental update to the Parquet backend: &lt;code&gt;vParquet2&lt;/code&gt;. Due to the dedicated span duration column, there is a performance gain for TraceQL queries containing duration. vParquet2 will also be a prerequisite for TraceQL&amp;rsquo;s structural operators, which will be introduced in a future release. [&lt;a href=&#34;https://github.com/grafana/tempo/pull/2244&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2244&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;You can select the block format Tempo uses by changing the block format version option. To use the new format, set the block format to &lt;code&gt;vParquet2&lt;/code&gt;. For more information, read the &lt;a href=&#34;../../configuration/parquet/#choose-a-different-block-format&#34;&gt;Parquet configuration documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The new encoding implements Parquet schema changes that are not compatible with &lt;code&gt;vParquet&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Renamed columns to make the schema more consistent and closer to names and terminologies used by OTEL&lt;/li&gt;
&lt;li&gt;Add a dedicated span column for duration&lt;/li&gt;
&lt;li&gt;Additional columns that will enable new TraceQL features, including hierarchical queries&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;other-enhancements-and-features&#34;&gt;Other enhancements and features&lt;/h3&gt;
&lt;p&gt;For a complete list, refer to the &lt;a href=&#34;https://github.com/grafana/tempo/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tempo 2.1 changelog&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2105&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2105&lt;/a&gt; Log when a trace is too large to compact. Traces are dropped when they exceed a certain limit set in the ingesters. Any dropped traces are now logged with the number of dropped spans and the trace ID.&lt;/li&gt;
&lt;li&gt;PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2195&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2195&lt;/a&gt; Add support for Azure Workload Identity authentication&lt;/li&gt;
&lt;li&gt;PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2130&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2130&lt;/a&gt; Add command to  tempo-cli to migrate a tenant&lt;/li&gt;
&lt;li&gt;PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2093&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2093&lt;/a&gt; Add support for s3 session token in static configuration&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;upgrade-considerations&#34;&gt;Upgrade considerations&lt;/h2&gt;
&lt;p&gt;When &lt;a href=&#34;../../setup/upgrade/&#34;&gt;upgrading&lt;/a&gt; to Tempo 2.1, be aware of these breaking changes.&lt;/p&gt;
&lt;h3 id=&#34;breaking-changes-to-metric-names-exposed-by-tempo&#34;&gt;Breaking changes to metric names exposed by Tempo&lt;/h3&gt;
&lt;p&gt;All Prometheus metrics exposed by Tempo on its &lt;code&gt;/metrics&lt;/code&gt; endpoint that were previously prefixed  with &lt;code&gt;cortex_&lt;/code&gt; have now been renamed to be prefixed with &lt;code&gt;tempo_&lt;/code&gt; instead. (PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2204&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2204&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Tempo now includes SLO metrics to count where queries are returned within a configurable time range. (PR &lt;a href=&#34;https://github.com/grafana/tempo/pull/2008&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;2008&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;query_frontend_result_metrics_inspected_bytes&lt;/code&gt; metric was removed in favor of &lt;code&gt;query_frontend_bytes_processed_per_second&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;remove-support-for-search-on-v2-blocks&#34;&gt;Remove support for Search on v2 blocks&lt;/h3&gt;
&lt;p&gt;Users can no longer search blocks in v2 format. Only vParquet and vParquet2 formats support search. The following search configuration options were removed from the overrides section:&lt;/p&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;overrides:
  max_search_bytes_per_trace:
  search_tags_allow_list:
  search_tags_deny_list:&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The following metrics configuration was also removed:&lt;/p&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;tempo_ingester_trace_search_bytes_discarded_total&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This change means that if you upgrade directly from 1.9 to 2.1, you will not be able to search your v2 blocks.
One way to avoid this is to upgrade to 2.0 first, since 2.0 supports searching both v2 and vParquet blocks.
You can let your old v2 blocks gradually age out while Tempo creates new vParquet blocks from incoming traces.
Once all of your v2 blocks have been deleted and you only have vParquet format-blocks, you can upgrade to Tempo 2.1.
All of your blocks will be searchable.&lt;/p&gt;
&lt;p&gt;Finally, parquet files are no longer cached when carrying out searches (&lt;a href=&#34;https://github.com/grafana/tempo/pull/2164&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2164&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id=&#34;bug-fixes&#34;&gt;Bug fixes&lt;/h2&gt;
&lt;p&gt;For a complete list, refer to the &lt;a href=&#34;https://github.com/grafana/tempo/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tempo 2.1 changelog&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;211&#34;&gt;2.1.1&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/issues/2400&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2400&lt;/a&gt; Fixed issue where Tempo sometimes flips booleans from false-&amp;gt;true at storage time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;21&#34;&gt;2.1&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2220&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2220&lt;/a&gt; Correctly connect context during compaction&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2081&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2081&lt;/a&gt;  Apply &lt;code&gt;rate()&lt;/code&gt; to the bytes/s panel in the tenant&amp;rsquo;s dashboard.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2111&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2111&lt;/a&gt; Retry copy operations during compaction in GCS backend.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2164&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2164&lt;/a&gt; Improve locking and search head block in SearchTagValuesV2&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2152&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2152&lt;/a&gt;  Fix not closing WAL block file before attempting to delete the folder.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2219&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2219&lt;/a&gt; Stop searching for virtual tags if there are any hits. This prevents invalid values from showing up for intrinsics like &lt;code&gt;status&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2254&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2254&lt;/a&gt; Correctly return unique spans when &amp;amp;&amp;amp;ing and ||ing spansets.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="version-21-release-notes">Version 2.1 release notes&lt;/h1>
&lt;p>The Tempo team is pleased to announce the release of Tempo 2.1.&lt;/p>
&lt;p>With this release, Tempo enhances TraceQL so you can select traces using features such as span kind, aribtrary arithmetic, and new aggregates min/max/sum. In addition, Tempo 2.1 introduces vParquet2, a new experimental Parquet version designed to be more compatible with other Parquet implementations.&lt;/p></description></item><item><title>Version 2.0 release notes</title><link>https://grafana.com/docs/tempo/v2.2.x/release-notes/v2-0/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/tempo/v2.2.x/release-notes/v2-0/</guid><content><![CDATA[&lt;h1 id=&#34;version-20-release-notes&#34;&gt;Version 2.0 release notes&lt;/h1&gt;
&lt;p&gt;The Tempo team is pleased to announce the newest major release of Tempo: version 2.0!&lt;/p&gt;
&lt;p&gt;Tempo 2.0’s headline feature is the introduction of TraceQL. TraceQL is a query language modeled on PromQL and LogQL that allows you to interactively extract insights from your trace data. It provides a powerful, flexible way to pinpoint the traces you need to answer questions about your systems and analyze traces based on their structure.&lt;/p&gt;
&lt;p&gt;Continuing in the tradition of Tempo’s close integration with Grafana as a visualization layer, we’ve also added a TraceQL query editor to Grafana’s Tempo data source. The editor is available in Grafana Cloud and for open source users in Grafana 9.3.2. We encourage open source users to upgrade to Grafana 9.4 as soon as it is released to take advantage of some additional enhancements and bug fixes.&lt;/p&gt;
&lt;p&gt;In addition to TraceQL, Tempo 2.0 also marks the promotion of the Apache Parquet block format to the new default storage format. With this change, the Tempo maintainers are signaling that this new format has received enough testing to be ready for broad adoption.&lt;/p&gt;
&lt;p&gt;These two changes actually go hand-in-hand: without the increased search speed enabled by the Apache Parquet block format, it would be impossible to pull off the sophisticated queries made possible by TraceQL.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: For a complete list of changes and enhancements, refer to the &lt;a href=&#34;https://github.com/grafana/tempo/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tempo 2.0 changelog&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;features-and-enhancements&#34;&gt;Features and enhancements&lt;/h2&gt;
&lt;p&gt;Some of the most important features and enhancements in Tempo 2.0 are highlighted below.&lt;/p&gt;
&lt;h3 id=&#34;traceql-the-trace-query-language&#34;&gt;TraceQL, the trace query language&lt;/h3&gt;
&lt;p&gt;Inspired by PromQL and LogQL, TraceQL is a query language designed for selecting traces in Tempo. TraceQL makes it possible to find traces that otherwise would have been difficult or even impossible to identify with Tempo&amp;rsquo;s existing search. It also makes it possible for you to understand the broad context for an event sequence.
To understand more about why we built TraceQL and the use cases we think it unlocks, see &lt;a href=&#34;/blog/2022/11/30/traceql-a-first-of-its-kind-query-language-to-accelerate-trace-analysis-in-tempo-2.0/&#34;&gt;our blog post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With this release, we’ve implemented a subset of the full TraceQL language we envision. Users can select traces based on the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Span and resource attributes, timing, and duration&lt;/li&gt;
&lt;li&gt;Basic aggregates: &lt;code&gt;count()&lt;/code&gt; and &lt;code&gt;avg()&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To learn more about the TraceQL syntax, see the &lt;a href=&#34;../../traceql/&#34;&gt;TraceQL documentation&lt;/a&gt;.
For information on how we plan to extend the TraceQL language, see &lt;a href=&#34;../../traceql/architecture/&#34;&gt;future work&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can run a TraceQL query either by issuing it to Tempo’s &lt;code&gt;q&lt;/code&gt; parameter of the &lt;a href=&#34;../../api_docs/#search&#34;&gt;&lt;code&gt;search&lt;/code&gt; API endpoint&lt;/a&gt;, or, for those using Tempo in conjunction with Grafana, by using Grafana’s TraceQL query editor, described below.&lt;/p&gt;
&lt;p&gt;TraceQL requires Tempo’s Parquet columnar format, which is the default block format in Tempo 2.0. For more information, refer to the Tempo &lt;a href=&#34;../../configuration/parquet/&#34;&gt;Apache Parquet block format&lt;/a&gt; documentation.&lt;/p&gt;
&lt;h3 id=&#34;traceql-query-editor-in-grafana&#34;&gt;TraceQL query editor in Grafana&lt;/h3&gt;
&lt;p&gt;To make it easier to run and visualize the results of TraceQL queries, we’ve added a TraceQL query editor to Grafana’s Tempo data source. The editor is available in Grafana’s Explore interface starting in Grafana version 9.3.2.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;&lt;img src=&#34;../../traceql/assets/query-editor-results-span.png&#34; alt=&#34;Query editor showing span results&#34; /&gt;&lt;/p&gt;
&lt;p&gt;The query editor helps you learn TraceQL by offering autocomplete.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;&lt;img src=&#34;../../traceql/assets/query-editor-auto-complete.png&#34; alt=&#34;Query editor showing the auto-complete feature&#34; /&gt;&lt;/p&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&#34;../../traceql/query-editor/&#34;&gt;TraceQL query editor documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;apache-parquet-block-format-is-the-new-default&#34;&gt;Apache Parquet block format is the new default&lt;/h3&gt;
&lt;p&gt;The experimental Apache Parquet columnar block format introduced in Tempo v1.5 has been promoted to stable and is now the default trace storage for Tempo 2.0. We&amp;rsquo;re excited to switch to it because of the increased speed and efficiency it provides for search.&lt;/p&gt;
&lt;p&gt;With our previous block format, we&amp;rsquo;d seen our ability to search trace data cap out at a rate of ~40-50 GB per second. Since switching to Parquet, we&amp;rsquo;re now hitting search speeds of 300 GB/s on common queries and doing so with less compute. If we define the bytes processed as the total trace bytes that are scanned, then this example query resulted in ~1.2 TB/s:&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;YAML&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-yaml&#34;&gt;{ resource.cluster =&amp;#34;foo&amp;#34; }&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;and this query resulted in ~550 GB/s:&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;YAML&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-yaml&#34;&gt;{ span.foo =&amp;#34;bar&amp;#34; }&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Another benefit of the Parquet block format relative to our previous format is that users can now leverage the large ecosystem of existing Parquet tools and libraries to process and transform their trace data. We look forward to see what downstream applications people create with this ability.&lt;/p&gt;
&lt;p&gt;The Parquet block format can be used as a drop-in replacement for Tempo’s existing block format. No data conversion or upgrade process is necessary. As soon as the Parquet format is enabled, Tempo starts writing data in that format, leaving existing data as-is.&lt;/p&gt;
&lt;p&gt;Tempo search will return results from both the legacy and Parquet block formats. However, search on legacy blocks has been marked as deprecated and will be removed in Tempo 2.1.&lt;/p&gt;
&lt;p&gt;TraceQL queries will only search trace data stored in Parquet blocks.
For more information, refer to the &lt;a href=&#34;../../configuration/parquet/&#34;&gt;Parquet documentation&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: There is a potential issue loading Tempo 1.5&amp;rsquo;s experimental Parquet storage blocks. You may see errors or even panics in the compactors. We have only been able to reproduce this with interim commits between 1.5 and 2.0, but if you experience any issues please &lt;a href=&#34;https://github.com/grafana/tempo/issues/new?assignees=&amp;amp;labels=&amp;amp;template=bug_report.md&amp;amp;title=&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;report them&lt;/a&gt; so we can isolate and fix this issue.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;search-and-metrics-generator-enabled-by-default&#34;&gt;Search and metrics-generator enabled by default&lt;/h3&gt;
&lt;p&gt;Search and &lt;a href=&#34;../../metrics-generator/&#34;&gt;metrics-generator&lt;/a&gt; are now enabled by default in Tempo 2.0, and their corresponding configuration parameters (&lt;code&gt;search_enabled&lt;/code&gt; and &lt;code&gt;metrics_generator_enabled&lt;/code&gt;) have been removed.&lt;/p&gt;
&lt;p&gt;We’ve been excited by the feedback we’ve gotten on both features and are satisfied with their stability so we want all newcomers to Tempo to have access to them from day 1.&lt;/p&gt;
&lt;p&gt;Although the metrics-generator component is now enabled by default, no actual metrics will be generated until certain tenant-specific configuration parameters have been set. For more information, refer to the &lt;a href=&#34;../../configuration/&#34;&gt;metrics-generator configuration documentation&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Grafana Cloud customers need to contact Grafana Support to enable metrics generation.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;As part of promoting the metrics-generator to default on, we&amp;rsquo;ve made the following improvements to it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The metrics-generator now handles collisions between user-defined and default dimensions. User-defined dimensions colliding with default dimensions will be prefixed with &lt;code&gt;__&lt;/code&gt;. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1794&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1794&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The metrics-generator now makes intrinsic dimensions configurable and disables &lt;code&gt;status_message&lt;/code&gt; by default &lt;a href=&#34;https://github.com/grafana/tempo/pull/1960&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1960&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The metrics-generator now computes a metric that tells you the size (in bytes) of spans received broken down by team, service, or other relevant labels. Since span volume roughly correlates with the cost to operate Tempo, this metric is helpful for cost attribution and chargeback purposes. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1662&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1662&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Older spans are now filtered out before metrics are aggregated. This is helpful since including these older span in metric computation can lead to misleading or incorrect results. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1612&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1612&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Label names and values that exceed a configurable length are truncated. In this way, the Tempo metrics-generator sanitizes metrics before sending them to a receiving time-series-database (which usually has its own limits around maximum label length). &lt;a href=&#34;https://github.com/grafana/tempo/pull/1897&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1897&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;zone-aware-replication-for-ingesters&#34;&gt;Zone-aware replication for ingesters&lt;/h3&gt;
&lt;p&gt;Zone awareness is a feature that ensures data is replicated across failure domains (which we refer to as &amp;ldquo;zones&amp;rdquo;) to provide greater reliability. A failure domain is whatever you define it to be, but commonly may be an availability zone, data center, or server rack.&lt;/p&gt;
&lt;p&gt;When zone awareness is enabled for ingesters, incoming trace data is guaranteed to be replicated to ingesters in different zones. This allows the system to withstand the loss of one or more zones (depending on the replication factor).&lt;/p&gt;
&lt;p&gt;Thank you to community member manohar-koukuntla for making this contribution!&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;YAML&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-yaml&#34;&gt;# use the following fields in _config field of jsonnet config, to enable zone aware ingesters.
    multi_zone_ingester_enabled: false,
    multi_zone_ingester_migration_enabled: false,
    multi_zone_ingester_replicas: 0,
    multi_zone_ingester_max_unavailable: 25,&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;upgrade-considerations&#34;&gt;Upgrade considerations&lt;/h2&gt;
&lt;p&gt;When &lt;a href=&#34;../../setup/upgrade/&#34;&gt;upgrading&lt;/a&gt; to Tempo 2.0, be aware of these breaking changes.&lt;/p&gt;
&lt;h3 id=&#34;defaults-updated&#34;&gt;Defaults updated&lt;/h3&gt;
&lt;p&gt;The following configuration parameters have been updated with new default values. These defaults were changed to work better with the new Parquet block format. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1978&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1978&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you are sticking with the &lt;code&gt;v2&lt;/code&gt; format you may prefer the old values.&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;YAML&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-yaml&#34;&gt;query_frontend:
    max_oustanding_per_tenant: 2000
    search:
        concurrent_jobs: 1000
        target_bytes_per_job: 104857600
        max_duration: 168h
        query_ingesters_until: 30m
    trace_by_id:
        query_shards: 50
querier:
    max_concurrent_queries: 20
    search:
        prefer_self: 10
ingester:
    concurrent_flushes: 4
    max_block_duration: 30m
    max_block_bytes: 524288000
storage:
    trace:
        pool:
            max_workers: 400
            queue_depth: 20000
        search:
            read_buffer_count: 32
            read_buffer_size_bytes: 1048576&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;removed-and-renamed-configuration-parameters&#34;&gt;Removed and renamed configuration parameters&lt;/h3&gt;
&lt;p&gt;The following tables describe the parameters that have been removed or renamed. (PR#1978)&lt;/p&gt;
&lt;h4 id=&#34;removed&#34;&gt;Removed&lt;/h4&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 style=&#34;text-align: left&#34;&gt;Parameter&lt;/th&gt;
              &lt;th style=&#34;text-align: left&#34;&gt;Comments&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;pre&gt;query_frontend:&lt;br/&gt;  query_shards:&lt;/pre&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Replaced by &lt;code&gt;trace_by_id.query_shards&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;pre&gt;querier:&lt;br&gt;  query_timeout:&lt;/pre&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Replaced by two different settings:  &lt;code&gt;search.query_timeout&lt;/code&gt; and &lt;code&gt;trace_by_id.query_timeout&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;pre&gt;ingester:&lt;br&gt;  use_flatbuffer_search:&lt;/pre&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Removed and automatically determined based on block format&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;search_enabled&lt;/code&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Removed. Now defaults to true.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;metrics_generator_enabled&lt;/code&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Removed. Now defaults to true.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;&lt;pre&gt;storage:&lt;br&gt;  wal:&lt;br&gt;    version:&lt;/pre&gt;&lt;/td&gt;
              &lt;td style=&#34;text-align: left&#34;&gt;Removed and pinned to &lt;code&gt;block.version&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h4 id=&#34;renamed&#34;&gt;Renamed&lt;/h4&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;Parameter&lt;/th&gt;
              &lt;th&gt;Comments&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;pre&gt;query_frontend:&lt;br&gt;  query_shards:&lt;/pre&gt;&lt;/td&gt;
              &lt;td&gt;Renamed &lt;code&gt;query_frontend.trace_by_id.query_shards&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;pre&gt;querier:&lt;br&gt;  query_timeout:&lt;/pre&gt;&lt;/td&gt;
              &lt;td&gt;Renamed &lt;code&gt;querier.trace_by_id.query_timeout&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 following &lt;code&gt;compactor&lt;/code&gt; configuration parameters were renamed.&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;Parameter&lt;/th&gt;
              &lt;th&gt;Comments&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;pre&gt;compaction:&lt;br&gt;  chunk_size_bytes:&lt;/pre&gt;&lt;/td&gt;
              &lt;td&gt;Renamed to &lt;code&gt;v2_in_buffer_bytes&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;pre&gt;compaction:&lt;br&gt;  flush_size_bytes:&lt;/pre&gt;&lt;/td&gt;
              &lt;td&gt;Renamed to &lt;code&gt;v2_out_buffer_bytes&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;pre&gt;compaction:&lt;br&gt;  iterator_buffer_size:&lt;/pre&gt;&lt;/td&gt;
              &lt;td&gt;Renamed to &lt;code&gt;v2_prefetch_traces_count&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 following &lt;code&gt;storage&lt;/code&gt; configuration parameters were renamed.&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;Parameter&lt;/th&gt;
              &lt;th&gt;Comments&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;pre&gt;wal:&lt;br&gt;  encoding:&lt;/pre&gt;&lt;/td&gt;
              &lt;td&gt;Renamed to &lt;code&gt;v2_encoding&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;pre&gt;block:&lt;br&gt;  index_downsample_bytes:&lt;/pre&gt;&lt;/td&gt;
              &lt;td&gt;Renamed to &lt;code&gt;v2_index_downsample_bytes&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;pre&gt;block:&lt;br&gt;  index_page_size_bytes:&lt;/pre&gt;&lt;/td&gt;
              &lt;td&gt;Renamed to &lt;code&gt;v2_index_page_size_bytes&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;pre&gt;block:&lt;br&gt;  encoding:&lt;/pre&gt;&lt;/td&gt;
              &lt;td&gt;Renamed to &lt;code&gt;v2_encoding&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;pre&gt;block:&lt;br&gt;  row_group_size_bytes:&lt;/pre&gt;&lt;/td&gt;
              &lt;td&gt;Renamed to &lt;code&gt;parquet_row_group_size_bytes&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h3 id=&#34;other-upgrade-considerations&#34;&gt;Other upgrade considerations&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1879&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1879&lt;/a&gt;. The Azure Storage configuration now uses snake case with underscores (&lt;code&gt;_&lt;/code&gt;) instead of dashes (&lt;code&gt;-&lt;/code&gt;)Use snake case on Azure Storage config. Here is an example of using snake case on Azure Storage config:&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;YAML&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-yaml&#34;&gt;# config.yaml
storage:
  trace:
    azure:
      storage_account_name:
      storage_account_key:
      container_name:&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1678&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1678&lt;/a&gt;. Parquet is the new default block version. To continue using the v2 block format, see the &lt;a href=&#34;../../configuration/parquet/&#34;&gt;Parquet configuration documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1810&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1810&lt;/a&gt;. We&amp;rsquo;ve deleted the &lt;code&gt;TempoRequestErrors&lt;/code&gt; alert from mixin. Any Jsonnet users relying on this alert should copy this into their own environment.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1754&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1754&lt;/a&gt;. We&amp;rsquo;ve added TLS support to the vulture. Internal types are updated to use &lt;code&gt;scope&lt;/code&gt; instead of &lt;code&gt;instrumentation_library&lt;/code&gt;. This is a breaking change in &amp;ldquo;trace by ID&amp;rdquo; type queries if JSON is requested.&lt;/p&gt;
&lt;h2 id=&#34;bug-fixes&#34;&gt;Bug fixes&lt;/h2&gt;
&lt;h3 id=&#34;201&#34;&gt;2.0.1&lt;/h3&gt;
&lt;h4 id=&#34;enhancements&#34;&gt;Enhancements&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/issues/2059&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2059&lt;/a&gt; No longer return &lt;code&gt;status.code&lt;/code&gt; from &lt;code&gt;/api/search/tags&lt;/code&gt; unless it is an attribute present in the data,&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2062&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2062&lt;/a&gt; Pad leading zeroes in span id to always be 16 characters.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;bug-fixes-1&#34;&gt;Bug fixes&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2058&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2058&lt;/a&gt; Suppress logspam in single binary mode when metrics generator is disabled.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2055&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2055&lt;/a&gt; Error more gracefully while reading some blocks written by an interim commit between 1.5 and 2.0.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2095&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2095&lt;/a&gt; Correctly coalesce trace level data when combining Parquet traces.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/issues/2114&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2114&lt;/a&gt; Unescape query parameters in AWS Lambda to allow TraceQL queries to work.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;20-bug-fixes&#34;&gt;2.0 bug fixes&lt;/h3&gt;
&lt;p&gt;Version 2.0 includes the following fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1887&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1887&lt;/a&gt; Stop distributors on OTel receiver fatal error.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1700&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1700&lt;/a&gt; New wal file separator &lt;code&gt;&#43;&lt;/code&gt; for the NTFS filesystem and backward compatibility with the old separator &lt;code&gt;:&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1697&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1697&lt;/a&gt; Honor caching and buffering settings when finding traces by ID.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1723&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1723&lt;/a&gt; Correctly propagate errors from the iterator layer up through the queriers.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1781&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1781&lt;/a&gt; Make multitenancy work with HTTP.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1799&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1799&lt;/a&gt; Fix parquet search bug fix on &lt;code&gt;http.status_code&lt;/code&gt; that may cause incorrect results to be returned.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1813&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1813&lt;/a&gt; Fix failing &lt;code&gt;SearchTagValues&lt;/code&gt; endpoint after startup.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/913&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1913&lt;/a&gt; tempo-mixin: tweak dashboards to support metrics without cluster label present.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1920&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1920&lt;/a&gt; Fix docker-compose examples not running on Apple M1 hardware.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1939&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1939&lt;/a&gt; Fix TraceQL parsing of most binary operations to not require spacing.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1947&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1947&lt;/a&gt; Don&amp;rsquo;t persist tenants without blocks in the ingester.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1948&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1948&lt;/a&gt; TraceQL: span scope not working with ranges.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1997&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1997&lt;/a&gt; TraceQL: skip live traces search.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/2003&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 2003&lt;/a&gt; Return more consistent search results by combining partial traces.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="version-20-release-notes">Version 2.0 release notes&lt;/h1>
&lt;p>The Tempo team is pleased to announce the newest major release of Tempo: version 2.0!&lt;/p>
&lt;p>Tempo 2.0’s headline feature is the introduction of TraceQL. TraceQL is a query language modeled on PromQL and LogQL that allows you to interactively extract insights from your trace data. It provides a powerful, flexible way to pinpoint the traces you need to answer questions about your systems and analyze traces based on their structure.&lt;/p></description></item><item><title>Version 1.5 release notes</title><link>https://grafana.com/docs/tempo/v2.2.x/release-notes/v1-5/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/tempo/v2.2.x/release-notes/v1-5/</guid><content><![CDATA[&lt;h1 id=&#34;version-15-release-notes&#34;&gt;Version 1.5 release notes&lt;/h1&gt;
&lt;p&gt;The Tempo team is pleased to announce the release of Tempo 1.5.&lt;/p&gt;
&lt;p&gt;With this release, Tempo adds experimental support for a new trace storage format based on &lt;a href=&#34;https://parquet.apache.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Apache Parquet&lt;/a&gt;, anonymous usage reporting to help the Tempo team understand how Tempo is used, and enhancements to the metrics-generator.&lt;/p&gt;
&lt;p&gt;We encourage users to upgrade to &lt;a href=&#34;/docs/grafana/latest/whatsnew/whats-new-in-v9-1/&#34;&gt;Grafana 9.1&lt;/a&gt; to take advantage of new Tempo-powered capabilities,
such as the &lt;a href=&#34;../../metrics-generator/service-graph-view/&#34;&gt;service graph view&lt;/a&gt; which visualizes span metrics (traces data for rates, error rates, and durations (RED)) and service graphs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: For a complete list of changes and enhancements, refer to the &lt;a href=&#34;https://github.com/grafana/tempo/releases&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tempo 1.5 changelog&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;features-and-enhancements&#34;&gt;Features and enhancements&lt;/h2&gt;
&lt;p&gt;Version 1.5 contains the following features and enhancements.&lt;/p&gt;
&lt;h3 id=&#34;apache-parquet-block-format-support&#34;&gt;Apache Parquet block format support&lt;/h3&gt;
&lt;p&gt;Tempo now supports a columnar block format for trace storage based on &lt;a href=&#34;https://parquet.apache.org/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Apache Parquet&lt;/a&gt;.
We&amp;rsquo;re excited about this new format because it will enable increased speed and efficiency for Tempo search. It also allows users to leverage the large ecosystem of existing Parquet tools and libraries to process and transform their trace data.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re releasing the Parquet block format as experimental in Tempo 1.5, with plans to move it to stable in a future release once we&amp;rsquo;ve had more opportunity to test it.&lt;/p&gt;
&lt;p&gt;The new Parquet block format can be used as a drop-in replacement for Tempo&amp;rsquo;s existing block format.
No data conversion or upgrade process is necessary.
As soon as the Parquet format is enabled, Tempo starts writing data in that format, leaving existing data as-is.
For more information, refer to the &lt;a href=&#34;../../configuration/parquet/&#34;&gt;Parquet documentation&lt;/a&gt;.
Please note, however, that enabling the Parquet block format means Tempo will require more CPU and memory resources than it previously did.&lt;/p&gt;
&lt;p&gt;To use Parquet, set the block format option to &lt;code&gt;vParquet&lt;/code&gt; in the configuration file.
Refer to the &lt;a href=&#34;../../configuration/parquet/&#34;&gt;Parquet documentation&lt;/a&gt; and the &lt;a href=&#34;../../configuration/#storage&#34;&gt;Configuration documentation&lt;/a&gt;.&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;YAML&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-yaml&#34;&gt;# block format version. options: v2, vParquet
[version: &amp;lt;string&amp;gt; | default = v2]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;For more information about the Parquet implementation, refer to the &lt;a href=&#34;https://github.com/mdisibio/tempo/blob/design-proposal-parquet/docs/design-proposals/2022-04%20Parquet.md&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Parquet design document&lt;/a&gt; and &lt;a href=&#34;https://github.com/grafana/tempo/issues/1480&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Issue 1480&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;metrics-generator-enhancements&#34;&gt;Metrics-generator enhancements&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&#34;../../metrics-generator/&#34;&gt;metrics-generator&lt;/a&gt; now includes databases and requests across messaging systems in service graph metrics.
The OpenTelemetry semantic conventions are used to detect when a span is involved in one of these systems. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1576&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1576&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In addition, metrics-generator supports per-tenant processor configuration. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1434&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1434&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;anonymous-usage-reporting&#34;&gt;Anonymous usage reporting&lt;/h3&gt;
&lt;p&gt;By default, Tempo will report anonymous usage data about itself to Grafana Labs. This data is used to understand which features are commonly enabled, as well as which deployment modes, replication factors, and compression levels are most popular, etc.&lt;/p&gt;
&lt;p&gt;By providing information on how people use Tempo, usage reporting helps the Tempo team decide where to focus their development and documentation efforts. No private information is collected, and all reports are completely anonymous.&lt;/p&gt;
&lt;p&gt;Reporting is controlled by the &lt;code&gt;usage_report&lt;/code&gt; configuration option and can be disabled. For instructions, refer to &lt;a href=&#34;../../configuration/#usage-report&#34;&gt;the Configuration documentation&lt;/a&gt;. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1481&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1465&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;upgrade-considerations&#34;&gt;Upgrade considerations&lt;/h2&gt;
&lt;p&gt;When upgrading to Tempo v1.5, be aware of these breaking changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1478&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1478&lt;/a&gt; To build advanced visualization features into Grafana, we have decided to change our spanmetric names to match OpenTelemetry (OTel) conventions. Any functionality added to Grafana will work whether you use Tempo, Grafana Agent, or the OTel Collector to generate metrics.
The old histogram metric name in Tempo 1.4.x:&lt;/p&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;traces_spanmetrics_duration_seconds_{sum,count,bucket}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;has been replaced with this new name in Tempo 1.5:&lt;/p&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;traces_spanmetrics_latency_{sum,count,bucket}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Additionally, the default label &lt;code&gt;span_status&lt;/code&gt; has been renamed to &lt;code&gt;status_code&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1556&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1556&lt;/a&gt; Jsonnet users will need to specify ephemeral storage requests and limits for the metrics generator.&lt;/p&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; _config&amp;#43;:: {
   metrics_generator&amp;#43;: {
     ephemeral_storage_request_size: &amp;#39;10Gi&amp;#39;,
     ephemeral_storage_limit_size: &amp;#39;11Gi&amp;#39;,
   },
 }&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1481&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1481&lt;/a&gt; As a result of the anonymous usage reporting feature, distributors and metrics-generators now require the same level of access to object storage as compactors and ingesters. Users who disable anonymous usage reporting are exempt from this requirement.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1558&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1558&lt;/a&gt; Deprecated metrics &lt;code&gt;tempodb_(gcs|s3|azure)_request_duration_seconds&lt;/code&gt; have been removed in favor of &lt;code&gt;tempodb_backend_request_duration_seconds&lt;/code&gt;. These metrics have been deprecated since v1.1.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;bug-fixes&#34;&gt;Bug fixes&lt;/h2&gt;
&lt;h3 id=&#34;150-bug-fixes&#34;&gt;1.5.0 bug fixes&lt;/h3&gt;
&lt;p&gt;Version 1.5.0 includes the following fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1441&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1441&lt;/a&gt; Fixed nil pointer panic when the trace by id path errors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1472&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1472&lt;/a&gt; Updated Tempo microservices Helm values example which missed the &lt;code&gt;enabled&lt;/code&gt; key for thriftHttp.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1468&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1468&lt;/a&gt; Fixed race condition in forwarder overrides loop.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1538&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1538&lt;/a&gt; Fixed v2 backend check on span name to be substring.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1548&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1548&lt;/a&gt; Fixed wal check on span name to be substring.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/issues/1258&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Issue 1258&lt;/a&gt; Prevented the ingester panic &amp;ldquo;cannot grow buffer&amp;rdquo;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1554&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1554&lt;/a&gt; metrics-generator: do not remove &lt;code&gt;x-scope-orgid header&lt;/code&gt; in single tenant modus.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1589&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1589&lt;/a&gt; Fixed an issue where backend does not support &lt;code&gt;root.name&lt;/code&gt; and &lt;code&gt;root.service.name&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/issues/1603&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Issue 1603&lt;/a&gt; Fixed the ingester to continue starting up after block replay error.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="version-15-release-notes">Version 1.5 release notes&lt;/h1>
&lt;p>The Tempo team is pleased to announce the release of Tempo 1.5.&lt;/p>
&lt;p>With this release, Tempo adds experimental support for a new trace storage format based on &lt;a href="https://parquet.apache.org/" target="_blank" rel="noopener noreferrer">Apache Parquet&lt;/a>, anonymous usage reporting to help the Tempo team understand how Tempo is used, and enhancements to the metrics-generator.&lt;/p></description></item><item><title>Version 1.4 release notes</title><link>https://grafana.com/docs/tempo/v2.2.x/release-notes/v1-4/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/tempo/v2.2.x/release-notes/v1-4/</guid><content><![CDATA[&lt;h1 id=&#34;version-14-release-notes&#34;&gt;Version 1.4 release notes&lt;/h1&gt;
&lt;p&gt;The Tempo team is excited to announce the release of Tempo 1.4.&lt;/p&gt;
&lt;h2 id=&#34;features-and-enhancements&#34;&gt;Features and enhancements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Server-side metrics&lt;/strong&gt; As the headline feature for Tempo 1.4, &lt;a href=&#34;../../metrics-generator/&#34;&gt;Server-side metrics&lt;/a&gt;
generate metrics from your traces, for advanced insight into your application&amp;rsquo;s performance over time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Start and end time&lt;/strong&gt; &lt;code&gt;start&lt;/code&gt; and &lt;code&gt;end&lt;/code&gt; parameters were added to the &lt;code&gt;/api/traces/{traceID}&lt;/code&gt;
endpoint. This allows more efficient searches by only querying a subset of blocks
on the backend. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1388&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1388&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Protect instances from very large traces&lt;/strong&gt; Additional protection against large
traces has been added. These features all key off the existing &lt;code&gt;max_bytes_per_trace&lt;/code&gt;
configuration parameter. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1317&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1317&lt;/a&gt; and &lt;a href=&#34;https://github.com/grafana/tempo/pull/1318&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1318&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hedge everything&lt;/strong&gt; Improve backend search throughput Tempo using our favorite solution: hedging.&lt;/p&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;querier:
  search:
    external_hedge_requests_at: 5s
    external_hedge_requests_up_to: 3&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;upgrade-considerations&#34;&gt;Upgrade considerations&lt;/h2&gt;
&lt;p&gt;When upgrading to Tempo v1.4, be aware of these breaking changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1227&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1227&lt;/a&gt; A new ingestion endpoint was added to support faster search and proper start/end times on blocks. Roll out all ingesters before rolling the distributors to prevent downtime. Also, during this period, the ingesters will use considerably more resources and should be scaled up, or incoming traffic should be heavily throttled. Once all distributors and ingesters have rolled, performance will return to normal. Internally, we have observed ~1.5x CPU load on the ingesters during the rollout.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1350&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1350&lt;/a&gt; A few querier options were moved while adding hedging to external endpoints.&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;YAML&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-yaml&#34;&gt;querier:
search_query_timeout: 30s
search_external_endpoints: []
search_prefer_self: 2&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;was relocated to&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;YAML&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-yaml&#34;&gt;querier:
search:
    query_timeout: 30s
    prefer_self: 2
    external_endpoints: []&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1297&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1297&lt;/a&gt; Updated vulture testing of full backend search, and as a result, dropped the CLI parameter &lt;code&gt;tempo-search-retention-duration&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;bug-fixes&#34;&gt;Bug fixes&lt;/h2&gt;
&lt;h3 id=&#34;140-bug-fixes&#34;&gt;1.4.0 bug fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1390&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1390&lt;/a&gt; Correct the handling of Azure &amp;ldquo;Blob Not Found&amp;rdquo; errors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1314&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1314&lt;/a&gt; Correct block start and end times to be based on actual trace start/end times, instead of on trace ingestion times.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1387&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1387&lt;/a&gt; Eliminate a data race and ingester crash during search by trace ID.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1389&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1389&lt;/a&gt; Eliminate spurious &amp;ldquo;failed to mark block compacted during retention&amp;rdquo; errors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1379&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1379&lt;/a&gt; Eliminate an error with the message &amp;ldquo;Writer is closed&amp;rdquo; by resetting the compression writer correctly on the error path.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;141-bug-fixes&#34;&gt;1.4.1 bug fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1417&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1417&lt;/a&gt; Metrics-generator: don&amp;rsquo;t inject X-Scope-OrgID header for single-tenant setups.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1420&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1420&lt;/a&gt; Compactor: populate &lt;code&gt;compaction_objects_combined_total&lt;/code&gt; and &lt;code&gt;tempo_discarded_spans_total{reason=&amp;quot;trace_too_large_to_compact&amp;quot;}&lt;/code&gt; metrics again.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1422&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1422&lt;/a&gt; Distributor: prevent panics when concurrently calling &lt;code&gt;shutdown&lt;/code&gt; to forwarder&amp;rsquo;s queueManager.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="version-14-release-notes">Version 1.4 release notes&lt;/h1>
&lt;p>The Tempo team is excited to announce the release of Tempo 1.4.&lt;/p>
&lt;h2 id="features-and-enhancements">Features and enhancements&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Server-side metrics&lt;/strong> As the headline feature for Tempo 1.4, &lt;a href="../../metrics-generator/">Server-side metrics&lt;/a>
generate metrics from your traces, for advanced insight into your application&amp;rsquo;s performance over time.&lt;/p></description></item><item><title>Version 1.3 release notes</title><link>https://grafana.com/docs/tempo/v2.2.x/release-notes/v1-3/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/tempo/v2.2.x/release-notes/v1-3/</guid><content><![CDATA[&lt;h1 id=&#34;version-13-release-notes&#34;&gt;Version 1.3 release notes&lt;/h1&gt;
&lt;p&gt;The Tempo team is excited to announce the release of Tempo 1.3.&lt;/p&gt;
&lt;h2 id=&#34;features-and-enhancements&#34;&gt;Features and enhancements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Search&lt;/strong&gt; In addition to the existing search of recent traces,
support has been added to search traces in the backend store.
Refer to &lt;a href=&#34;../../getting-started/tempo-in-grafana/&#34;&gt;Tempo search&lt;/a&gt;
for details.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Improve ring functionality&lt;/strong&gt; The compactor ring automatically forgets about unhealthy ring members.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Protect instances from very large traces&lt;/strong&gt; The ingester keeps track of
traces that exceed the configured maximum size,
extending protection from very large traces to after the traces are flushed
to disk.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Expose additional metrics&lt;/strong&gt; These new metrics  are exposed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tempo_limits_overrides&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tempo_limits_defaults&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tempo_ingester_live_traces&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tempodb_compaction_outstanding_blocks&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Azure credentials may be set in the environment&lt;/strong&gt; Instead of setting values
in the configuration,
environment variables may specify &lt;code&gt;AZURE_STORAGE_ACCOUNT&lt;/code&gt; and &lt;code&gt;AZURE_STORAGE_KEY&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;upgrade-considerations&#34;&gt;Upgrade considerations&lt;/h2&gt;
&lt;p&gt;When upgrading to Tempo v1.3, be aware of these breaking changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1142&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1142&lt;/a&gt;: The OpenTelemetry Collector&amp;rsquo;s GRPC receiver&amp;rsquo;s default port changed from 55680 to 4317.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1174&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1174&lt;/a&gt;: Configuration option
&lt;code&gt;querier.search_max_result_limit&lt;/code&gt; is renamed to &lt;code&gt;query_frontend.search.max_result_limit&lt;/code&gt;.
Configuration option &lt;code&gt;querier.search_default_result_limit&lt;/code&gt; is renamed to &lt;code&gt;query_frontend.search.default_result_limit&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1173&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1173&lt;/a&gt;: Removed the
deprecated &lt;code&gt;Push&lt;/code&gt; method from &lt;code&gt;tempopb.Pusher&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;known-issues&#34;&gt;Known issues&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Grafana does not yet support the &lt;code&gt;tempoBackendSearch&lt;/code&gt; feature toggle
to enable searches in the backend datastore.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;bug-fixes&#34;&gt;Bug fixes&lt;/h2&gt;
&lt;h3 id=&#34;131-bug-fixes&#34;&gt;1.3.1 bug fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1260&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1260&lt;/a&gt; &lt;strong&gt;mapno&lt;/strong&gt;: Fixed a panic that occurred when using etcd as the ring&amp;rsquo;s backend storage.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;132-bug-fixes&#34;&gt;1.3.2 bug fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1295&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1295&lt;/a&gt; &lt;strong&gt;joe-elliott&lt;/strong&gt;: Fixed an issue which corrupted the start/end time ranges of Tempo searches that targeted ingesters.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="version-13-release-notes">Version 1.3 release notes&lt;/h1>
&lt;p>The Tempo team is excited to announce the release of Tempo 1.3.&lt;/p>
&lt;h2 id="features-and-enhancements">Features and enhancements&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Search&lt;/strong> In addition to the existing search of recent traces,
support has been added to search traces in the backend store.
Refer to &lt;a href="../../getting-started/tempo-in-grafana/">Tempo search&lt;/a>
for details.&lt;/p></description></item><item><title>Version 1.2 release notes</title><link>https://grafana.com/docs/tempo/v2.2.x/release-notes/v1-2/</link><pubDate>Fri, 03 Apr 2026 12:35:46 -0500</pubDate><guid>https://grafana.com/docs/tempo/v2.2.x/release-notes/v1-2/</guid><content><![CDATA[&lt;h1 id=&#34;version-12-release-notes&#34;&gt;Version 1.2 release notes&lt;/h1&gt;
&lt;p&gt;The Tempo team is excited to announce the release of Tempo 1.2. This release introduces Tempo search.&lt;/p&gt;
&lt;h2 id=&#34;features-and-enhancements&#34;&gt;Features and enhancements&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Recent traces search&lt;/strong&gt; The headline feature of Tempo 1.2 is the ability to search for data that is still in the ingester component. This experimental feature must be enabled using feature flags in both Grafana and Tempo. Refer to &lt;a href=&#34;/docs/tempo/v1.2.x/getting-started/tempo-in-grafana/#tempo-search&#34;&gt;Tempo search&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalable monolithic deployment mode (formerly scalable single binary deployment mode)&lt;/strong&gt; The new &lt;a href=&#34;/docs/tempo/v1.2.x/operations/deployment/#scalable-monolithic&#34;&gt;scalable monolithic&lt;/a&gt; deployment mode is operationally simpler, although less robust than a fully distributed deployment. We consider it a balanced operational mode that some may find attractive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Massive performance improvements&lt;/strong&gt; were achieved by more efficiently batching trace data being ingested. In terms of CPU needed, Tempo v1.2 is twice as efficient as Tempo v1.1. Refer to &lt;a href=&#34;https://github.com/grafana/tempo/pull/1075&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1075&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API improvements&lt;/strong&gt; Some informational endpoints were consolidated within the &lt;a href=&#34;../../api_docs/#status&#34;&gt;&lt;code&gt;status&lt;/code&gt; endpoint&lt;/a&gt;. New endpoints were also added.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;upgrade-considerations&#34;&gt;Upgrade considerations&lt;/h2&gt;
&lt;p&gt;When upgrading to Tempo v1.2, be aware of these changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for v0 and v1 blocks were dropped as announced with Tempo v1.1. Refer to the &lt;a href=&#34;https://github.com/grafana/tempo/releases/tag/v1.1.0&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Tempo v1.1 changelog&lt;/a&gt; for details.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/grafana/tempo/pull/1007&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 1007&lt;/a&gt; altered the Querier API. When upgrading components within a deployment, there will be a read outage until all queriers and query frontends have rolled to the upgraded version.&lt;/li&gt;
&lt;li&gt;API improvements consolidated informational endpoints within the &lt;a href=&#34;/docs/tempo/v1.2.x/api_docs/#status&#34;&gt;&lt;code&gt;status&lt;/code&gt; endpoint&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Metric &lt;code&gt;ingester_bytes_metric_total&lt;/code&gt; is renamed &lt;code&gt;ingester_bytes_received_total&lt;/code&gt; by &lt;a href=&#34;https://github.com/grafana/tempo/pull/979&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 979&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Metric &lt;code&gt;cortex_runtime_config_last_reload_successful&lt;/code&gt; is renamed &lt;code&gt;tempo_runtime_config_last_reload_successful&lt;/code&gt; by &lt;a href=&#34;https://github.com/grafana/tempo/pull/945&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 945&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;tempo-cli&lt;/code&gt; flag &lt;code&gt;--storage.trace.maintenance-cycle&lt;/code&gt; is renamed  &lt;code&gt;-storage.trace.blocklist_poll&lt;/code&gt; by &lt;a href=&#34;https://github.com/grafana/tempo/pull/897&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR 897&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;bug-fixes&#34;&gt;Bug fixes&lt;/h2&gt;
&lt;h3 id=&#34;121-bug-fixes&#34;&gt;1.2.1 bug fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Honor the default values of configuration parameters &lt;code&gt;max_bytes_per_trace&lt;/code&gt; and &lt;code&gt;max_search_bytes_per_trace&lt;/code&gt;. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1109&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR #1109&lt;/a&gt; (@BitProcessor)&lt;/li&gt;
&lt;li&gt;Reclassify the writing of empty traces to be a warning instead of an error. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1113&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR #1113&lt;/a&gt; (@mdisibio)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;120-bug-fixes&#34;&gt;1.2.0 bug fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed errors with magic numbers and other block mishandling when an ingester forcefully shuts down.  &lt;a href=&#34;https://github.com/grafana/tempo/issues/937&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Issue #937&lt;/a&gt; (@mdisibio)&lt;/li&gt;
&lt;li&gt;Fixed a memory leak in the compactor component.  &lt;a href=&#34;https://github.com/grafana/tempo/pull/806&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR #806&lt;/a&gt; (@mdisibio)&lt;/li&gt;
&lt;li&gt;Set a span&amp;rsquo;s tag &lt;code&gt;span.kind&lt;/code&gt; to &lt;code&gt;client&lt;/code&gt; in query-frontend to allow query frontend spans to be paired with querier server spans. &lt;a href=&#34;https://github.com/grafana/tempo/pull/975&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR #975&lt;/a&gt; (@mapno)&lt;/li&gt;
&lt;li&gt;Metric &lt;code&gt;tempodb_backend_hedged_roundtrips_total&lt;/code&gt; now correctly counts hedged roundtrips. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1079&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR #1079&lt;/a&gt; (@joe-elliott)&lt;/li&gt;
&lt;li&gt;Updated the &lt;code&gt;go-kit&lt;/code&gt; logger package to remove spurious debug logs. &lt;a href=&#34;https://github.com/grafana/tempo/pull/1094&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;PR #1094&lt;/a&gt; (@bboreham)&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="version-12-release-notes">Version 1.2 release notes&lt;/h1>
&lt;p>The Tempo team is excited to announce the release of Tempo 1.2. This release introduces Tempo search.&lt;/p>
&lt;h2 id="features-and-enhancements">Features and enhancements&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Recent traces search&lt;/strong> The headline feature of Tempo 1.2 is the ability to search for data that is still in the ingester component. This experimental feature must be enabled using feature flags in both Grafana and Tempo. Refer to &lt;a href="/docs/tempo/v1.2.x/getting-started/tempo-in-grafana/#tempo-search">Tempo search&lt;/a> for details.&lt;/li>
&lt;li>&lt;strong>Scalable monolithic deployment mode (formerly scalable single binary deployment mode)&lt;/strong> The new &lt;a href="/docs/tempo/v1.2.x/operations/deployment/#scalable-monolithic">scalable monolithic&lt;/a> deployment mode is operationally simpler, although less robust than a fully distributed deployment. We consider it a balanced operational mode that some may find attractive.&lt;/li>
&lt;li>&lt;strong>Massive performance improvements&lt;/strong> were achieved by more efficiently batching trace data being ingested. In terms of CPU needed, Tempo v1.2 is twice as efficient as Tempo v1.1. Refer to &lt;a href="https://github.com/grafana/tempo/pull/1075" target="_blank" rel="noopener noreferrer">PR 1075&lt;/a> for details.&lt;/li>
&lt;li>&lt;strong>API improvements&lt;/strong> Some informational endpoints were consolidated within the &lt;a href="../../api_docs/#status">&lt;code>status&lt;/code> endpoint&lt;/a>. New endpoints were also added.&lt;/li>
&lt;/ul>
&lt;h2 id="upgrade-considerations">Upgrade considerations&lt;/h2>
&lt;p>When upgrading to Tempo v1.2, be aware of these changes:&lt;/p></description></item></channel></rss>