<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Configure Tempo on Grafana Labs</title><link>https://grafana.com/docs/tempo/v2.10.x/configuration/</link><description>Recent content in Configure Tempo on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/tempo/v2.10.x/configuration/index.xml" rel="self" type="application/rss+xml"/><item><title>Tenant IDs</title><link>https://grafana.com/docs/tempo/v2.10.x/configuration/tenant-ids/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.x/configuration/tenant-ids/</guid><content><![CDATA[&lt;h1 id=&#34;tenant-ids&#34;&gt;Tenant IDs&lt;/h1&gt;
&lt;p&gt;Within a Grafana Tempo cluster, the tenant ID is the unique identifier of a tenant. Tenant IDs enable multi-tenancy in Tempo, allowing multiple organizations or tenants to share the same Tempo cluster while maintaining data isolation.&lt;/p&gt;
&lt;p&gt;Tempo uses the &lt;code&gt;X-Scope-OrgID&lt;/code&gt; HTTP header to identify and enforce tenant boundaries. This header is set to the tenant ID value and is used for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scoped writes (ingest)&lt;/strong&gt;: Each span is stored under its specified tenant, ensuring data isolation at the storage level&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scoped reads (queries)&lt;/strong&gt;: Queries return only data belonging to the specified tenant&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information about setting up multi-tenancy, refer to 
    &lt;a href=&#34;/docs/tempo/v2.10.x/operations/manage-advanced-systems/multitenancy/&#34;&gt;Enable multi-tenancy&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;characters-and-length-restrictions&#34;&gt;Characters and length restrictions&lt;/h2&gt;
&lt;p&gt;Tenant IDs must be less-than or equal-to 150 bytes in length. The length is measured in bytes, not characters, which is important for multi-byte characters.&lt;/p&gt;
&lt;p&gt;Tenant IDs can only include the following supported characters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alphanumeric characters (&lt;code&gt;0-9&lt;/code&gt;, &lt;code&gt;a-z&lt;/code&gt;, &lt;code&gt;A-Z&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Special characters (&lt;code&gt;!&lt;/code&gt;, &lt;code&gt;-&lt;/code&gt;, &lt;code&gt;_&lt;/code&gt;, &lt;code&gt;.&lt;/code&gt;, &lt;code&gt;*&lt;/code&gt;, &lt;code&gt;&#39;&lt;/code&gt;, &lt;code&gt;(&lt;/code&gt;, &lt;code&gt;)&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All other characters, including slashes (&lt;code&gt;/&lt;/code&gt;), backslashes (&lt;code&gt;\&lt;/code&gt;), and whitespace, aren&amp;rsquo;t supported.&lt;/p&gt;
&lt;p&gt;Tenant IDs are case-sensitive. For example, &lt;code&gt;Tenant-123&lt;/code&gt; and &lt;code&gt;tenant-123&lt;/code&gt; are treated as different tenant IDs.&lt;/p&gt;
&lt;p&gt;The tenant ID should not be empty.&lt;/p&gt;
&lt;p&gt;For security reasons, &lt;code&gt;.&lt;/code&gt; and &lt;code&gt;..&lt;/code&gt; aren&amp;rsquo;t valid tenant IDs. These values are restricted to prevent path traversal attacks.&lt;/p&gt;
&lt;h2 id=&#34;cross-tenant-queries&#34;&gt;Cross-tenant queries&lt;/h2&gt;
&lt;p&gt;Cross-tenant queries are supported for search, search-tags, and trace-by-ID search operations.
Refer to 
    &lt;a href=&#34;/docs/tempo/v2.10.x/operations/manage-advanced-systems/cross_tenant_query/&#34;&gt;Cross-tenant query federation&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h2 id=&#34;multitenancy&#34;&gt;Multitenancy&lt;/h2&gt;
&lt;p&gt;Tenant IDs are transmitted to Tempo via the &lt;code&gt;X-Scope-OrgID&lt;/code&gt; HTTP header. This header must be included in all requests to Tempo when multi-tenancy is enabled.&lt;/p&gt;
&lt;p&gt;Multi-tenancy on ingestion is supported with both gRPC and HTTP for OTLP (OpenTelemetry Protocol). You can add the header in:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenTelemetry Collector configuration&lt;/li&gt;
&lt;li&gt;Grafana Alloy configuration&lt;/li&gt;
&lt;li&gt;Any HTTP/gRPC client using &lt;code&gt;curl&lt;/code&gt; or other relevant tools&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to 
    &lt;a href=&#34;/docs/tempo/v2.10.x/operations/manage-advanced-systems/multitenancy/&#34;&gt;Enable multi-tenancy&lt;/a&gt; for more information.&lt;/p&gt;
]]></content><description>&lt;h1 id="tenant-ids">Tenant IDs&lt;/h1>
&lt;p>Within a Grafana Tempo cluster, the tenant ID is the unique identifier of a tenant. Tenant IDs enable multi-tenancy in Tempo, allowing multiple organizations or tenants to share the same Tempo cluster while maintaining data isolation.&lt;/p></description></item><item><title>Manifest</title><link>https://grafana.com/docs/tempo/v2.10.x/configuration/manifest/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.x/configuration/manifest/</guid><content><![CDATA[&lt;h1 id=&#34;manifest&#34;&gt;Manifest&lt;/h1&gt;
&lt;p&gt;This document is a reference for all Tempo options and their defaults. If you are just getting
started with Tempo, refer to &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;Tempo examples&lt;/a&gt;
and other &lt;a href=&#34;../&#34;&gt;configuration documentation&lt;/a&gt;. Most installations will require only setting 10 to 20 of these options.&lt;/p&gt;
&lt;h2 id=&#34;complete-configuration&#34;&gt;Complete configuration&lt;/h2&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;target: all
http_api_prefix: &amp;#34;&amp;#34;
server:
    http_listen_network: tcp
    http_listen_address: &amp;#34;&amp;#34;
    http_listen_port: 3200
    http_listen_conn_limit: 0
    grpc_listen_network: tcp
    grpc_listen_address: &amp;#34;&amp;#34;
    grpc_listen_port: 9095
    grpc_listen_conn_limit: 0
    grpc_collect_max_streams_by_conn: true
    proxy_protocol_enabled: false
    tls_cipher_suites: &amp;#34;&amp;#34;
    tls_min_version: &amp;#34;&amp;#34;
    http_tls_config:
        cert: &amp;#34;&amp;#34;
        key: null
        client_ca: &amp;#34;&amp;#34;
        cert_file: &amp;#34;&amp;#34;
        key_file: &amp;#34;&amp;#34;
        client_auth_type: &amp;#34;&amp;#34;
        client_ca_file: &amp;#34;&amp;#34;
    grpc_tls_config:
        cert: &amp;#34;&amp;#34;
        key: null
        client_ca: &amp;#34;&amp;#34;
        cert_file: &amp;#34;&amp;#34;
        key_file: &amp;#34;&amp;#34;
        client_auth_type: &amp;#34;&amp;#34;
        client_ca_file: &amp;#34;&amp;#34;
    register_instrumentation: true
    report_grpc_codes_in_instrumentation_label_enabled: false
    graceful_shutdown_timeout: 30s
    http_server_read_timeout: 30s
    http_server_read_header_timeout: 0s
    http_server_write_timeout: 30s
    http_server_idle_timeout: 2m0s
    http_log_closed_connections_without_response_enabled: false
    grpc_server_max_recv_msg_size: 16777216
    grpc_server_max_send_msg_size: 16777216
    grpc_server_max_concurrent_streams: 100
    grpc_server_max_connection_idle: 2562047h47m16.854775807s
    grpc_server_max_connection_age: 2562047h47m16.854775807s
    grpc_server_max_connection_age_grace: 2562047h47m16.854775807s
    grpc_server_keepalive_time: 2h0m0s
    grpc_server_keepalive_timeout: 20s
    grpc_server_min_time_between_pings: 10s
    grpc_server_ping_without_stream_allowed: true
    grpc_server_num_workers: 0
    grpc_server_stats_tracking_enabled: true
    grpc_server_recv_buffer_pools_enabled: false
    log_format: logfmt
    log_level: info
    log_source_ips_enabled: false
    log_source_ips_full: false
    log_source_ips_header: &amp;#34;&amp;#34;
    log_source_ips_regex: &amp;#34;&amp;#34;
    log_request_headers: false
    log_request_at_info_level_enabled: false
    log_request_exclude_headers_list: &amp;#34;&amp;#34;
    trace_request_headers: false
    trace_request_exclude_headers_list: &amp;#34;&amp;#34;
    http_path_prefix: &amp;#34;&amp;#34;
    cluster_validation:
        label: &amp;#34;&amp;#34;
        additional_labels: &amp;#34;&amp;#34;
        grpc:
            enabled: false
            soft_validation: false
        http:
            enabled: false
            soft_validation: false
            excluded_paths: &amp;#34;&amp;#34;
            excluded_user_agents: &amp;#34;&amp;#34;
internal_server:
    http_listen_network: tcp
    http_listen_address: &amp;#34;&amp;#34;
    http_listen_port: 3101
    http_listen_conn_limit: 0
    grpc_listen_network: &amp;#34;&amp;#34;
    grpc_listen_address: &amp;#34;&amp;#34;
    grpc_listen_port: 0
    grpc_listen_conn_limit: 0
    grpc_collect_max_streams_by_conn: false
    proxy_protocol_enabled: false
    tls_cipher_suites: &amp;#34;&amp;#34;
    tls_min_version: &amp;#34;&amp;#34;
    http_tls_config:
        cert: &amp;#34;&amp;#34;
        key: null
        client_ca: &amp;#34;&amp;#34;
        cert_file: &amp;#34;&amp;#34;
        key_file: &amp;#34;&amp;#34;
        client_auth_type: &amp;#34;&amp;#34;
        client_ca_file: &amp;#34;&amp;#34;
    grpc_tls_config:
        cert: &amp;#34;&amp;#34;
        key: null
        client_ca: &amp;#34;&amp;#34;
        cert_file: &amp;#34;&amp;#34;
        key_file: &amp;#34;&amp;#34;
        client_auth_type: &amp;#34;&amp;#34;
        client_ca_file: &amp;#34;&amp;#34;
    register_instrumentation: false
    report_grpc_codes_in_instrumentation_label_enabled: false
    graceful_shutdown_timeout: 30s
    http_server_read_timeout: 30s
    http_server_read_header_timeout: 0s
    http_server_write_timeout: 30s
    http_server_idle_timeout: 2m0s
    http_log_closed_connections_without_response_enabled: false
    grpc_server_max_recv_msg_size: 0
    grpc_server_max_send_msg_size: 0
    grpc_server_max_concurrent_streams: 0
    grpc_server_max_connection_idle: 0s
    grpc_server_max_connection_age: 0s
    grpc_server_max_connection_age_grace: 0s
    grpc_server_keepalive_time: 0s
    grpc_server_keepalive_timeout: 0s
    grpc_server_min_time_between_pings: 0s
    grpc_server_ping_without_stream_allowed: false
    grpc_server_num_workers: 0
    grpc_server_stats_tracking_enabled: false
    grpc_server_recv_buffer_pools_enabled: false
    log_format: logfmt
    log_level: info
    log_source_ips_enabled: false
    log_source_ips_full: false
    log_source_ips_header: &amp;#34;&amp;#34;
    log_source_ips_regex: &amp;#34;&amp;#34;
    log_request_headers: false
    log_request_at_info_level_enabled: false
    log_request_exclude_headers_list: &amp;#34;&amp;#34;
    trace_request_headers: false
    trace_request_exclude_headers_list: &amp;#34;&amp;#34;
    http_path_prefix: &amp;#34;&amp;#34;
    cluster_validation:
        label: &amp;#34;&amp;#34;
        additional_labels: &amp;#34;&amp;#34;
        grpc:
            enabled: false
            soft_validation: false
        http:
            enabled: false
            soft_validation: false
            excluded_paths: &amp;#34;&amp;#34;
            excluded_user_agents: &amp;#34;&amp;#34;
    enable: false
