<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/v2.10.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/v2.10.x/set-up-for-tracing/setup-tempo/plan/index.xml" rel="self" type="application/rss+xml"/><item><title>Monolithic and microservices modes</title><link>https://grafana.com/docs/tempo/v2.10.x/set-up-for-tracing/setup-tempo/plan/deployment-modes/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.x/set-up-for-tracing/setup-tempo/plan/deployment-modes/</guid><content><![CDATA[&lt;h1 id=&#34;monolithic-and-microservices-modes&#34;&gt;Monolithic and microservices modes&lt;/h1&gt;
&lt;p&gt;Tempo can be deployed in &lt;em&gt;monolithic&lt;/em&gt; or &lt;em&gt;microservices&lt;/em&gt; modes.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Monolithic mode&lt;/em&gt; was previously called &lt;em&gt;single binary mode&lt;/em&gt;. Similarly &lt;em&gt;scalable monolithic mode&lt;/em&gt; was previously called &lt;em&gt;scalable single binary mode&lt;/em&gt;.
While the documentation reflects this change, some URL names and deployment tooling may not yet reflect this change.&lt;/p&gt;
&lt;p&gt;The deployment mode is determined by the runtime configuration &lt;code&gt;target&lt;/code&gt;, or
by using the &lt;code&gt;-target&lt;/code&gt; flag on the command line. The default target is &lt;code&gt;all&lt;/code&gt;,
which is the monolithic deployment mode.&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;Bash&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-bash&#34;&gt;tempo -target=all&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Refer to the &lt;a href=&#34;../../command-line-flags/&#34;&gt;Command line flags&lt;/a&gt; documentation for more information on the &lt;code&gt;-target&lt;/code&gt; flag.&lt;/p&gt;
&lt;h2 id=&#34;monolithic-mode&#34;&gt;Monolithic mode&lt;/h2&gt;
&lt;p&gt;Monolithic mode uses a single Tempo binary is executed, which runs all of the separate components within a single running process.
This means that a single instance both ingests, stores, compacts and queries trace data.&lt;/p&gt;
&lt;p&gt;Monolithic mode handles modest volumes of trace data without issues given a modest amount of resource.&lt;/p&gt;
&lt;p&gt;However, when increased, sustained trace volume is sent to it, the monolithic deployment can incur problems in terms of resource usage, as more data is required to be indexed, stored and compacted.
This can lead in best cases to a &amp;lsquo;running hot&amp;rsquo; and laggy experience and in worst cases cause OOM (Out Of Memory) and stalling issues, leading to crashing and restarting.
In this case, a single process deployment would lead to missed trace data.&lt;/p&gt;
&lt;p&gt;To enable this mode, &lt;code&gt;-target=all&lt;/code&gt; is used, which is the default.&lt;/p&gt;
&lt;p&gt;Refer to 
    &lt;a href=&#34;/docs/tempo/v2.10.x/introduction/architecture/&#34;&gt;Architecture&lt;/a&gt; for descriptions of the components.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/tempo/architecture/tempo-TempoSingleBinary-arch.png&#34;
  alt=&#34;Monolithic mode architecture&#34; width=&#34;6616&#34;
     height=&#34;10952&#34;/&gt;&lt;/p&gt;
