<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Plan your Tempo deployment on Grafana Labs</title><link>https://grafana.com/docs/tempo/v3.0.x/set-up-for-tracing/setup-tempo/plan/</link><description>Recent content in Plan your Tempo deployment on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/tempo/v3.0.x/set-up-for-tracing/setup-tempo/plan/index.xml" rel="self" type="application/rss+xml"/><item><title>Deployment modes</title><link>https://grafana.com/docs/tempo/v3.0.x/set-up-for-tracing/setup-tempo/plan/deployment-modes/</link><pubDate>Thu, 28 May 2026 17:50:33 +0100</pubDate><guid>https://grafana.com/docs/tempo/v3.0.x/set-up-for-tracing/setup-tempo/plan/deployment-modes/</guid><content><![CDATA[&lt;h1 id=&#34;deployment-modes&#34;&gt;Deployment modes&lt;/h1&gt;
&lt;p&gt;Tempo supports two deployment modes: monolithic and microservices. All components are compiled into a single binary, and the &lt;code&gt;-target&lt;/code&gt; flag determines which mode runs.&lt;/p&gt;
&lt;h2 id=&#34;monolithic-mode&#34;&gt;Monolithic mode&lt;/h2&gt;
&lt;p&gt;In monolithic mode, the required components run in a single process using &lt;code&gt;-target=all&lt;/code&gt;, which is the default. No Kafka is required. The distributor pushes trace data in-process directly to the live-store and metrics-generator, and traces are flushed to the configured storage backend. Object storage is recommended for production deployments.&lt;/p&gt;
&lt;p&gt;Use monolithic mode when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You are getting started with Tempo or evaluating it&lt;/li&gt;
&lt;li&gt;You need a development or testing environment&lt;/li&gt;
&lt;li&gt;Your trace volume is under 25-35 MB/s or 55k-80k spans/s&lt;/li&gt;
&lt;li&gt;Operational simplicity matters more than independent scaling&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Monolithic mode has some trade-offs to be aware of.
All components share the same resource pool, so a spike in query load can affect write throughput and vice versa.
There is no independent scaling: you can scale vertically or run multiple identical instances, but you cannot scale individual components separately.
At higher volumes, memory pressure from collocated components can cause issues.&lt;/p&gt;
&lt;h2 id=&#34;microservices-mode&#34;&gt;Microservices mode&lt;/h2&gt;
&lt;p&gt;In microservices mode, each component runs as a separate process with its own &lt;code&gt;-target&lt;/code&gt; flag. For example, &lt;code&gt;-target=distributor&lt;/code&gt; or &lt;code&gt;-target=querier&lt;/code&gt;. This mode requires a Kafka-compatible system, such as Apache Kafka, Redpanda, or WarpStream, as the durable queue between the distributor and downstream consumers.&lt;/p&gt;
&lt;p&gt;Use microservices mode when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You are running a production deployment&lt;/li&gt;
&lt;li&gt;You have high trace volumes that require independent scaling&lt;/li&gt;
&lt;li&gt;You need high availability and isolated failure domains&lt;/li&gt;
&lt;li&gt;You want to scale write throughput, query performance, and recent-data capacity independently&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Microservices mode provides independent scaling for each component and isolated failure domains. A querier crash doesn&amp;rsquo;t affect ingestion, and a block-builder restart doesn&amp;rsquo;t affect query availability. Live-stores can be deployed across availability zones for high availability.&lt;/p&gt;
&lt;h2 id=&#34;choosing-a-mode&#34;&gt;Choosing a mode&lt;/h2&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;Consideration&lt;/th&gt;
              &lt;th&gt;Monolithic&lt;/th&gt;
              &lt;th&gt;Microservices&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Kafka required&lt;/td&gt;
              &lt;td&gt;No&lt;/td&gt;
              &lt;td&gt;Yes&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Scaling&lt;/td&gt;
              &lt;td&gt;Single process; scale vertically or run multiple identical instances&lt;/td&gt;
              &lt;td&gt;Each component scales independently&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Failure isolation&lt;/td&gt;
              &lt;td&gt;All components share resources&lt;/td&gt;
              &lt;td&gt;Isolated failure domains per component&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Operational complexity&lt;/td&gt;
              &lt;td&gt;Low&lt;/td&gt;
              &lt;td&gt;Higher, with more processes to manage&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Best for&lt;/td&gt;
              &lt;td&gt;Getting started, development, up to 25-35 MB/s&lt;/td&gt;
              &lt;td&gt;Production, high volume, high availability&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;For detailed architecture, component descriptions, scaling guidelines, and migration guidance, refer to the 
    &lt;a href=&#34;/docs/tempo/v3.0.x/reference-tempo-architecture/deployment-modes/&#34;&gt;Deployment modes reference&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To size your cluster, refer to 
    &lt;a href=&#34;/docs/tempo/v3.0.x/set-up-for-tracing/setup-tempo/plan/size/&#34;&gt;Size the cluster&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To deploy Tempo, refer to 
    &lt;a href=&#34;/docs/tempo/v3.0.x/set-up-for-tracing/setup-tempo/deploy/&#34;&gt;Deploy your Tempo instance&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="deployment-modes">Deployment modes&lt;/h1>