distributor:
    ring:
        kvstore:
            store: memberlist
            prefix: collectors/
            consul:
                host: localhost:8500
                acl_token: &amp;#34;&amp;#34;
                http_client_timeout: 20s
                consistent_reads: false
                watch_rate_limit: 1
                watch_burst_size: 1
                cas_retry_delay: 1s
            etcd:
                endpoints: []
                dial_timeout: 10s
                max_retries: 10
                tls_enabled: false
                tls_cert_path: &amp;#34;&amp;#34;
                tls_key_path: &amp;#34;&amp;#34;
                tls_ca_path: &amp;#34;&amp;#34;
                tls_server_name: &amp;#34;&amp;#34;
                tls_insecure_skip_verify: false
                tls_cipher_suites: &amp;#34;&amp;#34;
                tls_min_version: &amp;#34;&amp;#34;
                username: &amp;#34;&amp;#34;
                password: &amp;#34;&amp;#34;
            multi:
                primary: &amp;#34;&amp;#34;
                secondary: &amp;#34;&amp;#34;
                mirror_enabled: false
                mirror_timeout: 2s
        heartbeat_period: 5s
        heartbeat_timeout: 5m0s
        instance_id: hostname
        instance_interface_names:
            - eth0
            - en0
        instance_port: 0
        instance_addr: &amp;#34;&amp;#34;
        enable_inet6: false
    receivers: {}
    override_ring_key: distributor
    forwarders: []
    usage:
        cost_attribution:
            max_cardinality: 10000
            stale_duration: 15m0s
    ingester_write_path_enabled: true
    kafka_write_path_enabled: false
    kafka_config:
        address: &amp;#34;&amp;#34;
        topic: &amp;#34;&amp;#34;
        client_id: &amp;#34;&amp;#34;
        dial_timeout: 0s
        write_timeout: 0s
        sasl_username: &amp;#34;&amp;#34;
        sasl_password: &amp;#34;&amp;#34;
        consumer_group: &amp;#34;&amp;#34;
        consumer_group_offset_commit_interval: 0s
        last_produced_offset_retry_timeout: 0s
        auto_create_topic_enabled: false
        auto_create_topic_default_partitions: 0
        producer_max_record_size_bytes: 0
        producer_max_buffered_bytes: 0
        target_consumer_lag_at_startup: 0s
        max_consumer_lag_at_startup: 0s
        disable_kafka_telemetry: false
        consumer_group_lag_metric_update_interval: 0s
    extend_writes: true
    retry_after_on_resource_exhausted: 0s
    max_attribute_bytes: 2048
ingester_client:
    pool_config:
        checkinterval: 15s
        healthcheckenabled: true
        healthchecktimeout: 1s
        maxconcurrenthealthchecks: 0
    remote_timeout: 5s
    grpc_client_config:
        max_recv_msg_size: 104857600
        max_send_msg_size: 104857600
        grpc_compression: snappy
        rate_limit: 0
        rate_limit_burst: 0
        backoff_on_ratelimits: false
        backoff_config:
            min_period: 100ms
            max_period: 10s
            max_retries: 10
        initial_stream_window_size: 63KiB1023B
        initial_connection_window_size: 63KiB1023B
        tls_enabled: false
        tls_cert_path: &amp;#34;&amp;#34;
        tls_key_path: &amp;#34;&amp;#34;
        tls_ca_path: &amp;#34;&amp;#34;
        tls_server_name: &amp;#34;&amp;#34;
        tls_insecure_skip_verify: false
        tls_cipher_suites: &amp;#34;&amp;#34;
        tls_min_version: &amp;#34;&amp;#34;
        connect_timeout: 5s
        connect_backoff_base_delay: 1s
        connect_backoff_max_delay: 5s
        cluster_validation:
            label: &amp;#34;&amp;#34;
metrics_generator_client:
    pool_config:
        checkinterval: 15s
        healthcheckenabled: true
        healthchecktimeout: 1s
        maxconcurrenthealthchecks: 0
    remote_timeout: 5s
    grpc_client_config:
        max_recv_msg_size: 104857600
        max_send_msg_size: 104857600
        grpc_compression: snappy
        rate_limit: 0
        rate_limit_burst: 0
        backoff_on_ratelimits: false
        backoff_config:
            min_period: 100ms
            max_period: 10s
            max_retries: 10
        initial_stream_window_size: 63KiB1023B
        initial_connection_window_size: 63KiB1023B
        tls_enabled: false
        tls_cert_path: &amp;#34;&amp;#34;
        tls_key_path: &amp;#34;&amp;#34;
        tls_ca_path: &amp;#34;&amp;#34;
        tls_server_name: &amp;#34;&amp;#34;
        tls_insecure_skip_verify: false
        tls_cipher_suites: &amp;#34;&amp;#34;
        tls_min_version: &amp;#34;&amp;#34;
        connect_timeout: 5s
        connect_backoff_base_delay: 1s
        connect_backoff_max_delay: 5s
        cluster_validation:
            label: &amp;#34;&amp;#34;
live_store_client:
    pool_config:
        checkinterval: 15s
        healthcheckenabled: true
        healthchecktimeout: 1s
        maxconcurrenthealthchecks: 0
    remote_timeout: 5s
    grpc_client_config:
        max_recv_msg_size: 104857600
        max_send_msg_size: 104857600
        grpc_compression: snappy
        rate_limit: 0
        rate_limit_burst: 0
        backoff_on_ratelimits: false
        backoff_config:
            min_period: 100ms
            max_period: 10s
            max_retries: 10
        initial_stream_window_size: 63KiB1023B
        initial_connection_window_size: 63KiB1023B
        tls_enabled: false
        tls_cert_path: &amp;#34;&amp;#34;
        tls_key_path: &amp;#34;&amp;#34;
        tls_ca_path: &amp;#34;&amp;#34;
        tls_server_name: &amp;#34;&amp;#34;
        tls_insecure_skip_verify: false
        tls_cipher_suites: &amp;#34;&amp;#34;
        tls_min_version: &amp;#34;&amp;#34;
        connect_timeout: 5s
        connect_backoff_base_delay: 1s
        connect_backoff_max_delay: 5s
        cluster_validation:
            label: &amp;#34;&amp;#34;
querier:
    search:
        query_timeout: 30s
    trace_by_id:
        query_timeout: 10s
        external:
            endpoint: &amp;#34;&amp;#34;
            timeout: 10s
    metrics:
        concurrent_blocks: 2
        time_overlap_cutoff: 0.2
    partition_ring:
        minimize_requests: true
        hedging_delay: 3s
    max_concurrent_queries: 20
    frontend_worker:
        frontend_address: &amp;#34;&amp;#34;
        dns_lookup_duration: 10s
        parallelism: 2
        match_max_concurrent: true
        id: &amp;#34;&amp;#34;
        grpc_client_config:
            max_recv_msg_size: 104857600
            max_send_msg_size: 16777216
            grpc_compression: snappy
            rate_limit: 0
            rate_limit_burst: 0
            backoff_on_ratelimits: false
            backoff_config:
                min_period: 100ms
                max_period: 1s
                max_retries: 5
            initial_stream_window_size: 0B
            initial_connection_window_size: 0B
            tls_enabled: false
            tls_cert_path: &amp;#34;&amp;#34;
            tls_key_path: &amp;#34;&amp;#34;
            tls_ca_path: &amp;#34;&amp;#34;
            tls_server_name: &amp;#34;&amp;#34;
            tls_insecure_skip_verify: false
            tls_cipher_suites: &amp;#34;&amp;#34;
            tls_min_version: &amp;#34;&amp;#34;
            connect_timeout: 0s
            connect_backoff_base_delay: 0s
            connect_backoff_max_delay: 0s
            cluster_validation:
                label: &amp;#34;&amp;#34;
    shuffle_sharding_ingesters_enabled: false
    shuffle_sharding_ingesters_lookback_period: 1h0m0s
    query_relevant_ingesters: false
query_frontend:
    max_outstanding_per_tenant: 2000
    max_batch_size: 7
    log_query_request_headers: &amp;#34;&amp;#34;
    max_retries: 2
    search:
        concurrent_jobs: 1000
        target_bytes_per_job: 104857600
        default_result_limit: 20
        max_result_limit: 262144
        max_duration: 168h0m0s
        query_backend_after: 15m0s
        query_ingesters_until: 30m0s
        ingester_shards: 3
        most_recent_shards: 200
        default_spans_per_span_set: 3
        max_spans_per_span_set: 100
    trace_by_id:
        query_shards: 50
    metrics:
        concurrent_jobs: 1000
        target_bytes_per_job: 104857600
        max_duration: 3h0m0s
        query_backend_after: 30m0s
        interval: 5m0s
        max_exemplars: 100
        streaming_shards: 200
        max_intervals: 10000
    multi_tenant_queries_enabled: true
    response_consumers: 10
    weights:
        request_with_weights: true
        retry_with_weights: true
        max_traceql_conditions: 4
        max_regex_conditions: 1
    mcp_server:
        enabled: false
    max_query_expression_size_bytes: 131072
    rf1_after: 0001-01-01T00:00:00Z
compactor:
    ring:
        kvstore:
            store: &amp;#34;&amp;#34;
            prefix: collectors/
            consul:
                host: localhost:8500
                acl_token: &amp;#34;&amp;#34;
                http_client_timeout: 20s
                consistent_reads: false
                watch_rate_limit: 1
                watch_burst_size: 1
                cas_retry_delay: 1s
            etcd:
                endpoints: []
                dial_timeout: 10s
                max_retries: 10
                tls_enabled: false
                tls_cert_path: &amp;#34;&amp;#34;
                tls_key_path: &amp;#34;&amp;#34;
                tls_ca_path: &amp;#34;&amp;#34;
                tls_server_name: &amp;#34;&amp;#34;
                tls_insecure_skip_verify: false
                tls_cipher_suites: &amp;#34;&amp;#34;
                tls_min_version: &amp;#34;&amp;#34;
                username: &amp;#34;&amp;#34;
                password: &amp;#34;&amp;#34;
            multi:
                primary: &amp;#34;&amp;#34;
                secondary: &amp;#34;&amp;#34;
                mirror_enabled: false
                mirror_timeout: 2s
        heartbeat_period: 5s
        heartbeat_timeout: 1m0s
        wait_stability_min_duration: 1m0s
        wait_stability_max_duration: 5m0s
        instance_id: hostname
        instance_interface_names:
            - eth0
            - en0
        instance_port: 0
        instance_addr: &amp;#34;&amp;#34;
        enable_inet6: false
        wait_active_instance_timeout: 10m0s
    compaction:
        v2_in_buffer_bytes: 5242880
        v2_out_buffer_bytes: 20971520
        v2_prefetch_traces_count: 1000
        compaction_window: 1h0m0s
        max_compaction_objects: 6000000
        max_block_bytes: 107374182400
        block_retention: 336h0m0s
        compacted_block_retention: 1h0m0s
        retention_concurrency: 10
        max_time_per_tenant: 5m0s
        compaction_cycle: 30s
    override_ring_key: compactor