&lt;h3 id=&#34;example&#34;&gt;Example&lt;/h3&gt;
&lt;p&gt;Find docker-compose deployment examples in the tempo repository: &lt;a href=&#34;https://github.com/grafana/tempo/tree/main/example/docker-compose/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://github.com/grafana/tempo/tree/main/example/docker-compose&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To see an annotated example configuration for Tempo, the &lt;a href=&#34;https://github.com/grafana/intro-to-mltp&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Introduction To MLTP&lt;/a&gt; example repository contains a &lt;a href=&#34;https://github.com/grafana/intro-to-mltp/blob/main/tempo/tempo.yaml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;configuration&lt;/a&gt; for a monolithic instance.&lt;/p&gt;
&lt;h3 id=&#34;scaling-monolithic-mode&#34;&gt;Scaling monolithic mode&lt;/h3&gt;
&lt;p&gt;Monolithic mode can be horizontally scaled out.
This scalable monolithic mode is similar to the monolithic mode in that all components are run within one process.
Horizontal scale out is achieved by instantiating more than one process, with each having &lt;code&gt;-target&lt;/code&gt; set to &lt;code&gt;scalable-single-binary&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This mode offers some flexibility of scaling without the configuration complexity of the full
microservices deployment.&lt;/p&gt;
&lt;p&gt;Each of the &lt;code&gt;queriers&lt;/code&gt; perform a DNS lookup for the &lt;code&gt;frontend_address&lt;/code&gt; and connect to the addresses found within the DNS record.&lt;/p&gt;
&lt;h4 id=&#34;example-1&#34;&gt;Example&lt;/h4&gt;
&lt;p&gt;Find a docker-compose deployment example at &lt;a href=&#34;https://github.com/grafana/tempo/tree/main/example/docker-compose/scalable-single-binary&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://github.com/grafana/tempo/tree/main/example/docker-compose/scalable-single-binary&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;microservices-mode&#34;&gt;Microservices mode&lt;/h2&gt;
&lt;p&gt;Microservices mode is a configuration that allows for a fully horizontally scaled deployment that allows individual components of Tempo to be given a set number of replicas.&lt;/p&gt;
&lt;p&gt;In microservices mode, components are deployed in distinct processes.
Scaling is per component, which allows for greater flexibility in scaling and more
granular failure domains. This is the preferred method for a production
deployment, but it&amp;rsquo;s also the most complex.&lt;/p&gt;
&lt;p&gt;Each instance of a component is a single process, therefore dedicating themselves to part of the Tempo infrastructure (as opposed to the Monolithic mode where each process runs several different Tempo components).&lt;/p&gt;
&lt;p&gt;This allows for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A more resilient deployment that includes data replication factors. Components can be run over multiple nodes, such as in a Kubernetes cluster, ensuring that catastrophic failure of one node does not have a failure impact for the system as a whole. For example, by default, three independent ingesters are all sent the same span data by a distributor. If two of those ingesters fail, the data is still processed and stored by an ingester.&lt;/li&gt;
&lt;li&gt;Horizontal scaling up and down of clusters. For example, an organization may see upticks in traffic in certain periods (say, Black Friday), and need to scale up the amount of trace data being ingested for a week. Microservices mode allows them to temporarily scale up the number of ingesters, queriers, etc. that they may need with no adverse impact on the overall system which may not be as simple with Monolithic or SSB mode.&lt;/li&gt;
&lt;li&gt;However, much like the difference between Monolithic mode and SSB mode, there is an increased TCO and maintenance cost that goes along with Microservices mode. Whilst it is more flexible, it requires more attention to run proficiently. Microservices mode is the default deployment for Tempo and Grafana Enterprise Traces (GET) via the tempo-distributed Helm Chart.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The configuration associated with each component&amp;rsquo;s deployment specifies a
&lt;code&gt;target&lt;/code&gt;. For example, to deploy a &lt;code&gt;querier&lt;/code&gt;, the configuration would contain
&lt;code&gt;target: querier&lt;/code&gt;. A command-line deployment may specify the &lt;code&gt;-target=querier&lt;/code&gt;
flag.&lt;/p&gt;
&lt;p&gt;Each of the components referenced in 
    &lt;a href=&#34;/docs/tempo/v2.10.x/introduction/architecture/&#34;&gt;Architecture&lt;/a&gt; must be deployed for a working Tempo instance.&lt;/p&gt;
&lt;p&gt;&lt;img
  class=&#34;lazyload d-inline-block&#34;
  data-src=&#34;/media/docs/tempo/architecture/tempo-TempoMicroservices-arch.png&#34;
  alt=&#34;Microservices mode architecture&#34; width=&#34;7816&#34;
     height=&#34;11252&#34;/&gt;&lt;/p&gt;
&lt;h3 id=&#34;example-2&#34;&gt;Example&lt;/h3&gt;
&lt;p&gt;Find a docker-compose deployment example at &lt;a href=&#34;https://github.com/grafana/tempo/tree/main/example/docker-compose/distributed&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://github.com/grafana/tempo/tree/main/example/docker-compose/distributed&lt;/a&gt;.&lt;/p&gt;
]]></content><description>&lt;h1 id="monolithic-and-microservices-modes">Monolithic and microservices modes&lt;/h1>
&lt;p>Tempo can be deployed in &lt;em>monolithic&lt;/em> or &lt;em>microservices&lt;/em> modes.&lt;/p>
&lt;p>&lt;em>Monolithic mode&lt;/em> was previously called &lt;em>single binary mode&lt;/em>. Similarly &lt;em>scalable monolithic mode&lt;/em> was previously called &lt;em>scalable single binary mode&lt;/em>.
While the documentation reflects this change, some URL names and deployment tooling may not yet reflect this change.&lt;/p></description></item><item><title>Size the cluster</title><link>https://grafana.com/docs/tempo/v2.10.x/set-up-for-tracing/setup-tempo/plan/size/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.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/v2.10.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;Ingester:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 replica per every 3-5MB/s of received traffic.&lt;/li&gt;
&lt;li&gt;CPU: 2.5 cores&lt;/li&gt;
&lt;li&gt;Mem: 4-20GB, 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;Compactor:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 replica per every 3-5 MB/s of received traffic.&lt;/li&gt;
&lt;li&gt;CPU: 1 core (compactors are primarily I/O bound, therefore do not require much CPU)&lt;/li&gt;
&lt;li&gt;Mem: 4-20GB, determined by trace composition&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/v2.10.x/operations/monitor/&#34;&gt;Monitor Tempo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v2.10.x/operations/backend_search/&#34;&gt;Tune search performance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v2.10.x/operations/caching/&#34;&gt;Improve performance with caching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v2.10.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/v2.10.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>