&lt;p>Tempo supports two deployment modes: monolithic and microservices. All components are compiled into a single binary, and the &lt;code>-target&lt;/code> flag determines which mode runs.&lt;/p></description></item><item><title>Size the cluster</title><link>https://grafana.com/docs/tempo/v3.0.x/set-up-for-tracing/setup-tempo/plan/size/</link><pubDate>Thu, 28 May 2026 17:50:33 +0100</pubDate><guid>https://grafana.com/docs/tempo/v3.0.x/set-up-for-tracing/setup-tempo/plan/size/</guid><content><![CDATA[&lt;h1 id=&#34;size-the-cluster&#34;&gt;Size the cluster&lt;/h1&gt;
&lt;p&gt;Resource requirements for your Grafana Tempo cluster depend on the amount and rate of data processed, retained, and queried.&lt;/p&gt;
&lt;p&gt;This document provides basic configuration guidelines that you can use as a starting point to help size your own deployment.&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;Tempo is under continuous development. These requirements can change with each release.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;factors-impacting-cluster-sizing&#34;&gt;Factors impacting cluster sizing&lt;/h2&gt;
&lt;p&gt;The size of the cluster you deploy depends on how many resources it needs for a given ingestion rate and retention: number of spans/time, average byte span size, rate of querying, and retention N days.&lt;/p&gt;
&lt;p&gt;Tracing instrumentation also effects your Tempo cluster requirements.
Refer to 
    &lt;a href=&#34;/docs/tempo/v3.0.x/set-up-for-tracing/instrument-send/best-practices/&#34;&gt;Best practices&lt;/a&gt; for suggestions on determining where to add spans, span length, and attributes.&lt;/p&gt;
&lt;h2 id=&#34;example-sample-cluster-sizing&#34;&gt;Example sample cluster sizing&lt;/h2&gt;
&lt;p&gt;Distributor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 replica per every 10MB/s of received traffic&lt;/li&gt;
&lt;li&gt;CPU: 2 cores&lt;/li&gt;
&lt;li&gt;Mem: 2 GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Live-store:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 replica per every 6-10MB/s of received traffic&lt;/li&gt;
&lt;li&gt;CPU: 1 core&lt;/li&gt;
&lt;li&gt;Mem: 4-20GB, determined by trace composition&lt;/li&gt;
&lt;li&gt;Typically deployed across multiple availability zones for high availability&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Block-builder:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 replica per partition&lt;/li&gt;
&lt;li&gt;CPU: 0.5 cores&lt;/li&gt;
&lt;li&gt;Mem: 5-10GB, determined by trace composition&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Querier:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 replica per every 1-2MB/s of received traffic.&lt;/li&gt;
&lt;li&gt;CPU: dependent on trace size and queries&lt;/li&gt;
&lt;li&gt;Mem: 4-20GB, determined by trace composition and queries&lt;/li&gt;
&lt;li&gt;This number of queriers should give good performance for typical search patterns and time ranges. Can scale up or down to fit the specific workload.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Query-Frontend:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 replicas, for high availability&lt;/li&gt;
&lt;li&gt;CPU: dependent on trace size and queries&lt;/li&gt;
&lt;li&gt;Mem: 4-20GB, dependent on trace size and queries&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Backend-scheduler:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 replica (only one scheduler should be running at a time)&lt;/li&gt;
&lt;li&gt;CPU: 0.5 cores&lt;/li&gt;
&lt;li&gt;Mem: 1-2GB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Backend-worker:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sizing guidelines to be determined based on compaction workload&lt;/li&gt;
&lt;li&gt;CPU: 0.5 cores&lt;/li&gt;
&lt;li&gt;Mem: 1-2GB&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;performance-tuning-resources&#34;&gt;Performance tuning resources&lt;/h2&gt;
&lt;p&gt;Refer to these documents for additional information on tuning your Tempo cluster:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v3.0.x/operations/monitor/&#34;&gt;Monitor Tempo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v3.0.x/operations/backend_search/&#34;&gt;Tune search performance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v3.0.x/operations/caching/&#34;&gt;Improve performance with caching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v3.0.x/operations/dedicated_columns/&#34;&gt;Dedicated attribute columns&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For information on more advanced system options, refer to 
    &lt;a href=&#34;/docs/tempo/v3.0.x/operations/manage-advanced-systems/&#34;&gt;Manage advanced systems&lt;/a&gt;.&lt;/p&gt;
]]></content><description>&lt;h1 id="size-the-cluster">Size the cluster&lt;/h1>
&lt;p>Resource requirements for your Grafana Tempo cluster depend on the amount and rate of data processed, retained, and queried.&lt;/p>
&lt;p>This document provides basic configuration guidelines that you can use as a starting point to help size your own deployment.&lt;/p></description></item></channel></rss>