ingester:
    lifecycler:
        ring:
            kvstore:
                store: memberlist
                prefix: collectors/
                consul:
                    host: localhost:8500
                    acl_token: &amp;#34;&amp;#34;
                    http_client_timeout: 20s
                    consistent_reads: false
                    watch_rate_limit: 1
                    watch_burst_size: 1
                    cas_retry_delay: 1s
                etcd:
                    endpoints: []
                    dial_timeout: 10s
                    max_retries: 10
                    tls_enabled: false
                    tls_cert_path: &amp;#34;&amp;#34;
                    tls_key_path: &amp;#34;&amp;#34;
                    tls_ca_path: &amp;#34;&amp;#34;
                    tls_server_name: &amp;#34;&amp;#34;
                    tls_insecure_skip_verify: false
                    tls_cipher_suites: &amp;#34;&amp;#34;
                    tls_min_version: &amp;#34;&amp;#34;
                    username: &amp;#34;&amp;#34;
                    password: &amp;#34;&amp;#34;
                multi:
                    primary: &amp;#34;&amp;#34;
                    secondary: &amp;#34;&amp;#34;
                    mirror_enabled: false
                    mirror_timeout: 2s
            heartbeat_timeout: 5m0s
            replication_factor: 1
            zone_awareness_enabled: false
            excluded_zones: &amp;#34;&amp;#34;
        num_tokens: 128
        heartbeat_period: 5s
        heartbeat_timeout: 1m0s
        observe_period: 0s
        join_after: 0s
        min_ready_duration: 15s
        interface_names:
            - eth0
        enable_inet6: false
        final_sleep: 0s
        tokens_file_path: &amp;#34;&amp;#34;
        availability_zone: &amp;#34;&amp;#34;
        unregister_on_shutdown: true
        readiness_check_ring_health: true
        address: &amp;#34;&amp;#34;
        port: 0
        id: hostname
    partition_ring:
        kvstore:
            store: memberlist
            prefix: collectors/
            consul:
                host: localhost:8500
                acl_token: &amp;#34;&amp;#34;
                http_client_timeout: 20s
                consistent_reads: false
                watch_rate_limit: 1
                watch_burst_size: 1
                cas_retry_delay: 1s
            etcd:
                endpoints: []
                dial_timeout: 10s
                max_retries: 10
                tls_enabled: false
                tls_cert_path: &amp;#34;&amp;#34;
                tls_key_path: &amp;#34;&amp;#34;
                tls_ca_path: &amp;#34;&amp;#34;
                tls_server_name: &amp;#34;&amp;#34;
                tls_insecure_skip_verify: false
                tls_cipher_suites: &amp;#34;&amp;#34;
                tls_min_version: &amp;#34;&amp;#34;
                username: &amp;#34;&amp;#34;
                password: &amp;#34;&amp;#34;
            multi:
                primary: &amp;#34;&amp;#34;
                secondary: &amp;#34;&amp;#34;
                mirror_enabled: false
                mirror_timeout: 2s
        min_partition_owners_count: 1
        min_partition_owners_duration: 10s
        delete_inactive_partition_after: 13h0m0s
    concurrent_flushes: 4
    flush_check_period: 10s
    flush_op_timeout: 5m0s
    trace_idle_period: 5s
    trace_live_period: 30s
    max_block_duration: 30m0s
    max_block_bytes: 524288000
    complete_block_timeout: 15m0s
    override_ring_key: ring
    flush_all_on_shutdown: false
    flush_object_storage: true
metrics_generator:
    ring:
        kvstore:
            store: memberlist
            prefix: collectors/
            consul:
                host: localhost:8500
                acl_token: &amp;#34;&amp;#34;
                http_client_timeout: 20s
                consistent_reads: false
                watch_rate_limit: 1
                watch_burst_size: 1
                cas_retry_delay: 1s
            etcd:
                endpoints: []
                dial_timeout: 10s
                max_retries: 10
                tls_enabled: false
                tls_cert_path: &amp;#34;&amp;#34;
                tls_key_path: &amp;#34;&amp;#34;
                tls_ca_path: &amp;#34;&amp;#34;
                tls_server_name: &amp;#34;&amp;#34;
                tls_insecure_skip_verify: false
                tls_cipher_suites: &amp;#34;&amp;#34;
                tls_min_version: &amp;#34;&amp;#34;
                username: &amp;#34;&amp;#34;
                password: &amp;#34;&amp;#34;
            multi:
                primary: &amp;#34;&amp;#34;
                secondary: &amp;#34;&amp;#34;
                mirror_enabled: false
                mirror_timeout: 2s
        heartbeat_period: 5s
        heartbeat_timeout: 1m0s
        instance_id: hostname
        instance_interface_names:
            - eth0
            - en0
        instance_addr: &amp;#34;&amp;#34;
        instance_port: 0
        enable_inet6: false
        instance_zone: &amp;#34;&amp;#34;
    processor:
        service_graphs:
            wait: 10s
            max_items: 10000
            workers: 10
            histogram_buckets:
                - 0.1
                - 0.2
                - 0.4
                - 0.8
                - 1.6
                - 3.2
                - 6.4
                - 12.8
            dimensions: []
            enable_client_server_prefix: false
            enable_messaging_system_latency_histogram: false
            peer_attributes:
                - peer.service
                - db.name
                - db.system
            span_multiplier_key: &amp;#34;&amp;#34;
            enable_virtual_node_label: false
            database_name_attributes:
                - db.namespace
                - db.name
                - db.system
        span_metrics:
            histogram_buckets:
                - 0.002
                - 0.004
                - 0.008
                - 0.016
                - 0.032
                - 0.064
                - 0.128
                - 0.256
                - 0.512
                - 1.024
                - 2.048
                - 4.096
                - 8.192
                - 16.384
            intrinsic_dimensions:
                service: true
                span_name: true
                span_kind: true
                status_code: true
            dimensions: []
            dimension_mappings: []
            enable_target_info: false
            span_multiplier_key: &amp;#34;&amp;#34;
            subprocessors:
                0: true
                1: true
                2: true
            filter_policies: []
            target_info_excluded_dimensions: []
            enable_instance_label: true
        local_blocks:
            block:
                bloom_filter_false_positive: 0.01
                bloom_filter_shard_size_bytes: 102400
                version: vParquet4
                search_encoding: snappy
                search_page_size_bytes: 1048576
                v2_index_downsample_bytes: 1048576
                v2_index_page_size_bytes: 256000
                v2_encoding: zstd
                parquet_row_group_size_bytes: 100000000
                parquet_dedicated_columns:
                    - scope: resource
                      name: k8s.cluster.name
                      type: string
                      options: []
                    - scope: resource
                      name: k8s.namespace.name
                      type: string
                      options: []
                    - scope: resource
                      name: k8s.pod.name
                      type: string
                      options: []
                    - scope: resource
                      name: k8s.container.name
                      type: string
                      options: []
                    - scope: span
                      name: http.request.method
                      type: string
                      options: []
                    - scope: span
                      name: http.response.status_code
                      type: int
                      options: []
                    - scope: span
                      name: url.path
                      type: string
                      options: []
                    - scope: span
                      name: url.route
                      type: string
                      options: []
                    - scope: span
                      name: server.address
                      type: string
                      options: []
                    - scope: span
                      name: server.port
                      type: int
                      options: []
                    - scope: span
                      name: http.method
                      type: string
                      options: []
                    - scope: span
                      name: http.url
                      type: string
                      options: []
                    - scope: span
                      name: http.route
                      type: string
                      options: []
                    - scope: span
                      name: http.status_code
                      type: int
                      options: []
            search:
                chunk_size_bytes: 1000000
                prefetch_trace_count: 1000
                read_buffer_count: 32
                read_buffer_size_bytes: 1048576
                cache_control:
                    footer: false
                    column_index: false
                    offset_index: false
            flush_check_period: 10s
            trace_idle_period: 5s
            trace_live_period: 30s
            max_block_duration: 1m0s
            max_block_bytes: 500000000
            concurrency: 4
            complete_block_timeout: 1h0m0s
            max_live_traces: 0
            max_live_traces_bytes: 250000000
            filter_server_spans: true
            flush_to_storage: false
            concurrent_blocks: 10
            time_overlap_cutoff: 0.2
        host_info:
            host_identifiers:
                - k8s.node.name
                - host.id
            metric_name: traces_host_info
    registry:
        collection_interval: 15s
        stale_duration: 15m0s
        max_label_name_length: 1024
        max_label_value_length: 2048
    storage:
        path: &amp;#34;&amp;#34;
        wal:
            wal_segment_size: 134217728
            wal_compression: none
            stripe_size: 16384
            truncate_frequency: 2h0m0s
            min_wal_time: 300000
            max_wal_time: 14400000
            no_lockfile: false
        remote_write_flush_deadline: 1m0s
        remote_write_add_org_id_header: true
    traces_storage:
        path: &amp;#34;&amp;#34;
        v2_encoding: none
        search_encoding: none
        ingestion_time_range_slack: 2m0s
        version: vParquet4
    traces_query_storage:
        path: &amp;#34;&amp;#34;
        v2_encoding: none
        search_encoding: none
        ingestion_time_range_slack: 2m0s
        version: vParquet4
    metrics_ingestion_time_range_slack: 30s
    query_timeout: 30s
    override_ring_key: metrics-generator
    codec: push-bytes
    disable_local_blocks: false
    disable_grpc: false
    limiter_type: series
    ingest_concurrency: 16
    instance_id: hostname
ingest:
    enabled: false
    kafka:
        address: localhost:9092
        topic: &amp;#34;&amp;#34;
        client_id: &amp;#34;&amp;#34;
        dial_timeout: 2s
        write_timeout: 10s
        sasl_username: &amp;#34;&amp;#34;
        sasl_password: &amp;#34;&amp;#34;
        consumer_group: &amp;#34;&amp;#34;
        consumer_group_offset_commit_interval: 1s
        last_produced_offset_retry_timeout: 10s
        auto_create_topic_enabled: true
        auto_create_topic_default_partitions: 1000
        producer_max_record_size_bytes: 15983616
        producer_max_buffered_bytes: 1073741824
        target_consumer_lag_at_startup: 2s
        max_consumer_lag_at_startup: 15s
        disable_kafka_telemetry: false
        consumer_group_lag_metric_update_interval: 1m0s
block_builder:
    instance_id: hostname
    assigned_partitions: {}
    partitions_per_instance: 0
    consume_cycle_duration: 5m0s
    max_consuming_bytes: 5000000000
    block:
        max_block_bytes: 20971520
        bloom_filter_false_positive: 0.01
        bloom_filter_shard_size_bytes: 102400
        version: vParquet4
        search_encoding: snappy
        search_page_size_bytes: 1048576
        v2_index_downsample_bytes: 1048576
        v2_index_page_size_bytes: 256000
        v2_encoding: zstd
        parquet_row_group_size_bytes: 100000000
        parquet_dedicated_columns:
            - scope: resource
              name: k8s.cluster.name
              type: string
              options: []
            - scope: resource
              name: k8s.namespace.name
              type: string
              options: []
            - scope: resource
              name: k8s.pod.name
              type: string
              options: []
            - scope: resource
              name: k8s.container.name
              type: string
              options: []
            - scope: span
              name: http.request.method
              type: string
              options: []
            - scope: span
              name: http.response.status_code
              type: int
              options: []
            - scope: span
              name: url.path
              type: string
              options: []
            - scope: span
              name: url.route
              type: string
              options: []
            - scope: span
              name: server.address
              type: string
              options: []
            - scope: span
              name: server.port
              type: int
              options: []
            - scope: span
              name: http.method
              type: string
              options: []
            - scope: span
              name: http.url
              type: string
              options: []
            - scope: span
              name: http.route
              type: string
              options: []
            - scope: span
              name: http.status_code
              type: int
              options: []
    wal:
        path: /var/tempo/block-builder/traces
        v2_encoding: none
        search_encoding: none
        ingestion_time_range_slack: 2m0s
        version: vParquet4
storage:
    trace:
        pool:
            max_workers: 400
            queue_depth: 20000
        wal:
            path: /var/tempo/wal
            v2_encoding: snappy
            search_encoding: none
            ingestion_time_range_slack: 2m0s
        block:
            bloom_filter_false_positive: 0.01
            bloom_filter_shard_size_bytes: 102400
            version: vParquet4
            search_encoding: snappy
            search_page_size_bytes: 1048576
            v2_index_downsample_bytes: 1048576
            v2_index_page_size_bytes: 256000
            v2_encoding: zstd
            parquet_row_group_size_bytes: 100000000
            parquet_dedicated_columns:
                - scope: resource
                  name: k8s.cluster.name
                  type: string
                  options: []
                - scope: resource
                  name: k8s.namespace.name
                  type: string
                  options: []
                - scope: resource
                  name: k8s.pod.name
                  type: string
                  options: []
                - scope: resource
                  name: k8s.container.name
                  type: string
                  options: []
                - scope: span
                  name: http.request.method
                  type: string
                  options: []
                - scope: span
                  name: http.response.status_code
                  type: int
                  options: []
                - scope: span
                  name: url.path
                  type: string
                  options: []
                - scope: span
                  name: url.route
                  type: string
                  options: []
                - scope: span
                  name: server.address
                  type: string
                  options: []
                - scope: span
                  name: server.port
                  type: int
                  options: []
                - scope: span
                  name: http.method
                  type: string
                  options: []
                - scope: span
                  name: http.url
                  type: string
                  options: []
                - scope: span
                  name: http.route
                  type: string
                  options: []
                - scope: span
                  name: http.status_code
                  type: int
                  options: []
        search:
            chunk_size_bytes: 1000000
            prefetch_trace_count: 1000
            read_buffer_count: 32
            read_buffer_size_bytes: 1048576
            cache_control:
                footer: false
                column_index: false
                offset_index: false
        blocklist_poll: 5m0s
        blocklist_poll_concurrency: 50
        blocklist_poll_tenant_concurrency: 0
        blocklist_poll_fallback: true
        blocklist_poll_tenant_index_builders: 2
        blocklist_poll_stale_tenant_index: 0s
        blocklist_poll_jitter_ms: 0
        blocklist_poll_tolerate_consecutive_errors: 1
        blocklist_poll_tolerate_tenant_failures: 1
        empty_tenant_deletion_enabled: false
        empty_tenant_deletion_age: 0s
        backend: &amp;#34;&amp;#34;
        local:
            path: &amp;#34;&amp;#34;
        gcs:
            bucket_name: &amp;#34;&amp;#34;
            prefix: &amp;#34;&amp;#34;
            chunk_buffer_size: 10485760
            endpoint: &amp;#34;&amp;#34;
            hedge_requests_at: 0s
            hedge_requests_up_to: 2
            insecure: false
            object_cache_control: &amp;#34;&amp;#34;
            object_metadata: {}
            list_blocks_concurrency: 3
            max_retries: 3
        s3:
            tls_cert_path: &amp;#34;&amp;#34;
            tls_key_path: &amp;#34;&amp;#34;
            tls_ca_path: &amp;#34;&amp;#34;
            tls_server_name: &amp;#34;&amp;#34;
            tls_insecure_skip_verify: false
            tls_cipher_suites: &amp;#34;&amp;#34;
            tls_min_version: VersionTLS12
            bucket: &amp;#34;&amp;#34;
            prefix: &amp;#34;&amp;#34;
            endpoint: &amp;#34;&amp;#34;
            region: &amp;#34;&amp;#34;
            access_key: &amp;#34;&amp;#34;
            secret_key: &amp;#34;&amp;#34;
            session_token: &amp;#34;&amp;#34;
            insecure: false
            part_size: 0
            hedge_requests_at: 0s
            hedge_requests_up_to: 2
            signature_v2: false
            forcepathstyle: false
            enable_dual_stack: false
            bucket_lookup_type: 0
            tags: {}
            storage_class: &amp;#34;&amp;#34;
            metadata: {}
            native_aws_auth_enabled: false
            list_blocks_concurrency: 3
            sse:
                type: &amp;#34;&amp;#34;
                kms_key_id: &amp;#34;&amp;#34;
                kms_encryption_context: &amp;#34;&amp;#34;
                encryption_key: &amp;#34;&amp;#34;
        azure:
            storage_account_name: &amp;#34;&amp;#34;
            storage_account_key: &amp;#34;&amp;#34;
            use_managed_identity: false
            use_federated_token: false
            user_assigned_id: &amp;#34;&amp;#34;
            container_name: &amp;#34;&amp;#34;
            prefix: &amp;#34;&amp;#34;
            endpoint_suffix: blob.core.windows.net
            max_buffers: 4
            buffer_size: 3145728
            hedge_requests_at: 0s
            hedge_requests_up_to: 2
        cache: &amp;#34;&amp;#34;
        background_cache:
            writeback_goroutines: 10
            writeback_buffer: 10000
        memcached: null
        redis: null
        cache_min_compaction_level: 0
        cache_max_block_age: 0s
overrides:
    defaults:
        ingestion:
            rate_strategy: local
            rate_limit_bytes: 15000000
            burst_size_bytes: 20000000
            max_traces_per_user: 10000
            retry_info_enabled: true
        read:
            max_bytes_per_tag_values_query: 1000000
        metrics_generator:
            generate_native_histograms: classic
            ingestion_time_range_slack: 0s
            native_histogram_bucket_factor: 1.1
            native_histogram_max_bucket_number: 100
            native_histogram_min_reset_duration: 15m0s
        global:
            max_bytes_per_trace: 5000000
    per_tenant_override_config: &amp;#34;&amp;#34;
    per_tenant_override_period: 10s
    user_configurable_overrides:
        enabled: false
        poll_interval: 1m0s
        client:
            backend: &amp;#34;&amp;#34;
            confirm_versioning: true
            local:
                path: &amp;#34;&amp;#34;
            gcs:
                bucket_name: &amp;#34;&amp;#34;
                prefix: &amp;#34;&amp;#34;
                chunk_buffer_size: 10485760
                endpoint: &amp;#34;&amp;#34;
                hedge_requests_at: 0s
                hedge_requests_up_to: 2
                insecure: false
                object_cache_control: &amp;#34;&amp;#34;
                object_metadata: {}
                list_blocks_concurrency: 3
                max_retries: 3
            s3:
                tls_cert_path: &amp;#34;&amp;#34;
                tls_key_path: &amp;#34;&amp;#34;
                tls_ca_path: &amp;#34;&amp;#34;
                tls_server_name: &amp;#34;&amp;#34;
                tls_insecure_skip_verify: false
                tls_cipher_suites: &amp;#34;&amp;#34;
                tls_min_version: VersionTLS12
                bucket: &amp;#34;&amp;#34;
                prefix: &amp;#34;&amp;#34;
                endpoint: &amp;#34;&amp;#34;
                region: &amp;#34;&amp;#34;
                access_key: &amp;#34;&amp;#34;
                secret_key: &amp;#34;&amp;#34;
                session_token: &amp;#34;&amp;#34;
                insecure: false
                part_size: 0
                hedge_requests_at: 0s
                hedge_requests_up_to: 2
                signature_v2: false
                forcepathstyle: false
                enable_dual_stack: false
                bucket_lookup_type: 0
                tags: {}
                storage_class: &amp;#34;&amp;#34;
                metadata: {}
                native_aws_auth_enabled: false
                list_blocks_concurrency: 3
                sse:
                    type: &amp;#34;&amp;#34;
                    kms_key_id: &amp;#34;&amp;#34;
                    kms_encryption_context: &amp;#34;&amp;#34;
                    encryption_key: &amp;#34;&amp;#34;
            azure:
                storage_account_name: &amp;#34;&amp;#34;
                storage_account_key: &amp;#34;&amp;#34;
                use_managed_identity: false
                use_federated_token: false
                user_assigned_id: &amp;#34;&amp;#34;
                container_name: &amp;#34;&amp;#34;
                prefix: &amp;#34;&amp;#34;
                endpoint_suffix: blob.core.windows.net
                max_buffers: 4
                buffer_size: 3145728
                hedge_requests_at: 0s
                hedge_requests_up_to: 2
        api:
            check_for_conflicting_runtime_overrides: false
memberlist:
    node_name: &amp;#34;&amp;#34;
    randomize_node_name: true
    stream_timeout: 2s
    retransmit_factor: 2
    pull_push_interval: 30s
    gossip_interval: 1s
    gossip_nodes: 2
    gossip_to_dead_nodes_time: 30s
    dead_node_reclaim_time: 0s
    compression_enabled: false
    notify_interval: 0s
    advertise_addr: &amp;#34;&amp;#34;
    advertise_port: 7946
    cluster_label: &amp;#34;&amp;#34;
    cluster_label_verification_disabled: false
    join_members: []
    min_join_backoff: 1s
    max_join_backoff: 1m0s
    max_join_retries: 10
    abort_if_cluster_fast_join_fails: false
    abort_if_cluster_join_fails: false
    rejoin_interval: 0s
    left_ingesters_timeout: 5m0s
    obsolete_entries_timeout: 30s
    leave_timeout: 20s
    broadcast_timeout_for_local_updates_on_shutdown: 10s
    message_history_buffer_bytes: 0
    watch_prefix_buffer_size: 128
    bind_addr: []
    bind_port: 7946
    packet_dial_timeout: 2s
    packet_write_timeout: 5s
    max_concurrent_writes: 3
    acquire_writer_timeout: 250ms
    tls_enabled: false
    tls_cert_path: &amp;#34;&amp;#34;
    tls_key_path: &amp;#34;&amp;#34;
    tls_ca_path: &amp;#34;&amp;#34;
    tls_server_name: &amp;#34;&amp;#34;
    tls_insecure_skip_verify: false
    tls_cipher_suites: &amp;#34;&amp;#34;
    tls_min_version: &amp;#34;&amp;#34;
    zone_aware_routing:
        enabled: false
        instance_availability_zone: &amp;#34;&amp;#34;
        role: member
usage_report:
    reporting_enabled: true
    backoff:
        min_period: 100ms
        max_period: 10s
        max_retries: 0
cache:
    background:
        writeback_goroutines: 10
        writeback_buffer: 10000
    caches: []
backend_scheduler:
    work:
        prune_age: 1h0m0s
        dead_job_timeout: 24h0m0s
    maintenance_interval: 1m0s
    backend_flush_interval: 1m0s
    provider:
        retention:
            interval: 1h0m0s
        compaction:
            measure_interval: 1m0s
            compaction:
                v2_in_buffer_bytes: 5242880
                v2_out_buffer_bytes: 20971520
                v2_prefetch_traces_count: 1000
                compaction_window: 1h0m0s
                max_compaction_objects: 6000000
                max_block_bytes: 107374182400
                block_retention: 336h0m0s
                compacted_block_retention: 1h0m0s
                retention_concurrency: 10
                max_time_per_tenant: 5m0s
                compaction_cycle: 30s
            max_jobs_per_tenant: 1000
            min_input_blocks: 2
            max_input_blocks: 4
            max_compaction_level: 0
            min_cycle_interval: 30s
    job_timeout: 15s
    local_work_path: /var/tempo
backend_scheduler_client:
    grpc_client_config:
        max_recv_msg_size: 104857600
        max_send_msg_size: 104857600
        grpc_compression: snappy
        rate_limit: 0
        rate_limit_burst: 0
        backoff_on_ratelimits: false
        backoff_config:
            min_period: 100ms
            max_period: 10s
            max_retries: 10
        initial_stream_window_size: 63KiB1023B
        initial_connection_window_size: 63KiB1023B
        tls_enabled: false
        tls_cert_path: &amp;#34;&amp;#34;
        tls_key_path: &amp;#34;&amp;#34;
        tls_ca_path: &amp;#34;&amp;#34;
        tls_server_name: &amp;#34;&amp;#34;
        tls_insecure_skip_verify: false
        tls_cipher_suites: &amp;#34;&amp;#34;
        tls_min_version: &amp;#34;&amp;#34;
        connect_timeout: 5s
        connect_backoff_base_delay: 1s
        connect_backoff_max_delay: 5s
        cluster_validation:
            label: &amp;#34;&amp;#34;
backend_worker:
    backend_scheduler_addr: &amp;#34;&amp;#34;
    backoff:
        min_period: 100ms
        max_period: 1m0s
        max_retries: 0
    compaction:
        v2_in_buffer_bytes: 5242880
        v2_out_buffer_bytes: 20971520
        v2_prefetch_traces_count: 1000
        compaction_window: 1h0m0s
        max_compaction_objects: 6000000
        max_block_bytes: 107374182400
        block_retention: 336h0m0s
        compacted_block_retention: 1h0m0s
        retention_concurrency: 10
        max_time_per_tenant: 5m0s
        compaction_cycle: 30s
    override_ring_key: backend-worker
    ring:
        kvstore:
            store: &amp;#34;&amp;#34;
            prefix: collectors/
            consul:
                host: localhost:8500
                acl_token: &amp;#34;&amp;#34;
                http_client_timeout: 20s
                consistent_reads: false
                watch_rate_limit: 1
                watch_burst_size: 1
                cas_retry_delay: 1s
            etcd:
                endpoints: []
                dial_timeout: 10s
                max_retries: 10
                tls_enabled: false
                tls_cert_path: &amp;#34;&amp;#34;
                tls_key_path: &amp;#34;&amp;#34;
                tls_ca_path: &amp;#34;&amp;#34;
                tls_server_name: &amp;#34;&amp;#34;
                tls_insecure_skip_verify: false
                tls_cipher_suites: &amp;#34;&amp;#34;
                tls_min_version: &amp;#34;&amp;#34;
                username: &amp;#34;&amp;#34;
                password: &amp;#34;&amp;#34;
            multi:
                primary: &amp;#34;&amp;#34;
                secondary: &amp;#34;&amp;#34;
                mirror_enabled: false
                mirror_timeout: 2s
        heartbeat_period: 5s
        heartbeat_timeout: 1m0s
        wait_stability_min_duration: 1m0s
        wait_stability_max_duration: 5m0s
        instance_id: hostname
        instance_interface_names:
            - eth0
            - en0
        instance_port: 0
        instance_addr: &amp;#34;&amp;#34;
        enable_inet6: false
        wait_active_instance_timeout: 10m0s
    finish_on_shutdown_timeout: 30s
live_store:
    ring:
        kvstore:
            store: memberlist
            prefix: collectors/
            consul:
                host: localhost:8500
                acl_token: &amp;#34;&amp;#34;
                http_client_timeout: 20s
                consistent_reads: false
                watch_rate_limit: 1
                watch_burst_size: 1
                cas_retry_delay: 1s
            etcd:
                endpoints: []
                dial_timeout: 10s
                max_retries: 10
                tls_enabled: false
                tls_cert_path: &amp;#34;&amp;#34;
                tls_key_path: &amp;#34;&amp;#34;
                tls_ca_path: &amp;#34;&amp;#34;
                tls_server_name: &amp;#34;&amp;#34;
                tls_insecure_skip_verify: false
                tls_cipher_suites: &amp;#34;&amp;#34;
                tls_min_version: &amp;#34;&amp;#34;
                username: &amp;#34;&amp;#34;
                password: &amp;#34;&amp;#34;
            multi:
                primary: &amp;#34;&amp;#34;
                secondary: &amp;#34;&amp;#34;
                mirror_enabled: false
                mirror_timeout: 2s
        heartbeat_period: 5s
        heartbeat_timeout: 1m0s
        instance_id: hostname
        instance_interface_names:
            - eth0
        instance_addr: &amp;#34;&amp;#34;
        instance_port: 0
        enable_inet6: false
        instance_zone: &amp;#34;&amp;#34;
    partition_ring:
        kvstore:
            store: memberlist
            prefix: collectors/
            consul:
                host: localhost:8500
                acl_token: &amp;#34;&amp;#34;
                http_client_timeout: 20s
                consistent_reads: false
                watch_rate_limit: 1
                watch_burst_size: 1
                cas_retry_delay: 1s
            etcd:
                endpoints: []
                dial_timeout: 10s
                max_retries: 10
                tls_enabled: false
                tls_cert_path: &amp;#34;&amp;#34;
                tls_key_path: &amp;#34;&amp;#34;
                tls_ca_path: &amp;#34;&amp;#34;
                tls_server_name: &amp;#34;&amp;#34;
                tls_insecure_skip_verify: false
                tls_cipher_suites: &amp;#34;&amp;#34;
                tls_min_version: &amp;#34;&amp;#34;
                username: &amp;#34;&amp;#34;
                password: &amp;#34;&amp;#34;
            multi:
                primary: &amp;#34;&amp;#34;
                secondary: &amp;#34;&amp;#34;
                mirror_enabled: false
                mirror_timeout: 2s
        min_partition_owners_count: 1
        min_partition_owners_duration: 10s
        delete_inactive_partition_after: 13h0m0s
    metrics:
        time_overlap_cutoff: 0.2
    commit_interval: 5s
    wal:
        path: /var/tempo/live-store/traces
        v2_encoding: none
        search_encoding: none
        ingestion_time_range_slack: 2m0s
        version: vParquet4
    query_block_concurrency: 10
    complete_block_timeout: 1h0m0s
    complete_block_concurrency: 2
    shutdown_marker_dir: /var/tempo/live-store/shutdown-marker
    flush_check_period: 10s
    flush_op_timeout: 5m0s
    max_trace_live: 30s
    max_trace_idle: 5s
    max_live_traces_bytes: 250000000
    max_block_duration: 30m0s
    max_block_bytes: 104857600
    block_config:
        bloom_filter_false_positive: 0.01
        bloom_filter_shard_size_bytes: 102400
        version: &amp;#34;&amp;#34;
        search_encoding: snappy
        search_page_size_bytes: 1048576
        v2_index_downsample_bytes: 1048576
        v2_index_page_size_bytes: 256000
        v2_encoding: zstd
        parquet_row_group_size_bytes: 100000000
        parquet_dedicated_columns:
            - scope: resource
              name: k8s.cluster.name
              type: string
              options: []
            - scope: resource
              name: k8s.namespace.name
              type: string
              options: []
            - scope: resource
              name: k8s.pod.name
              type: string
              options: []
            - scope: resource
              name: k8s.container.name
              type: string
              options: []
            - scope: span
              name: http.request.method
              type: string
              options: []
            - scope: span
              name: http.response.status_code
              type: int
              options: []
            - scope: span
              name: url.path
              type: string
              options: []
            - scope: span
              name: url.route
              type: string
              options: []
            - scope: span
              name: server.address
              type: string
              options: []
            - scope: span
              name: server.port
              type: int
              options: []
            - scope: span
              name: http.method
              type: string
              options: []
            - scope: span
              name: http.url
              type: string
              options: []
            - scope: span
              name: http.route
              type: string
              options: []
            - scope: span
              name: http.status_code
              type: int
              options: []&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="manifest">Manifest&lt;/h1>
&lt;p>This document is a reference for all Tempo options and their defaults. If you are just getting
started with Tempo, refer to &lt;a href="https://github.com/grafana/tempo/tree/main/example/docker-compose" target="_blank" rel="noopener noreferrer">Tempo examples&lt;/a>
and other &lt;a href="../">configuration documentation&lt;/a>. Most installations will require only setting 10 to 20 of these options.&lt;/p></description></item><item><title>Compression and encoding</title><link>https://grafana.com/docs/tempo/v2.10.x/configuration/compression/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.x/configuration/compression/</guid><content><![CDATA[&lt;!-- Page needs to be updated. --&gt;
&lt;h1 id=&#34;compression-and-encoding&#34;&gt;Compression and encoding&lt;/h1&gt;
&lt;p&gt;Tempo can compress traces that it pushes to backend storage. This requires extra
memory and CPU, but it reduces the quantity of stored data.
Anecdotal tests suggest that &lt;code&gt;zstd&lt;/code&gt; will cut your storage costs to ~15% of the uncompressed amount.
It is &lt;em&gt;highly&lt;/em&gt; recommended to use the default &lt;code&gt;zstd&lt;/code&gt;. (The compression field is used for the old v2 format. the vParquet* formats compress columns individually.)&lt;/p&gt;
&lt;p&gt;Compression is configured under storage like so:&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;storage:
  trace:
    block:
      v2_encoding: zstd&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The following options are supported:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;none&lt;/li&gt;
&lt;li&gt;gzip&lt;/li&gt;
&lt;li&gt;lz4-64k&lt;/li&gt;
&lt;li&gt;lz4-256k&lt;/li&gt;
&lt;li&gt;lz4-1M&lt;/li&gt;
&lt;li&gt;lz4&lt;/li&gt;
&lt;li&gt;snappy&lt;/li&gt;
&lt;li&gt;zstd&lt;/li&gt;
&lt;li&gt;s2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Although all of these compression formats are supported in Tempo, at Grafana
we use &lt;code&gt;zstd&lt;/code&gt;. It&amp;rsquo;s possible/probable that the other compression algorithms may have issue at scale.
File an issue if you have any problems.&lt;/p&gt;
&lt;h2 id=&#34;wal&#34;&gt;WAL&lt;/h2&gt;
&lt;p&gt;The WAL also supports compression. By default, this is configured to use &lt;code&gt;snappy&lt;/code&gt;. This comes with a small performance
penalty but reduces disk I/O and and adds checksums to the WAL. All of the above configuration options are supported
but only &lt;code&gt;snappy&lt;/code&gt; has been tested at scale.&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;storage:
  trace:
    wal:
      v2_encoding: snappy&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;!-- Page needs to be updated. -->
&lt;h1 id="compression-and-encoding">Compression and encoding&lt;/h1>
&lt;p>Tempo can compress traces that it pushes to backend storage. This requires extra
memory and CPU, but it reduces the quantity of stored data.
Anecdotal tests suggest that &lt;code>zstd&lt;/code> will cut your storage costs to ~15% of the uncompressed amount.
It is &lt;em>highly&lt;/em> recommended to use the default &lt;code>zstd&lt;/code>. (The compression field is used for the old v2 format. the vParquet* formats compress columns individually.)&lt;/p></description></item><item><title>Apache Parquet block format</title><link>https://grafana.com/docs/tempo/v2.10.x/configuration/parquet/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.x/configuration/parquet/</guid><content><![CDATA[&lt;h1 id=&#34;apache-parquet-block-format&#34;&gt;Apache Parquet block format&lt;/h1&gt;
&lt;p&gt;Tempo has a default columnar block format based on Apache Parquet.
This format is required for tags-based search as well as &lt;a href=&#34;../../traceql/&#34;&gt;TraceQL&lt;/a&gt;, the query language for traces.
The columnar block format improves search performance and enables an ecosystem of tools, including 
    &lt;a href=&#34;/docs/tempo/v2.10.x/operations/tempo_cli/#analyse-blocks&#34;&gt;Tempo CLI&lt;/a&gt;, to access the underlying trace data.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&#34;https://github.com/grafana/tempo/issues/4694&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Issue 4694&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;considerations&#34;&gt;Considerations&lt;/h2&gt;
&lt;p&gt;The Parquet block format is enabled by default since Tempo 2.0.&lt;/p&gt;
&lt;p&gt;If you install using the 
    &lt;a href=&#34;/docs/tempo/v2.10.x/setup/helm-chart/&#34;&gt;Tempo Helm charts&lt;/a&gt;, then Parquet is enabled by default.
No data conversion or upgrade process is necessary.
As soon as a block format is enabled, Tempo starts writing data in that format, leaving existing data as-is.&lt;/p&gt;
&lt;p&gt;Block formats based on Parquet require more CPU and memory resources than the previous &lt;code&gt;v2&lt;/code&gt; format but provide search and TraceQL functionality.&lt;/p&gt;
&lt;h2 id=&#34;choose-a-different-block-format&#34;&gt;Choose a different block format&lt;/h2&gt;


&lt;div class=&#34;admonition admonition-warning&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Warning&lt;/p&gt;&lt;p&gt;&lt;code&gt;vParquet3&lt;/code&gt; and &lt;code&gt;v2&lt;/code&gt; have been deprecated and will be removed in Tempo 3.0. In order to cleanly migrate forward to Tempo 3.0 you will need &lt;code&gt;vParquet4&lt;/code&gt; or higher
blocks.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;The default block format is &lt;code&gt;vParquet4&lt;/code&gt;, which is the latest iteration of the Parquet-based columnar block format in Tempo.
vParquet4 introduces columns that enable querying for data in array attributes as well as events and links.
For more information, refer to 
    &lt;a href=&#34;/docs/tempo/v2.10.x/operations/dedicated_columns/&#34;&gt;Dedicated attribute columns&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can still use the previous format &lt;code&gt;vParquet3&lt;/code&gt;.
To enable it, set the block version option to &lt;code&gt;vParquet3&lt;/code&gt; in the 
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/#storage&#34;&gt;Storage section&lt;/a&gt; of the configuration file.&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: vParquet4
[version: vParquet3]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;In some cases, you may choose to disable Parquet and use the old &lt;code&gt;v2&lt;/code&gt; block format.
Using the &lt;code&gt;v2&lt;/code&gt; block format disables all forms of search, but also reduces resource consumption, and may be desired for a high-throughput cluster that doesn&amp;rsquo;t need these capabilities.
To make this change, set the block version option to &lt;code&gt;v2&lt;/code&gt; in the Storage section of the configuration file.&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, vParquet3, vParquet4
[version: v2]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;To re-enable the default &lt;code&gt;vParquet4&lt;/code&gt; format, remove the block version option from the 
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/#storage&#34;&gt;Storage section&lt;/a&gt; of the configuration file or set the option to &lt;code&gt;vParquet4&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;parquet-configuration-parameters&#34;&gt;Parquet configuration parameters&lt;/h2&gt;
&lt;p&gt;Some parameters in the Tempo configuration are specific to Parquet.
For more information, refer to the &lt;a href=&#34;../#storage&#34;&gt;storage configuration documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;trace-search-parameters&#34;&gt;Trace search parameters&lt;/h3&gt;
&lt;p&gt;These configuration options impact trace search.&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;Default value&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;[read_buffer_size_bytes: &amp;lt;int&amp;gt;]&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;10485676&lt;/td&gt;
              &lt;td&gt;Size of read buffers used when performing search on a vParquet block. This value times the read_buffer_count is the total amount of bytes used for buffering when performing search on a Parquet block.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;[read_buffer_count: &amp;lt;int&amp;gt;]&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;32&lt;/td&gt;
              &lt;td&gt;Number of read buffers used when performing search on a vParquet block. This value times the read_buffer_size_bytes is the total amount of bytes used for buffering when performing search on a Parquet block.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;The &lt;code&gt;cache_control&lt;/code&gt; section contains the follow parameters for Parquet metadata objects:&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;Default value&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;[footer: &lt;bool&gt; | default = false]&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Specifies if the footer should be cached&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;[column_index: &amp;lt;bool&amp;gt; | default = false]&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Specifies if the column index should be cached&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;[offset_index: &amp;lt;bool&amp;gt; | default = false]&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Specifies if the offset index should be cached&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="apache-parquet-block-format">Apache Parquet block format&lt;/h1>
&lt;p>Tempo has a default columnar block format based on Apache Parquet.
This format is required for tags-based search as well as &lt;a href="../../traceql/">TraceQL&lt;/a>, the query language for traces.
The columnar block format improves search performance and enables an ecosystem of tools, including
&lt;a href="/docs/tempo/v2.10.x/operations/tempo_cli/#analyse-blocks">Tempo CLI&lt;/a>, to access the underlying trace data.&lt;/p></description></item><item><title>Hosted storage</title><link>https://grafana.com/docs/tempo/v2.10.x/configuration/hosted-storage/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.x/configuration/hosted-storage/</guid><content><![CDATA[&lt;h1 id=&#34;hosted-storage&#34;&gt;Hosted storage&lt;/h1&gt;
&lt;p&gt;Tempo provides additional hosted storage configuration options discussed on the pages below. These options relate to providers such as Google Cloud, AWS S3, and Azure.&lt;/p&gt;
&lt;p&gt;For additional details about storage configuration, refer to &lt;a href=&#34;../#storage&#34;&gt;Storage configuration&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/hosted-storage/s3/&#34;&gt;Amazon S3 permissions&lt;/a&gt;&lt;br&gt;Set Amazon S3 permissions for Tempo.&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/hosted-storage/azure/&#34;&gt;Azure blob storage permissions and management&lt;/a&gt;&lt;br&gt;Azure blob storage permissions and configuration options for Tempo.&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/hosted-storage/gcs/&#34;&gt;Google Cloud Storage&lt;/a&gt;&lt;br&gt;Learn about Google Cloud Storage permissions for Tempo.&lt;/li&gt;&lt;/ul&gt;
]]></content><description>&lt;h1 id="hosted-storage">Hosted storage&lt;/h1>
&lt;p>Tempo provides additional hosted storage configuration options discussed on the pages below. These options relate to providers such as Google Cloud, AWS S3, and Azure.&lt;/p></description></item><item><title>Network options</title><link>https://grafana.com/docs/tempo/v2.10.x/configuration/network/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.x/configuration/network/</guid><content><![CDATA[&lt;h1 id=&#34;network-options&#34;&gt;Network options&lt;/h1&gt;
&lt;p&gt;Tempo provides additional network configuration options discussed on the pages below.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/network/ipv6/&#34;&gt;Configure IPv6&lt;/a&gt;&lt;br&gt;Learn how to configure IPv6 for Tempo.&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/network/tls/&#34;&gt;Configure TLS communication&lt;/a&gt;&lt;br&gt;Configure Tempo components to communicate using TLS.&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/network/sidecar-proxy/&#34;&gt;Run Tempo distributed with sidecar proxies&lt;/a&gt;&lt;br&gt;Configure Tempo distributed to run with sidecar proxies&lt;/li&gt;&lt;/ul&gt;
]]></content><description>&lt;h1 id="network-options">Network options&lt;/h1>
&lt;p>Tempo provides additional network configuration options discussed on the pages below.&lt;/p>
&lt;ul>&lt;li>
&lt;a href="/docs/tempo/v2.10.x/configuration/network/ipv6/">Configure IPv6&lt;/a>&lt;br>Learn how to configure IPv6 for Tempo.&lt;/li>&lt;li>
&lt;a href="/docs/tempo/v2.10.x/configuration/network/tls/">Configure TLS communication&lt;/a>&lt;br>Configure Tempo components to communicate using TLS.&lt;/li>&lt;li>
&lt;a href="/docs/tempo/v2.10.x/configuration/network/sidecar-proxy/">Run Tempo distributed with sidecar proxies&lt;/a>&lt;br>Configure Tempo distributed to run with sidecar proxies&lt;/li>&lt;/ul></description></item><item><title>Polling</title><link>https://grafana.com/docs/tempo/v2.10.x/configuration/polling/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.x/configuration/polling/</guid><content><![CDATA[&lt;h1 id=&#34;polling&#34;&gt;Polling&lt;/h1&gt;
&lt;p&gt;The polling cycle is controlled by a number of configuration options detailed here.&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;storage:
    trace:
        # How often to repoll the backend for new blocks. Default is 5m
        [blocklist_poll: &amp;lt;duration&amp;gt;]

        # Number of blocks to process in parallel during polling. Default is 50.
        [blocklist_poll_concurrency: &amp;lt;int&amp;gt;]

        # By default components will pull the blocklist from the tenant index. If that fails the component can
        # fallback to scanning the entire bucket. Set to false to disable this behavior. Default is true.
        [blocklist_poll_fallback: &amp;lt;bool&amp;gt;]

        # Maximum number of compactors or workers that should build the tenant index. All other components will download
        # the index. Default 2.
        [blocklist_poll_tenant_index_builders: &amp;lt;int&amp;gt;]

        # The oldest allowable tenant index. If an index is pulled that is older than this duration,
        # the polling will consider this an error. Note that `blocklist_poll_fallback` applies here.
        # If fallback is true and a tenant index exceeds this duration, it will fall back to listing
        # the bucket contents.
        # Default 0 (disabled).
        [blocklist_poll_stale_tenant_index: &amp;lt;duration&amp;gt;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Due to the mechanics of the &lt;a href=&#34;../../operations/monitor/polling/&#34;&gt;tenant index&lt;/a&gt;, the blocklist will be stale by
at most 2 times the configured &lt;code&gt;blocklist_poll&lt;/code&gt; duration. There are two configuration options that need to be balanced
against the &lt;code&gt;blockist_poll&lt;/code&gt; to handle this:&lt;/p&gt;
&lt;p&gt;The ingester &lt;code&gt;complete_block_timeout&lt;/code&gt; is used to hold a block in the ingester for a given period of time after
it has been flushed. This allows the ingester to return traces to the queriers while they are still unaware
of the newly flushed blocks.&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;ingester:
  # How long to hold a complete block in the ingester after it has been flushed to the backend. Default is 15m
  [complete_block_timeout: &amp;lt;duration&amp;gt;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The compactor &lt;code&gt;compacted_block_retention&lt;/code&gt; is used to keep a block in the backend for a given period of time
after it has been compacted and the data is no longer needed. This allows queriers with a stale blocklist to access
these blocks successfully until they complete their polling cycles and have up to date blocklists. Like the
&lt;code&gt;complete_block_timeout&lt;/code&gt;, this should be at a minimum 2x the configured &lt;code&gt;blocklist_poll&lt;/code&gt; duration.&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;compactor:
  compaction:
    # How long to leave a block in the backend after it has been compacted successfully. Default is 1h
    [compacted_block_retention: &amp;lt;duration&amp;gt;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Additionally, the querier &lt;code&gt;blocklist_poll&lt;/code&gt; duration needs to be greater than or equal to the compactor
&lt;code&gt;blocklist_poll&lt;/code&gt; duration. Otherwise, a querier may not correctly check all assigned blocks and incorrectly return 404.
It is recommended to simply set both components to use the same poll duration.&lt;/p&gt;
]]></content><description>&lt;h1 id="polling">Polling&lt;/h1>
&lt;p>The polling cycle is controlled by a number of configuration options detailed here.&lt;/p>
&lt;div class="code-snippet code-snippet__mini">&lt;div class="lang-toolbar__mini">
&lt;span class="code-clipboard">
&lt;button x-data="app_code_snippet()" x-init="init()" @click="copy()">
&lt;img class="code-clipboard__icon" src="/media/images/icons/icon-copy-small-2.svg" alt="Copy code to clipboard" width="14" height="13">
&lt;span>Copy&lt;/span>
&lt;/button>
&lt;/span>
&lt;/div>&lt;div class="code-snippet code-snippet__border">
&lt;pre data-expanded="false">&lt;code class="language-none">storage:
trace:
# How often to repoll the backend for new blocks. Default is 5m
[blocklist_poll: &amp;lt;duration&amp;gt;]
# Number of blocks to process in parallel during polling. Default is 50.
[blocklist_poll_concurrency: &amp;lt;int&amp;gt;]
# By default components will pull the blocklist from the tenant index. If that fails the component can
# fallback to scanning the entire bucket. Set to false to disable this behavior. Default is true.
[blocklist_poll_fallback: &amp;lt;bool&amp;gt;]
# Maximum number of compactors or workers that should build the tenant index. All other components will download
# the index. Default 2.
[blocklist_poll_tenant_index_builders: &amp;lt;int&amp;gt;]
# The oldest allowable tenant index. If an index is pulled that is older than this duration,
# the polling will consider this an error. Note that `blocklist_poll_fallback` applies here.
# If fallback is true and a tenant index exceeds this duration, it will fall back to listing
# the bucket contents.
# Default 0 (disabled).
[blocklist_poll_stale_tenant_index: &amp;lt;duration&amp;gt;]&lt;/code>&lt;/pre>
&lt;/div>
&lt;/div>
&lt;p>Due to the mechanics of the &lt;a href="../../operations/monitor/polling/">tenant index&lt;/a>, the blocklist will be stale by
at most 2 times the configured &lt;code>blocklist_poll&lt;/code> duration. There are two configuration options that need to be balanced
against the &lt;code>blockist_poll&lt;/code> to handle this:&lt;/p></description></item><item><title>Usage tracker</title><link>https://grafana.com/docs/tempo/v2.10.x/configuration/usage-tracker/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.x/configuration/usage-tracker/</guid><content><![CDATA[&lt;h1 id=&#34;usage-tracker&#34;&gt;Usage tracker&lt;/h1&gt;
&lt;p&gt;The usage tracker accurately tracks the amount of ingested traffic using a set of custom labels on a per-tenant basis, providing fine-grained control over your data.&lt;/p&gt;
&lt;p&gt;Use the &lt;code&gt;cost_attributes&lt;/code&gt; option to configure usage trackers in the distributor, which expose metrics of ingested traffic grouped by configurable attributes exposed on &lt;code&gt;/usage_metrics&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;enable-the-usage-tracker&#34;&gt;Enable the usage tracker&lt;/h2&gt;
&lt;p&gt;To use this feature, you need to enable it in the 
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/#distributor&#34;&gt;distributor&lt;/a&gt; and configure the overrides to handle the data.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open your configuration file, for example, &lt;code&gt;tempo.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In the &lt;code&gt;distributor&lt;/code&gt; section, locate the &lt;code&gt;cost_attribution&lt;/code&gt; line. If it is not present, then copy and paste the example below into your distributor section and update the options.&lt;/li&gt;
&lt;/ol&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; usage:
        cost_attribution:
            # Enables the &amp;#34;cost-attribution&amp;#34; usage tracker. Per-tenant attributes are configured in overrides.
            [enabled: &amp;lt;boolean&amp;gt; | default = false]
            # Maximum number of series per tenant.
            [max_cardinality: &amp;lt;int&amp;gt; | default = 10000]
            # Interval after which a series is considered stale and will be deleted from the registry.
            # Once a metrics series is deleted, it won&amp;#39;t be emitted anymore, keeping active series low.
            [stale_duration: &amp;lt;duration&amp;gt; | default = 15m0s]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;configure-overrides&#34;&gt;Configure overrides&lt;/h3&gt;
&lt;p&gt;You also need to configure the dimensions to break down your the usage data in the standard overrides.
In the overrides section, you can define attributes to group ingested data by and you can rename and combine attributes.&lt;/p&gt;
&lt;p&gt;For more information, refer to the 
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/#standard-overrides&#34;&gt;standard overrides&lt;/a&gt; section of the Configuration documentation.&lt;/p&gt;
&lt;p&gt;In this example, usage data is grouped by &lt;code&gt;service.name&lt;/code&gt;.&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 configuration block
overrides:
  # Global ingestion limits configurations
  defaults:
    # Cost attribution usage tracker configuration
    cost_attribution:
      dimensions:
        service.name: &amp;#34;&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can also configure per tenant in the 
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/#runtime-overrides&#34;&gt;runtime-overrides&lt;/a&gt; or in the 
    &lt;a href=&#34;/docs/tempo/v2.10.x/configuration/#user-configurable-overrides&#34;&gt;user-configurable-overrides&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;review-usage-metrics&#34;&gt;Review usage metrics&lt;/h2&gt;
&lt;p&gt;Once everything is configured, the usage metrics are exposed in the distributor:&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;GET /usage_metrics&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example:&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;curl http://localhost:3200/usage_metrics
# HELP tempo_usage_tracker_bytes_received_total bytes total received with these attributes
# TYPE tempo_usage_tracker_bytes_received_total counter
tempo_usage_tracker_bytes_received_total{service_name=&amp;#34;article-service&amp;#34;,tenant=&amp;#34;single-tenant&amp;#34;,tracker=&amp;#34;cost-attribution&amp;#34;} 7327
tempo_usage_tracker_bytes_received_total{service_name=&amp;#34;auth-service&amp;#34;,tenant=&amp;#34;single-tenant&amp;#34;,tracker=&amp;#34;cost-attribution&amp;#34;} 8938
tempo_usage_tracker_bytes_received_total{service_name=&amp;#34;billing-service&amp;#34;,tenant=&amp;#34;single-tenant&amp;#34;,tracker=&amp;#34;cost-attribution&amp;#34;} 2401
tempo_usage_tracker_bytes_received_total{service_name=&amp;#34;cart-service&amp;#34;,tenant=&amp;#34;single-tenant&amp;#34;,tracker=&amp;#34;cost-attribution&amp;#34;} 4116
tempo_usage_tracker_bytes_received_total{service_name=&amp;#34;postgres&amp;#34;,tenant=&amp;#34;single-tenant&amp;#34;,tracker=&amp;#34;cost-attribution&amp;#34;} 3571
tempo_usage_tracker_bytes_received_total{service_name=&amp;#34;shop-backend&amp;#34;,tenant=&amp;#34;single-tenant&amp;#34;,tracker=&amp;#34;cost-attribution&amp;#34;} 17619&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You can configure Prometheus to scrape this endpoint to collect usage metrics.&lt;/p&gt;
&lt;p&gt;Example:&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;scrape_configs:
  - job_name: &amp;#39;tempo-usage&amp;#39;
    static_configs:
      - targets: [&amp;#39;&amp;lt;DISTRIBUTOR-HOST&amp;gt;:3200&amp;#39;]
    metrics_path: &amp;#39;/usage_metrics&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;scope-dimensions-by-resource-or-span&#34;&gt;Scope dimensions by resource or span&lt;/h2&gt;
&lt;p&gt;You can configure dimensions to look for attributes at specific scopes using prefixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;resource.&amp;lt;attribute&amp;gt;&lt;/code&gt; - Look only at resource-level attributes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;span.&amp;lt;attribute&amp;gt;&lt;/code&gt; - Look only at span-level attributes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;attribute&amp;gt;&lt;/code&gt; (no prefix) - Look at both resource and span levels&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&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;overrides:
  defaults:
    cost_attribution:
      dimensions:
        resource.service.name: &amp;#34;service&amp;#34;    # Scoped by resource, only look at `service.name` in resource attributes.
        span.db.system: &amp;#34;database&amp;#34;          # Scoped by span, only look at `db.system` in span attributes.
        k8s.namespace.name: &amp;#34;namespace&amp;#34;     # Unscoped, look at `k8s.namespace.name` in both resource and span attributes&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&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;When using unscoped attributes (no prefix), span-level attributes will always overwrite resource-level attributes if both exist.&lt;/p&gt;
&lt;p&gt;This can lead to mixed values from both scopes, use scope prefixes (&lt;code&gt;resource.&lt;/code&gt; or &lt;code&gt;span.&lt;/code&gt;) for predictable behavior when attributes exist at both and you only want values from one of them.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;This table provides more information about the behavior:&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;Configuration&lt;/th&gt;
              &lt;th&gt;Resource has &lt;code&gt;service.name=&amp;quot;api&amp;quot;&lt;/code&gt;&lt;/th&gt;
              &lt;th&gt;Span has &lt;code&gt;service.name=&amp;quot;worker&amp;quot;&lt;/code&gt;&lt;/th&gt;
              &lt;th&gt;Result&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;resource.service.name&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Uses &lt;code&gt;&amp;quot;api&amp;quot;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Ignores span value&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&amp;quot;api&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;span.service.name&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Ignores resource value&lt;/td&gt;
              &lt;td&gt;Uses &lt;code&gt;&amp;quot;worker&amp;quot;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&amp;quot;worker&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;service.name&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Uses &lt;code&gt;&amp;quot;api&amp;quot;&lt;/code&gt; initially&lt;/td&gt;
              &lt;td&gt;Overwrites with &lt;code&gt;&amp;quot;worker&amp;quot;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;&amp;quot;worker&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;configure-target-labels&#34;&gt;Configure target labels&lt;/h2&gt;
&lt;p&gt;You can customize the label names that appear in the &lt;code&gt;/usage_metrics&lt;/code&gt; metrics by configuring a custom label name in the dimensions configuration.&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;dimensions:
  &amp;lt;ATTRIBUTE_NAME&amp;gt;: &amp;#34;&amp;lt;LABEL_NAME&amp;gt;&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;The &lt;code&gt;_&amp;lt;LABEL_NAME&amp;gt;_&lt;/code&gt; should be a &lt;a href=&#34;https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;valid Prometheus label name&lt;/a&gt;.
If you provide an invalid label name, Tempo sanitizes it.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Example:&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;overrides:
  defaults:
    cost_attribution:
      dimensions:
        service.name: &amp;#34;&amp;#34;                    # Results in: service_name
        span.service.name: &amp;#34;&amp;#34;               # Results in: service_name
        resource.service.name: &amp;#34;&amp;#34;           # Results in: service_name
        span.db.system: &amp;#34;&amp;#34;                  # Results in: db_system
        span.db.system: &amp;#34;database.type&amp;#34;     # Results in: database_type
        k8s.namespace.name: &amp;#34;namespace&amp;#34;     # Results in: namespace&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="usage-tracker">Usage tracker&lt;/h1>
&lt;p>The usage tracker accurately tracks the amount of ingested traffic using a set of custom labels on a per-tenant basis, providing fine-grained control over your data.&lt;/p></description></item><item><title>Use tracing data in Grafana</title><link>https://grafana.com/docs/tempo/v2.10.x/configuration/use-trace-data/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.x/configuration/use-trace-data/</guid><content><![CDATA[&lt;h1 id=&#34;use-tracing-data-in-grafana&#34;&gt;Use tracing data in Grafana&lt;/h1&gt;
&lt;p&gt;You can use Tempo as a data source in Grafana.
Grafana Cloud comes pre-configured with a Tempo data source.&lt;/p&gt;
&lt;p&gt;If you are using Grafana on-prem, you need to 
    &lt;a href=&#34;/docs/grafana/next/datasources/tempo/&#34;&gt;set up the Tempo data source&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-tip&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Tip&lt;/p&gt;&lt;p&gt;If you want to explore tracing data in Grafana, try the &lt;a href=&#34;../../getting-started/docker-example/&#34;&gt;Intro to Metrics, Logs, Traces, and Profiling example&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;This video explains how to add data sources, including Loki, Tempo, and Mimir, to Grafana and Grafana Cloud. Tempo data source set up starts at 4:58 in the video.&lt;/p&gt;
&lt;iframe width=&#34;560&#34; height=&#34;315&#34; src=&#39;https://www.youtube.com/embed/cqHO0oYW6Ic&#39; title=&#34;YouTube video player&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id=&#34;configure-the-data-source&#34;&gt;Configure the data source&lt;/h2&gt;
&lt;p&gt;For detailed instructions on the Tempo data source in Grafana, refer to 
    &lt;a href=&#34;/docs/grafana/next/datasources/tempo/&#34;&gt;Tempo data source&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To configure Tempo with Grafana:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Point the Grafana data source at your Tempo query frontend (or monolithic mode Tempo).&lt;/li&gt;
&lt;li&gt;Enter the URL: &lt;code&gt;http://&amp;lt;tempo hostname&amp;gt;:&amp;lt;http port number&amp;gt;&lt;/code&gt;. For most of &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;the Tempo examples&lt;/a&gt; the following works.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The port of 3200 is a common port used in our examples. Tempo default HTTP port is 3200.&lt;/p&gt;
&lt;h2 id=&#34;query-the-data-source&#34;&gt;Query the data source&lt;/h2&gt;
&lt;p&gt;Refer to 
    &lt;a href=&#34;/docs/tempo/v2.10.x/introduction/tempo-in-grafana/&#34;&gt;Tempo in Grafana&lt;/a&gt; for an overview about how tracing data can be viewed and queried in Grafana.&lt;/p&gt;
&lt;p&gt;For information on querying the Tempo data source, refer to 
    &lt;a href=&#34;/docs/grafana/next/datasources/tempo/query-editor/&#34;&gt;Tempo query editor&lt;/a&gt;.&lt;/p&gt;
]]></content><description>&lt;h1 id="use-tracing-data-in-grafana">Use tracing data in Grafana&lt;/h1>
&lt;p>You can use Tempo as a data source in Grafana.
Grafana Cloud comes pre-configured with a Tempo data source.&lt;/p>
&lt;p>If you are using Grafana on-prem, you need to
&lt;a href="/docs/grafana/next/datasources/tempo/">set up the Tempo data source&lt;/a>.&lt;/p></description></item><item><title>Anonymous usage reporting</title><link>https://grafana.com/docs/tempo/v2.10.x/configuration/anonymous-usage-reporting/</link><pubDate>Thu, 09 Apr 2026 14:59:14 +0000</pubDate><guid>https://grafana.com/docs/tempo/v2.10.x/configuration/anonymous-usage-reporting/</guid><content><![CDATA[&lt;h1 id=&#34;anonymous-usage-reporting&#34;&gt;Anonymous usage reporting&lt;/h1&gt;
&lt;p&gt;By default, Tempo reports 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.&lt;/p&gt;
&lt;p&gt;The following configuration values are used:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Receivers enabled&lt;/li&gt;
&lt;li&gt;Frontend concurrency and version&lt;/li&gt;
&lt;li&gt;Storage cache, backend, WAL and block encodings&lt;/li&gt;
&lt;li&gt;Ring replication factor, and &lt;code&gt;kvstore&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Features toggles enabled&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No private information is collected, and all reports are completely anonymous.&lt;/p&gt;
&lt;h2 id=&#34;configure-anonymous-usage-reporting&#34;&gt;Configure anonymous usage reporting&lt;/h2&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;/docs/tempo/v2.10.x/configuration/#usage-report&#34;&gt;the Configuration documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;view-usage-stats-report&#34;&gt;View usage stats report&lt;/h2&gt;
&lt;p&gt;Tempo provides a usage stats report that you can view in your browser.&lt;/p&gt;
&lt;p&gt;To view the report, go to the following URL on the Tempo instance: &lt;code&gt;http://localhost:3200/status/usage-stats&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;An example report output looks like this:&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;JSON&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-json&#34;&gt;{
  &amp;#34;clusterID&amp;#34;: &amp;#34;&amp;#34;,
  &amp;#34;createdAt&amp;#34;: &amp;#34;0001-01-01T00:00:00Z&amp;#34;,
  &amp;#34;interval&amp;#34;: &amp;#34;0001-01-01T00:00:00Z&amp;#34;,
  &amp;#34;intervalPeriod&amp;#34;: 14400,
  &amp;#34;target&amp;#34;: &amp;#34;all&amp;#34;,
  &amp;#34;version&amp;#34;: {
    &amp;#34;version&amp;#34;: &amp;#34;v2.8.0&amp;#34;,
    &amp;#34;revision&amp;#34;: &amp;#34;31e2dddb5&amp;#34;,
    &amp;#34;branch&amp;#34;: &amp;#34;main&amp;#34;,
    &amp;#34;buildUser&amp;#34;: &amp;#34;&amp;#34;,
    &amp;#34;buildDate&amp;#34;: &amp;#34;&amp;#34;,
    &amp;#34;goVersion&amp;#34;: &amp;#34;go1.24.3&amp;#34;
  },
  &amp;#34;os&amp;#34;: &amp;#34;linux&amp;#34;,
  &amp;#34;arch&amp;#34;: &amp;#34;arm64&amp;#34;,
  &amp;#34;edition&amp;#34;: &amp;#34;oss&amp;#34;,
  &amp;#34;metrics&amp;#34;: {
    &amp;#34;ring_kv_store&amp;#34;: &amp;#34;inmemory&amp;#34;,
    &amp;#34;memstats&amp;#34;: {
      &amp;#34;heap_inuse&amp;#34;: 14106624,
      &amp;#34;stack_inuse&amp;#34;: 2490368,
      &amp;#34;pause_total_ns&amp;#34;: 872084,
      &amp;#34;num_gc&amp;#34;: 3,
      &amp;#34;gc_cpu_fraction&amp;#34;: 0.08786506719453682,
      &amp;#34;heap_alloc&amp;#34;: 11640400,
      &amp;#34;alloc&amp;#34;: 11640400,
      &amp;#34;total_alloc&amp;#34;: 16491760,
      &amp;#34;sys&amp;#34;: 27874568
    },
    &amp;#34;num_cpu&amp;#34;: 8,
    &amp;#34;feature_enabled_multitenancy&amp;#34;: 0,
    &amp;#34;receiver_enabled_jaeger&amp;#34;: 0,
    &amp;#34;storage_block_encoding&amp;#34;: &amp;#34;zstd&amp;#34;,
    &amp;#34;storage_block_search_encoding&amp;#34;: &amp;#34;snappy&amp;#34;,
    &amp;#34;storage_cache&amp;#34;: &amp;#34;&amp;#34;,
    &amp;#34;receiver_enabled_opencensus&amp;#34;: 0,
    &amp;#34;feature_enabled_auth_stats&amp;#34;: 0,
    &amp;#34;frontend_version&amp;#34;: &amp;#34;v1&amp;#34;,
    &amp;#34;storage_backend&amp;#34;: &amp;#34;local&amp;#34;,
    &amp;#34;receiver_enabled_otlp&amp;#34;: 0,
    &amp;#34;ring_replication_factor&amp;#34;: 1,
    &amp;#34;storage_wal_encoding&amp;#34;: &amp;#34;snappy&amp;#34;,
    &amp;#34;storage_wal_search_encoding&amp;#34;: &amp;#34;none&amp;#34;,
    &amp;#34;num_goroutine&amp;#34;: 813,
    &amp;#34;cache_memcached&amp;#34;: 1,
    &amp;#34;cache_redis&amp;#34;: 0,
    &amp;#34;distributor_bytes_received&amp;#34;: {
      &amp;#34;total&amp;#34;: 0,
      &amp;#34;rate&amp;#34;: 0
    },
    &amp;#34;distributor_spans_received&amp;#34;: {
      &amp;#34;total&amp;#34;: 0,
      &amp;#34;rate&amp;#34;: 0
    },
    &amp;#34;receiver_enabled_kafka&amp;#34;: 0,
    &amp;#34;receiver_enabled_zipkin&amp;#34;: 0
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;which-information-is-collected&#34;&gt;Which information is collected?&lt;/h2&gt;
&lt;p&gt;Tempo collects and reports the following information to Grafana Labs.
The report from your Tempo instance may vary from the provided example.
Each field provides insight into the Tempo instance, its environment, and configuration. The fields are grouped by their purpose.&lt;/p&gt;
&lt;p&gt;This information helps Grafana Labs understand how Tempo is used, which features are enabled, and the typical deployment environments, without collecting any private or user-identifying data.&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 maintainers commit to keeping the list of tracked information updated over time, and reporting any change both via the CHANGELOG and the release notes.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;instance-identification&#34;&gt;Instance identification&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;clusterID&lt;/code&gt;&lt;/strong&gt;: A unique, randomly generated identifier for the Tempo cluster. This value helps Grafana Labs distinguish between different deployments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;createdAt&lt;/code&gt;&lt;/strong&gt;: The timestamp when anonymous usage reporting was first enabled and the cluster ID was created.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;interval&lt;/code&gt;&lt;/strong&gt;: The timestamp marking the start of the current reporting interval.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;intervalPeriod&lt;/code&gt;&lt;/strong&gt;: The length of the reporting interval, in seconds.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;deployment-and-version-information&#34;&gt;Deployment and version information&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;target&lt;/code&gt;&lt;/strong&gt;: The deployment mode or target for the Tempo instance, such as &lt;code&gt;all&lt;/code&gt; for monolithic mode.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;version&lt;/code&gt;&lt;/strong&gt;: An object containing detailed version information:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;version&lt;/code&gt;&lt;/strong&gt;: The Tempo version, for example &lt;code&gt;v2.8.0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;revision&lt;/code&gt;&lt;/strong&gt;: The Git commit hash or revision used to build the binary.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;branch&lt;/code&gt;&lt;/strong&gt;: The Git branch used for the build.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;buildUser&lt;/code&gt;&lt;/strong&gt;: The user who built the binary.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;buildDate&lt;/code&gt;&lt;/strong&gt;: The date and time when the binary was built.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;goVersion&lt;/code&gt;&lt;/strong&gt;: The Go language version used for the build.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;environment-details&#34;&gt;Environment details&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;os&lt;/code&gt;&lt;/strong&gt;: The operating system the Tempo instance is running on, such as &lt;code&gt;linux&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;arch&lt;/code&gt;&lt;/strong&gt;: The system architecture, such as &lt;code&gt;arm64&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;edition&lt;/code&gt;&lt;/strong&gt;: The edition of Tempo, such as &lt;code&gt;oss&lt;/code&gt; for open source.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;metrics-and-configuration&#34;&gt;Metrics and configuration&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;metrics&lt;/code&gt;&lt;/strong&gt;: An object containing runtime metrics and configuration:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ring_kv_store&lt;/code&gt;&lt;/strong&gt;: The key-value store used for the ring, for example &lt;code&gt;inmemory&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;memstats&lt;/code&gt;&lt;/strong&gt;: Memory usage statistics, including heap and stack usage, garbage collection metrics, and total allocations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;num_cpu&lt;/code&gt;&lt;/strong&gt;: The number of logical CPU cores available.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;feature_enabled_multitenancy&lt;/code&gt;&lt;/strong&gt;: Indicates if multitenancy is enabled (&lt;code&gt;1&lt;/code&gt;) or not (&lt;code&gt;0&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;receiver_enabled_jaeger&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;receiver_enabled_opencensus&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;receiver_enabled_otlp&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;receiver_enabled_kafka&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;receiver_enabled_zipkin&lt;/code&gt;&lt;/strong&gt;: Flags indicating if each trace receiver is enabled (&lt;code&gt;1&lt;/code&gt;) or not (&lt;code&gt;0&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;storage_block_encoding&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;storage_block_search_encoding&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;storage_wal_encoding&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;storage_wal_search_encoding&lt;/code&gt;&lt;/strong&gt;: The encoding or compression algorithms used for storage blocks and write-ahead logs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;storage_cache&lt;/code&gt;&lt;/strong&gt;: The cache backend used for storage, if any.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;feature_enabled_auth_stats&lt;/code&gt;&lt;/strong&gt;: Indicates if authentication statistics are enabled.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;frontend_version&lt;/code&gt;&lt;/strong&gt;: The version of the frontend component.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;storage_backend&lt;/code&gt;&lt;/strong&gt;: The storage backend in use, such as &lt;code&gt;local&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ring_replication_factor&lt;/code&gt;&lt;/strong&gt;: The replication factor for the ring.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;num_goroutine&lt;/code&gt;&lt;/strong&gt;: The number of active Go routines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;cache_memcached&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;cache_redis&lt;/code&gt;&lt;/strong&gt;: Flags indicating if Memcached or Redis caching is enabled.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;distributor_bytes_received&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;distributor_spans_received&lt;/code&gt;&lt;/strong&gt;: Objects showing the total and rate of bytes and spans received by the distributor.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="anonymous-usage-reporting">Anonymous usage reporting&lt;/h1>
&lt;p>By default, Tempo reports 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></description></item></channel></rss>