github.com/grafana/pyroscope@v1.18.0/docs/sources/configure-server/reference-configuration-parameters/index.md (about)

     1  ---
     2  description: Describes parameters used to configure Pyroscope.
     3  menuTitle: Configuration parameters
     4  title: Pyroscope configuration parameters
     5  weight: 300
     6  aliases:
     7    - /docs/phlare/latest/operators-guide/configuring/reference-configuration-parameters/
     8    - /docs/phlare/latest/configure-server/reference-configuration-parameters/
     9  ---
    10  
    11  # Pyroscope configuration parameters
    12  
    13  <!-- DO NOT EDIT THIS FILE - This file has been automatically generated from its .template -->
    14  
    15  You can configure Pyroscope by using a YAML file or via command-line flags
    16  that represent configuration parameters.
    17  To specify the YAML file, use the `-config.file` command-line option.
    18  If you specify both the command-line flags and YAML configuration parameters,
    19  the command-line flags take precedence over values in a YAML file.
    20  
    21  To see the current configuration of any component,
    22  go to the `/config` HTTP API endpoint.
    23  Passwords are filtered out of this endpoint.
    24  
    25  Parameters are
    26  written in [YAML format](https://en.wikipedia.org/wiki/YAML), and
    27  brackets indicate that a parameter is optional.
    28  
    29  ## Generic placeholders
    30  
    31  - `<boolean>`: a boolean that can take the values `true` or `false`
    32  - `<int>`: any integer matching the regular expression `[1-9]+[0-9]*`
    33  - `<duration>`: a duration matching the regular expression `[0-9]+(ns|us|µs|ms|s|m|h|d|w|y)` where y = 365 days
    34  - `<string>`: a string
    35  - `<url>`: a URL
    36  - `<filepath>`: a string containing an absolute or relative path and filename to a file on disk
    37  - `<prefix>`: a CLI flag prefix based on the context (look at the parent configuration block to see which CLI flags prefix should be used)
    38  - `<relabel_config>`: a [Prometheus relabeling configuration](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config)
    39  - `<time>`: a timestamp, with available formats:
    40      - `2006-01-20` (midnight, local timezone)
    41      - `2006-01-20T15:04` (local timezone)
    42      - RFC 3339 formats: `2006-01-20T15:04:05Z` (UTC) or `2006-01-20T15:04:05+07:00` (explicit timezone)
    43  
    44  ## Use environment variables in the configuration
    45  
    46  You can use environment variable references in the YAML configuration file
    47  to set values that need to be configurable during deployment.
    48  To do this, pass `-config.expand-env=true` on the command line and use
    49  `${VAR}`,
    50  where `VAR` is the name of the environment variable.
    51  
    52  Each variable reference is replaced at startup by the value of the environment variable.
    53  The replacement is case-sensitive and occurs before the YAML file is parsed.
    54  References to undefined variables are replaced by empty strings unless you specify a default value or custom error text.
    55  
    56  To specify a default value, use `${VAR:-default_value}`,
    57  where `default_value` is the value to use if the environment variable is undefined.
    58  
    59  ## Configuration parameters
    60  
    61  ```yaml
    62  # Comma-separated list of Pyroscope modules to load. The alias 'all' can be used
    63  # in the list to load a number of core modules and will enable single-binary
    64  # mode.
    65  # CLI flag: -target
    66  [target: <string> | default = "all"]
    67  
    68  api:
    69    # base URL for when the server is behind a reverse proxy with a different path
    70    # CLI flag: -api.base-url
    71    [base-url: <string> | default = ""]
    72  
    73  # The server block configures the HTTP and gRPC server of the launched
    74  # service(s).
    75  [server: <server>]
    76  
    77  # The distributor block configures the distributor.
    78  [distributor: <distributor>]
    79  
    80  # The querier block configures the querier.
    81  [querier: <querier>]
    82  
    83  # The query_frontend block configures the query-frontend.
    84  [frontend: <query_frontend>]
    85  
    86  # The frontend_worker block configures the frontend-worker.
    87  [frontend_worker: <frontend_worker>]
    88  
    89  # The limits block configures default and per-tenant limits imposed by
    90  # components.
    91  [limits: <limits>]
    92  
    93  # The query_scheduler block configures the query-scheduler.
    94  [query_scheduler: <query_scheduler>]
    95  
    96  # The ingester block configures the ingester.
    97  [ingester: <ingester>]
    98  
    99  # The store_gateway block configures the store-gateway.
   100  [store_gateway: <store_gateway>]
   101  
   102  # The memberlist block configures the Gossip memberlist.
   103  [memberlist: <memberlist>]
   104  
   105  pyroscopedb:
   106    # Directory used for local storage.
   107    # CLI flag: -pyroscopedb.data-path
   108    [data_path: <string> | default = "./data"]
   109  
   110    # Upper limit to the duration of a Pyroscope block.
   111    # CLI flag: -pyroscopedb.max-block-duration
   112    [max_block_duration: <duration> | default = 1h]
   113  
   114    # How big should a single row group be uncompressed
   115    # CLI flag: -pyroscopedb.row-group-target-size
   116    [row_group_target_size: <int> | default = 1342177280]
   117  
   118    # Specifies the dimension by which symbols are partitioned. By default, the
   119    # partitioning is determined automatically.
   120    # CLI flag: -pyroscopedb.symbols-partition-label
   121    [symbols_partition_label: <string> | default = ""]
   122  
   123    # How much available disk space to keep in GiB
   124    # CLI flag: -pyroscopedb.retention-policy-min-free-disk-gb
   125    [min_free_disk_gb: <int> | default = 10]
   126  
   127    # Which percentage of free disk space to keep
   128    # CLI flag: -pyroscopedb.retention-policy-min-disk-available-percentage
   129    [min_disk_available_percentage: <float> | default = 0.05]
   130  
   131    # How often to enforce disk retention
   132    # CLI flag: -pyroscopedb.retention-policy-enforcement-interval
   133    [enforcement_interval: <duration> | default = 5m]
   134  
   135    # Disable retention policy enforcement
   136    # CLI flag: -pyroscopedb.retention-policy-disable
   137    [disable_enforcement: <boolean> | default = false]
   138  
   139  tracing:
   140    # Set to false to disable tracing.
   141    # CLI flag: -tracing.enabled
   142    [enabled: <boolean> | default = true]
   143  
   144  runtime_config:
   145    # How often to check runtime config files.
   146    # CLI flag: -runtime-config.reload-period
   147    [period: <duration> | default = 10s]
   148  
   149    # Comma separated list of yaml files with the configuration that can be
   150    # updated at runtime. Runtime config files will be merged from left to right.
   151    # CLI flag: -runtime-config.file
   152    [file: <string> | default = ""]
   153  
   154  # The compactor block configures the compactor.
   155  [compactor: <compactor>]
   156  
   157  tenant_settings:
   158    recording_rules:
   159      # Enable the storing of recording rules in tenant settings.
   160      # CLI flag: -tenant-settings.recording-rules.enabled
   161      [enabled: <boolean> | default = false]
   162  
   163  storage:
   164    # Backend storage to use. Supported backends are: s3, gcs, azure, swift,
   165    # filesystem, cos.
   166    # CLI flag: -storage.backend
   167    [backend: <string> | default = ""]
   168  
   169    # The s3_backend block configures the connection to Amazon S3 object storage
   170    # backend.
   171    [s3: <s3_storage_backend>]
   172  
   173    # The gcs_backend block configures the connection to Google Cloud Storage
   174    # object storage backend.
   175    [gcs: <gcs_storage_backend>]
   176  
   177    # The azure_storage_backend block configures the connection to Azure object
   178    # storage backend.
   179    [azure: <azure_storage_backend>]
   180  
   181    # The swift_storage_backend block configures the connection to OpenStack
   182    # Object Storage (Swift) object storage backend.
   183    [swift: <swift_storage_backend>]
   184  
   185    cos:
   186      # COS bucket name
   187      # CLI flag: -storage.cos.bucket
   188      [bucket: <string> | default = ""]
   189  
   190      # COS region name
   191      # CLI flag: -storage.cos.region
   192      [region: <string> | default = ""]
   193  
   194      # COS app id
   195      # CLI flag: -storage.cos.app-id
   196      [app_id: <string> | default = ""]
   197  
   198      # COS storage endpoint
   199      # CLI flag: -storage.cos.endpoint
   200      [endpoint: <string> | default = ""]
   201  
   202      # COS secret key
   203      # CLI flag: -storage.cos.secret-key
   204      [secret_key: <string> | default = ""]
   205  
   206      # COS secret id
   207      # CLI flag: -storage.cos.secret-id
   208      [secret_id: <string> | default = ""]
   209  
   210      http:
   211        # The time an idle connection will remain idle before closing.
   212        # CLI flag: -storage.cos.http.idle-conn-timeout
   213        [idle_conn_timeout: <duration> | default = 1m30s]
   214  
   215        # The amount of time the client will wait for a servers response headers.
   216        # CLI flag: -storage.cos.http.response-header-timeout
   217        [response_header_timeout: <duration> | default = 2m]
   218  
   219        # If the client connects to COS via HTTPS and this option is enabled, the
   220        # client will accept any certificate and hostname.
   221        # CLI flag: -storage.cos.http.insecure-skip-verify
   222        [insecure_skip_verify: <boolean> | default = false]
   223  
   224        # Maximum time to wait for a TLS handshake. 0 means no limit.
   225        # CLI flag: -storage.cos.tls-handshake-timeout
   226        [tls_handshake_timeout: <duration> | default = 10s]
   227  
   228        # The time to wait for a server's first response headers after fully
   229        # writing the request headers if the request has an Expect header. 0 to
   230        # send the request body immediately.
   231        # CLI flag: -storage.cos.expect-continue-timeout
   232        [expect_continue_timeout: <duration> | default = 1s]
   233  
   234        # Maximum number of idle (keep-alive) connections across all hosts. 0
   235        # means no limit.
   236        # CLI flag: -storage.cos.max-idle-connections
   237        [max_idle_connections: <int> | default = 100]
   238  
   239        # Maximum number of idle (keep-alive) connections to keep per-host. If 0,
   240        # a built-in default value is used.
   241        # CLI flag: -storage.cos.max-idle-connections-per-host
   242        [max_idle_connections_per_host: <int> | default = 100]
   243  
   244        # Maximum number of connections per host. 0 means no limit.
   245        # CLI flag: -storage.cos.max-connections-per-host
   246        [max_connections_per_host: <int> | default = 0]
   247  
   248    # The filesystem_storage_backend block configures the usage of local file
   249    # system as object storage backend.
   250    [filesystem: <filesystem_storage_backend>]
   251  
   252    # Prefix for all objects stored in the backend storage. For simplicity, it may
   253    # only contain digits and English alphabet characters, hyphens, underscores,
   254    # dots and forward slashes.
   255    # CLI flag: -storage.prefix
   256    [prefix: <string> | default = ""]
   257  
   258    # Deprecated: Use 'storage..prefix' instead. Prefix for all objects stored in
   259    # the backend storage. For simplicity, it may only contain digits and English
   260    # alphabet characters, hyphens, underscores, dots and forward slashes.
   261    # CLI flag: -storage.storage-prefix
   262    [storage_prefix: <string> | default = ""]
   263  
   264  self_profiling:
   265    # When running in single binary (--target=all) Pyroscope will push (Go SDK)
   266    # profiles to itself. Set to true to disable self-profiling.
   267    # CLI flag: -self-profiling.disable-push
   268    [disable_push: <boolean> | default = false]
   269  
   270    # CLI flag: -self-profiling.mutex-profile-fraction
   271    [mutex_profile_fraction: <int> | default = 5]
   272  
   273    # CLI flag: -self-profiling.block-profile-rate
   274    [block_profile_rate: <int> | default = 5]
   275  
   276    # Read k6 labels from request headers and set them as dynamic profile tags.
   277    # CLI flag: -self-profiling.use-k6-middleware
   278    [use_k6_middleware: <boolean> | default = false]
   279  
   280  # When set to true, incoming HTTP requests must specify tenant ID in HTTP
   281  # X-Scope-OrgId header. When set to false, tenant ID anonymous is used instead.
   282  # CLI flag: -auth.multitenancy-enabled
   283  [multitenancy_enabled: <boolean> | default = false]
   284  
   285  # The analytics block configures usage statistics collection. For more details
   286  # about usage statistics, refer to [Anonymous usage statistics
   287  # reporting](../anonymous-usage-statistics-reporting)
   288  [analytics: <analytics>]
   289  
   290  # Prints the application banner at startup.
   291  # CLI flag: -config.show_banner
   292  [show_banner: <boolean> | default = true]
   293  
   294  # Wait time before shutting down after a termination signal.
   295  # CLI flag: -shutdown-delay
   296  [shutdown_delay: <duration> | default = 0s]
   297  
   298  embedded_grafana:
   299    # The directory where the Grafana data will be stored.
   300    # CLI flag: -embedded-grafana.data-path
   301    [data_path: <string> | default = "./data/__embedded_grafana/"]
   302  
   303    # The port on which the Grafana will listen.
   304    # CLI flag: -embedded-grafana.listen-port
   305    [listen_port: <int> | default = 4041]
   306  
   307    # The URL of the Pyroscope instance to use for the Grafana datasources.
   308    # CLI flag: -embedded-grafana.pyroscope-url
   309    [pyroscope_url: <string> | default = "http://localhost:4040"]
   310  ```
   311  
   312  ### server
   313  
   314  The `server` block configures the HTTP and gRPC server of the launched service(s).
   315  
   316  ```yaml
   317  # HTTP server listen network, default tcp
   318  # CLI flag: -server.http-listen-network
   319  [http_listen_network: <string> | default = "tcp"]
   320  
   321  # HTTP server listen address.
   322  # CLI flag: -server.http-listen-address
   323  [http_listen_address: <string> | default = ""]
   324  
   325  # HTTP server listen port.
   326  # CLI flag: -server.http-listen-port
   327  [http_listen_port: <int> | default = 4040]
   328  
   329  # Maximum number of simultaneous http connections, <=0 to disable
   330  # CLI flag: -server.http-conn-limit
   331  [http_listen_conn_limit: <int> | default = 0]
   332  
   333  # gRPC server listen network
   334  # CLI flag: -server.grpc-listen-network
   335  [grpc_listen_network: <string> | default = "tcp"]
   336  
   337  # gRPC server listen address.
   338  # CLI flag: -server.grpc-listen-address
   339  [grpc_listen_address: <string> | default = ""]
   340  
   341  # gRPC server listen port.
   342  # CLI flag: -server.grpc-listen-port
   343  [grpc_listen_port: <int> | default = 9095]
   344  
   345  # Maximum number of simultaneous grpc connections, <=0 to disable
   346  # CLI flag: -server.grpc-conn-limit
   347  [grpc_listen_conn_limit: <int> | default = 0]
   348  
   349  # If true, the max streams by connection gauge will be collected.
   350  # CLI flag: -server.grpc-collect-max-streams-by-conn
   351  [grpc_collect_max_streams_by_conn: <boolean> | default = true]
   352  
   353  # Enables PROXY protocol.
   354  # CLI flag: -server.proxy-protocol-enabled
   355  [proxy_protocol_enabled: <boolean> | default = false]
   356  
   357  # Comma-separated list of cipher suites to use. If blank, the default Go cipher
   358  # suites is used.
   359  # CLI flag: -server.tls-cipher-suites
   360  [tls_cipher_suites: <string> | default = ""]
   361  
   362  # Minimum TLS version to use. Allowed values: VersionTLS10, VersionTLS11,
   363  # VersionTLS12, VersionTLS13. If blank, the Go TLS minimum version is used.
   364  # CLI flag: -server.tls-min-version
   365  [tls_min_version: <string> | default = ""]
   366  
   367  http_tls_config:
   368    # Server TLS certificate. This configuration parameter is YAML only.
   369    [cert: <string> | default = ""]
   370  
   371    # Server TLS key. This configuration parameter is YAML only.
   372    [key: <string> | default = ""]
   373  
   374    # Root certificate authority used to verify client certificates. This
   375    # configuration parameter is YAML only.
   376    [client_ca: <string> | default = ""]
   377  
   378    # HTTP server cert path.
   379    # CLI flag: -server.http-tls-cert-path
   380    [cert_file: <string> | default = ""]
   381  
   382    # HTTP server key path.
   383    # CLI flag: -server.http-tls-key-path
   384    [key_file: <string> | default = ""]
   385  
   386    # HTTP TLS Client Auth type.
   387    # CLI flag: -server.http-tls-client-auth
   388    [client_auth_type: <string> | default = ""]
   389  
   390    # HTTP TLS Client CA path.
   391    # CLI flag: -server.http-tls-ca-path
   392    [client_ca_file: <string> | default = ""]
   393  
   394  grpc_tls_config:
   395    # Server TLS certificate. This configuration parameter is YAML only.
   396    [cert: <string> | default = ""]
   397  
   398    # Server TLS key. This configuration parameter is YAML only.
   399    [key: <string> | default = ""]
   400  
   401    # Root certificate authority used to verify client certificates. This
   402    # configuration parameter is YAML only.
   403    [client_ca: <string> | default = ""]
   404  
   405    # GRPC TLS server cert path.
   406    # CLI flag: -server.grpc-tls-cert-path
   407    [cert_file: <string> | default = ""]
   408  
   409    # GRPC TLS server key path.
   410    # CLI flag: -server.grpc-tls-key-path
   411    [key_file: <string> | default = ""]
   412  
   413    # GRPC TLS Client Auth type.
   414    # CLI flag: -server.grpc-tls-client-auth
   415    [client_auth_type: <string> | default = ""]
   416  
   417    # GRPC TLS Client CA path.
   418    # CLI flag: -server.grpc-tls-ca-path
   419    [client_ca_file: <string> | default = ""]
   420  
   421  # Register the intrumentation handlers (/metrics etc).
   422  # CLI flag: -server.register-instrumentation
   423  [register_instrumentation: <boolean> | default = true]
   424  
   425  # If set to true, gRPC statuses will be reported in instrumentation labels with
   426  # their string representations. Otherwise, they will be reported as "error".
   427  # CLI flag: -server.report-grpc-codes-in-instrumentation-label-enabled
   428  [report_grpc_codes_in_instrumentation_label_enabled: <boolean> | default = false]
   429  
   430  # Timeout for graceful shutdowns
   431  # CLI flag: -server.graceful-shutdown-timeout
   432  [graceful_shutdown_timeout: <duration> | default = 30s]
   433  
   434  # Read timeout for entire HTTP request, including headers and body.
   435  # CLI flag: -server.http-read-timeout
   436  [http_server_read_timeout: <duration> | default = 30s]
   437  
   438  # Read timeout for HTTP request headers. If set to 0, value of
   439  # -server.http-read-timeout is used.
   440  # CLI flag: -server.http-read-header-timeout
   441  [http_server_read_header_timeout: <duration> | default = 0s]
   442  
   443  # Write timeout for HTTP server
   444  # CLI flag: -server.http-write-timeout
   445  [http_server_write_timeout: <duration> | default = 30s]
   446  
   447  # Idle timeout for HTTP server
   448  # CLI flag: -server.http-idle-timeout
   449  [http_server_idle_timeout: <duration> | default = 2m]
   450  
   451  # Log closed connections that did not receive any response, most likely because
   452  # client didn't send any request within timeout.
   453  # CLI flag: -server.http-log-closed-connections-without-response-enabled
   454  [http_log_closed_connections_without_response_enabled: <boolean> | default = false]
   455  
   456  # Limit on the size of a gRPC message this server can receive (bytes).
   457  # CLI flag: -server.grpc-max-recv-msg-size-bytes
   458  [grpc_server_max_recv_msg_size: <int> | default = 4194304]
   459  
   460  # Limit on the size of a gRPC message this server can send (bytes).
   461  # CLI flag: -server.grpc-max-send-msg-size-bytes
   462  [grpc_server_max_send_msg_size: <int> | default = 4194304]
   463  
   464  # Limit on the number of concurrent streams for gRPC calls per client connection
   465  # (0 = unlimited)
   466  # CLI flag: -server.grpc-max-concurrent-streams
   467  [grpc_server_max_concurrent_streams: <int> | default = 100]
   468  
   469  # The duration after which an idle connection should be closed. Default:
   470  # infinity
   471  # CLI flag: -server.grpc.keepalive.max-connection-idle
   472  [grpc_server_max_connection_idle: <duration> | default = 2562047h47m16.854775807s]
   473  
   474  # The duration for the maximum amount of time a connection may exist before it
   475  # will be closed. Default: infinity
   476  # CLI flag: -server.grpc.keepalive.max-connection-age
   477  [grpc_server_max_connection_age: <duration> | default = 2562047h47m16.854775807s]
   478  
   479  # An additive period after max-connection-age after which the connection will be
   480  # forcibly closed. Default: infinity
   481  # CLI flag: -server.grpc.keepalive.max-connection-age-grace
   482  [grpc_server_max_connection_age_grace: <duration> | default = 2562047h47m16.854775807s]
   483  
   484  # Duration after which a keepalive probe is sent in case of no activity over the
   485  # connection., Default: 2h
   486  # CLI flag: -server.grpc.keepalive.time
   487  [grpc_server_keepalive_time: <duration> | default = 2h]
   488  
   489  # After having pinged for keepalive check, the duration after which an idle
   490  # connection should be closed, Default: 20s
   491  # CLI flag: -server.grpc.keepalive.timeout
   492  [grpc_server_keepalive_timeout: <duration> | default = 20s]
   493  
   494  # Minimum amount of time a client should wait before sending a keepalive ping.
   495  # If client sends keepalive ping more often, server will send GOAWAY and close
   496  # the connection.
   497  # CLI flag: -server.grpc.keepalive.min-time-between-pings
   498  [grpc_server_min_time_between_pings: <duration> | default = 5m]
   499  
   500  # If true, server allows keepalive pings even when there are no active
   501  # streams(RPCs). If false, and client sends ping when there are no active
   502  # streams, server will send GOAWAY and close the connection.
   503  # CLI flag: -server.grpc.keepalive.ping-without-stream-allowed
   504  [grpc_server_ping_without_stream_allowed: <boolean> | default = false]
   505  
   506  # If non-zero, configures the amount of GRPC server workers used to serve the
   507  # requests.
   508  # CLI flag: -server.grpc.num-workers
   509  [grpc_server_num_workers: <int> | default = 0]
   510  
   511  # If true, the request_message_bytes, response_message_bytes, and
   512  # inflight_requests metrics will be tracked. Enabling this option prevents the
   513  # use of memory pools for parsing gRPC request bodies and may lead to more
   514  # memory allocations.
   515  # CLI flag: -server.grpc.stats-tracking-enabled
   516  [grpc_server_stats_tracking_enabled: <boolean> | default = true]
   517  
   518  # Deprecated option, has no effect and will be removed in a future version.
   519  # CLI flag: -server.grpc.recv-buffer-pools-enabled
   520  [grpc_server_recv_buffer_pools_enabled: <boolean> | default = false]
   521  
   522  # Output log messages in the given format. Valid formats: [logfmt, json]
   523  # CLI flag: -log.format
   524  [log_format: <string> | default = "logfmt"]
   525  
   526  # Only log messages with the given severity or above. Valid levels: [debug,
   527  # info, warn, error]
   528  # CLI flag: -log.level
   529  [log_level: <string> | default = "info"]
   530  
   531  # Optionally log the source IPs.
   532  # CLI flag: -server.log-source-ips-enabled
   533  [log_source_ips_enabled: <boolean> | default = false]
   534  
   535  # Log all source IPs instead of only the originating one. Only used if
   536  # server.log-source-ips-enabled is true
   537  # CLI flag: -server.log-source-ips-full
   538  [log_source_ips_full: <boolean> | default = false]
   539  
   540  # Header field storing the source IPs. Only used if
   541  # server.log-source-ips-enabled is true. If not set the default Forwarded,
   542  # X-Real-IP and X-Forwarded-For headers are used
   543  # CLI flag: -server.log-source-ips-header
   544  [log_source_ips_header: <string> | default = ""]
   545  
   546  # Regex for matching the source IPs. Only used if server.log-source-ips-enabled
   547  # is true. If not set the default Forwarded, X-Real-IP and X-Forwarded-For
   548  # headers are used
   549  # CLI flag: -server.log-source-ips-regex
   550  [log_source_ips_regex: <string> | default = ""]
   551  
   552  # Optionally log request headers.
   553  # CLI flag: -server.log-request-headers
   554  [log_request_headers: <boolean> | default = false]
   555  
   556  # Optionally log requests at info level instead of debug level. Applies to
   557  # request headers as well if server.log-request-headers is enabled.
   558  # CLI flag: -server.log-request-at-info-level-enabled
   559  [log_request_at_info_level_enabled: <boolean> | default = false]
   560  
   561  # Comma separated list of headers to exclude from loggin. Only used if
   562  # server.log-request-headers is true.
   563  # CLI flag: -server.log-request-headers-exclude-list
   564  [log_request_exclude_headers_list: <string> | default = ""]
   565  
   566  # Optionally add request headers to tracing spans.
   567  # CLI flag: -server.trace-request-headers
   568  [trace_request_headers: <boolean> | default = false]
   569  
   570  # Comma separated list of headers to exclude from tracing spans. Only used if
   571  # server.trace-request-headers is true. The following headers are always
   572  # excluded: Authorization, Cookie, X-Csrf-Token.
   573  # CLI flag: -server.trace-request-headers-exclude-list
   574  [trace_request_exclude_headers_list: <string> | default = ""]
   575  
   576  # Base path to serve all API routes from (e.g. /v1/)
   577  # CLI flag: -server.path-prefix
   578  [http_path_prefix: <string> | default = ""]
   579  
   580  cluster_validation:
   581    # Optionally define the cluster validation label.
   582    # CLI flag: -server.cluster-validation.label
   583    [label: <string> | default = ""]
   584  
   585    grpc:
   586      # When enabled, cluster label validation is executed: configured cluster
   587      # validation label is compared with the cluster validation label received
   588      # through the requests.
   589      # CLI flag: -server.cluster-validation.grpc.enabled
   590      [enabled: <boolean> | default = false]
   591  
   592      # When enabled, soft cluster label validation is executed. Can be enabled
   593      # only together with server.cluster-validation.grpc.enabled
   594      # CLI flag: -server.cluster-validation.grpc.soft-validation
   595      [soft_validation: <boolean> | default = false]
   596  
   597    http:
   598      # When enabled, cluster label validation is executed: configured cluster
   599      # validation label is compared with the cluster validation label received
   600      # through the requests.
   601      # CLI flag: -server.cluster-validation.http.enabled
   602      [enabled: <boolean> | default = false]
   603  
   604      # When enabled, soft cluster label validation is executed. Can be enabled
   605      # only together with server.cluster-validation.http.enabled
   606      # CLI flag: -server.cluster-validation.http.soft-validation
   607      [soft_validation: <boolean> | default = false]
   608  
   609      # Comma-separated list of url paths that are excluded from the cluster
   610      # validation check.
   611      # CLI flag: -server.cluster-validation.http.excluded-paths
   612      [excluded_paths: <string> | default = ""]
   613  
   614      # Comma-separated list of user agents that are excluded from the cluster
   615      # validation check.
   616      # CLI flag: -server.cluster-validation.http.excluded-user-agents
   617      [excluded_user_agents: <string> | default = ""]
   618  ```
   619  
   620  ### distributor
   621  
   622  The `distributor` block configures the distributor.
   623  
   624  ```yaml
   625  # Timeout when pushing data to ingester.
   626  # CLI flag: -distributor.push.timeout
   627  [pushtimeout: <duration> | default = 5s]
   628  
   629  pool_config:
   630    # How frequently to clean up clients for ingesters that have gone away.
   631    # CLI flag: -distributor.client-cleanup-period
   632    [client_cleanup_period: <duration> | default = 15s]
   633  
   634    # Run a health check on each ingester client during periodic cleanup.
   635    # CLI flag: -distributor.health-check-ingesters
   636    [health_check_ingesters: <boolean> | default = true]
   637  
   638    # Timeout for ingester client healthcheck RPCs.
   639    # CLI flag: -distributor.health-check-timeout
   640    [remote_timeout: <duration> | default = 5s]
   641  
   642  ring:
   643    # The key-value store used to share the hash ring across multiple instances.
   644    kvstore:
   645      # Backend storage to use for the ring. Supported values are: consul, etcd,
   646      # inmemory, memberlist, multi.
   647      # CLI flag: -distributor.ring.store
   648      [store: <string> | default = "memberlist"]
   649  
   650      # The prefix for the keys in the store. Should end with a /.
   651      # CLI flag: -distributor.ring.prefix
   652      [prefix: <string> | default = "collectors/"]
   653  
   654      consul:
   655        # Hostname and port of Consul.
   656        # CLI flag: -distributor.ring.consul.hostname
   657        [host: <string> | default = "localhost:8500"]
   658  
   659        # ACL Token used to interact with Consul.
   660        # CLI flag: -distributor.ring.consul.acl-token
   661        [acl_token: <string> | default = ""]
   662  
   663        # HTTP timeout when talking to Consul
   664        # CLI flag: -distributor.ring.consul.client-timeout
   665        [http_client_timeout: <duration> | default = 20s]
   666  
   667        # Enable consistent reads to Consul.
   668        # CLI flag: -distributor.ring.consul.consistent-reads
   669        [consistent_reads: <boolean> | default = false]
   670  
   671        # Rate limit when watching key or prefix in Consul, in requests per
   672        # second. 0 disables the rate limit.
   673        # CLI flag: -distributor.ring.consul.watch-rate-limit
   674        [watch_rate_limit: <float> | default = 1]
   675  
   676        # Burst size used in rate limit. Values less than 1 are treated as 1.
   677        # CLI flag: -distributor.ring.consul.watch-burst-size
   678        [watch_burst_size: <int> | default = 1]
   679  
   680        # Maximum duration to wait before retrying a Compare And Swap (CAS)
   681        # operation.
   682        # CLI flag: -distributor.ring.consul.cas-retry-delay
   683        [cas_retry_delay: <duration> | default = 1s]
   684  
   685      etcd:
   686        # The etcd endpoints to connect to.
   687        # CLI flag: -distributor.ring.etcd.endpoints
   688        [endpoints: <list of strings> | default = []]
   689  
   690        # The dial timeout for the etcd connection.
   691        # CLI flag: -distributor.ring.etcd.dial-timeout
   692        [dial_timeout: <duration> | default = 10s]
   693  
   694        # The maximum number of retries to do for failed ops.
   695        # CLI flag: -distributor.ring.etcd.max-retries
   696        [max_retries: <int> | default = 10]
   697  
   698        # Enable TLS.
   699        # CLI flag: -distributor.ring.etcd.tls-enabled
   700        [tls_enabled: <boolean> | default = false]
   701  
   702        # Path to the client certificate, which will be used for authenticating
   703        # with the server. Also requires the key path to be configured.
   704        # CLI flag: -distributor.ring.etcd.tls-cert-path
   705        [tls_cert_path: <string> | default = ""]
   706  
   707        # Path to the key for the client certificate. Also requires the client
   708        # certificate to be configured.
   709        # CLI flag: -distributor.ring.etcd.tls-key-path
   710        [tls_key_path: <string> | default = ""]
   711  
   712        # Path to the CA certificates to validate server certificate against. If
   713        # not set, the host's root CA certificates are used.
   714        # CLI flag: -distributor.ring.etcd.tls-ca-path
   715        [tls_ca_path: <string> | default = ""]
   716  
   717        # Override the expected name on the server certificate.
   718        # CLI flag: -distributor.ring.etcd.tls-server-name
   719        [tls_server_name: <string> | default = ""]
   720  
   721        # Skip validating server certificate.
   722        # CLI flag: -distributor.ring.etcd.tls-insecure-skip-verify
   723        [tls_insecure_skip_verify: <boolean> | default = false]
   724  
   725        # Override the default cipher suite list (separated by commas). Allowed
   726        # values:
   727        # 
   728        # Secure Ciphers:
   729        # - TLS_AES_128_GCM_SHA256
   730        # - TLS_AES_256_GCM_SHA384
   731        # - TLS_CHACHA20_POLY1305_SHA256
   732        # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
   733        # - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
   734        # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
   735        # - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
   736        # - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
   737        # - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
   738        # - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
   739        # - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
   740        # - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
   741        # - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
   742        # 
   743        # Insecure Ciphers:
   744        # - TLS_RSA_WITH_RC4_128_SHA
   745        # - TLS_RSA_WITH_3DES_EDE_CBC_SHA
   746        # - TLS_RSA_WITH_AES_128_CBC_SHA
   747        # - TLS_RSA_WITH_AES_256_CBC_SHA
   748        # - TLS_RSA_WITH_AES_128_CBC_SHA256
   749        # - TLS_RSA_WITH_AES_128_GCM_SHA256
   750        # - TLS_RSA_WITH_AES_256_GCM_SHA384
   751        # - TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
   752        # - TLS_ECDHE_RSA_WITH_RC4_128_SHA
   753        # - TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
   754        # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
   755        # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
   756        # CLI flag: -distributor.ring.etcd.tls-cipher-suites
   757        [tls_cipher_suites: <string> | default = ""]
   758  
   759        # Override the default minimum TLS version. Allowed values: VersionTLS10,
   760        # VersionTLS11, VersionTLS12, VersionTLS13
   761        # CLI flag: -distributor.ring.etcd.tls-min-version
   762        [tls_min_version: <string> | default = ""]
   763  
   764        # Etcd username.
   765        # CLI flag: -distributor.ring.etcd.username
   766        [username: <string> | default = ""]
   767  
   768        # Etcd password.
   769        # CLI flag: -distributor.ring.etcd.password
   770        [password: <string> | default = ""]
   771  
   772      multi:
   773        # Primary backend storage used by multi-client.
   774        # CLI flag: -distributor.ring.multi.primary
   775        [primary: <string> | default = ""]
   776  
   777        # Secondary backend storage used by multi-client.
   778        # CLI flag: -distributor.ring.multi.secondary
   779        [secondary: <string> | default = ""]
   780  
   781        # Mirror writes to secondary store.
   782        # CLI flag: -distributor.ring.multi.mirror-enabled
   783        [mirror_enabled: <boolean> | default = false]
   784  
   785        # Timeout for storing value to secondary store.
   786        # CLI flag: -distributor.ring.multi.mirror-timeout
   787        [mirror_timeout: <duration> | default = 2s]
   788  
   789    # Period at which to heartbeat to the ring. 0 = disabled.
   790    # CLI flag: -distributor.ring.heartbeat-period
   791    [heartbeat_period: <duration> | default = 15s]
   792  
   793    # The heartbeat timeout after which distributors are considered unhealthy
   794    # within the ring. 0 = never (timeout disabled).
   795    # CLI flag: -distributor.ring.heartbeat-timeout
   796    [heartbeat_timeout: <duration> | default = 1m]
   797  
   798    # Instance ID to register in the ring.
   799    # CLI flag: -distributor.ring.instance-id
   800    [instance_id: <string> | default = "<hostname>"]
   801  
   802    # List of network interface names to look up when finding the instance IP
   803    # address.
   804    # CLI flag: -distributor.ring.instance-interface-names
   805    [instance_interface_names: <list of strings> | default = [<private network interfaces>]]
   806  
   807    # Port to advertise in the ring (defaults to -server.http-listen-port).
   808    # CLI flag: -distributor.ring.instance-port
   809    [instance_port: <int> | default = 0]
   810  
   811    # IP address to advertise in the ring. Default is auto-detected.
   812    # CLI flag: -distributor.ring.instance-addr
   813    [instance_addr: <string> | default = ""]
   814  
   815    # Enable using a IPv6 instance address. (default false)
   816    # CLI flag: -distributor.ring.instance-enable-ipv6
   817    [instance_enable_ipv6: <boolean> | default = false]
   818  ```
   819  
   820  ### ingester
   821  
   822  The `ingester` block configures the ingester.
   823  
   824  ```yaml
   825  lifecycler:
   826    ring:
   827      kvstore:
   828        # Backend storage to use for the ring. Supported values are: consul, etcd,
   829        # inmemory, memberlist, multi.
   830        # CLI flag: -ring.store
   831        [store: <string> | default = "consul"]
   832  
   833        # The prefix for the keys in the store. Should end with a /.
   834        # CLI flag: -ring.prefix
   835        [prefix: <string> | default = "collectors/"]
   836  
   837        consul:
   838          # Hostname and port of Consul.
   839          # CLI flag: -consul.hostname
   840          [host: <string> | default = "localhost:8500"]
   841  
   842          # ACL Token used to interact with Consul.
   843          # CLI flag: -consul.acl-token
   844          [acl_token: <string> | default = ""]
   845  
   846          # HTTP timeout when talking to Consul
   847          # CLI flag: -consul.client-timeout
   848          [http_client_timeout: <duration> | default = 20s]
   849  
   850          # Enable consistent reads to Consul.
   851          # CLI flag: -consul.consistent-reads
   852          [consistent_reads: <boolean> | default = false]
   853  
   854          # Rate limit when watching key or prefix in Consul, in requests per
   855          # second. 0 disables the rate limit.
   856          # CLI flag: -consul.watch-rate-limit
   857          [watch_rate_limit: <float> | default = 1]
   858  
   859          # Burst size used in rate limit. Values less than 1 are treated as 1.
   860          # CLI flag: -consul.watch-burst-size
   861          [watch_burst_size: <int> | default = 1]
   862  
   863          # Maximum duration to wait before retrying a Compare And Swap (CAS)
   864          # operation.
   865          # CLI flag: -consul.cas-retry-delay
   866          [cas_retry_delay: <duration> | default = 1s]
   867  
   868        etcd:
   869          # The etcd endpoints to connect to.
   870          # CLI flag: -etcd.endpoints
   871          [endpoints: <list of strings> | default = []]
   872  
   873          # The dial timeout for the etcd connection.
   874          # CLI flag: -etcd.dial-timeout
   875          [dial_timeout: <duration> | default = 10s]
   876  
   877          # The maximum number of retries to do for failed ops.
   878          # CLI flag: -etcd.max-retries
   879          [max_retries: <int> | default = 10]
   880  
   881          # Enable TLS.
   882          # CLI flag: -etcd.tls-enabled
   883          [tls_enabled: <boolean> | default = false]
   884  
   885          # Path to the client certificate, which will be used for authenticating
   886          # with the server. Also requires the key path to be configured.
   887          # CLI flag: -etcd.tls-cert-path
   888          [tls_cert_path: <string> | default = ""]
   889  
   890          # Path to the key for the client certificate. Also requires the client
   891          # certificate to be configured.
   892          # CLI flag: -etcd.tls-key-path
   893          [tls_key_path: <string> | default = ""]
   894  
   895          # Path to the CA certificates to validate server certificate against. If
   896          # not set, the host's root CA certificates are used.
   897          # CLI flag: -etcd.tls-ca-path
   898          [tls_ca_path: <string> | default = ""]
   899  
   900          # Override the expected name on the server certificate.
   901          # CLI flag: -etcd.tls-server-name
   902          [tls_server_name: <string> | default = ""]
   903  
   904          # Skip validating server certificate.
   905          # CLI flag: -etcd.tls-insecure-skip-verify
   906          [tls_insecure_skip_verify: <boolean> | default = false]
   907  
   908          # Override the default cipher suite list (separated by commas). Allowed
   909          # values:
   910          # 
   911          # Secure Ciphers:
   912          # - TLS_AES_128_GCM_SHA256
   913          # - TLS_AES_256_GCM_SHA384
   914          # - TLS_CHACHA20_POLY1305_SHA256
   915          # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
   916          # - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
   917          # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
   918          # - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
   919          # - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
   920          # - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
   921          # - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
   922          # - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
   923          # - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
   924          # - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
   925          # 
   926          # Insecure Ciphers:
   927          # - TLS_RSA_WITH_RC4_128_SHA
   928          # - TLS_RSA_WITH_3DES_EDE_CBC_SHA
   929          # - TLS_RSA_WITH_AES_128_CBC_SHA
   930          # - TLS_RSA_WITH_AES_256_CBC_SHA
   931          # - TLS_RSA_WITH_AES_128_CBC_SHA256
   932          # - TLS_RSA_WITH_AES_128_GCM_SHA256
   933          # - TLS_RSA_WITH_AES_256_GCM_SHA384
   934          # - TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
   935          # - TLS_ECDHE_RSA_WITH_RC4_128_SHA
   936          # - TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
   937          # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
   938          # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
   939          # CLI flag: -etcd.tls-cipher-suites
   940          [tls_cipher_suites: <string> | default = ""]
   941  
   942          # Override the default minimum TLS version. Allowed values:
   943          # VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13
   944          # CLI flag: -etcd.tls-min-version
   945          [tls_min_version: <string> | default = ""]
   946  
   947          # Etcd username.
   948          # CLI flag: -etcd.username
   949          [username: <string> | default = ""]
   950  
   951          # Etcd password.
   952          # CLI flag: -etcd.password
   953          [password: <string> | default = ""]
   954  
   955        multi:
   956          # Primary backend storage used by multi-client.
   957          # CLI flag: -multi.primary
   958          [primary: <string> | default = ""]
   959  
   960          # Secondary backend storage used by multi-client.
   961          # CLI flag: -multi.secondary
   962          [secondary: <string> | default = ""]
   963  
   964          # Mirror writes to secondary store.
   965          # CLI flag: -multi.mirror-enabled
   966          [mirror_enabled: <boolean> | default = false]
   967  
   968          # Timeout for storing value to secondary store.
   969          # CLI flag: -multi.mirror-timeout
   970          [mirror_timeout: <duration> | default = 2s]
   971  
   972      # The heartbeat timeout after which ingesters are skipped for reads/writes.
   973      # 0 = never (timeout disabled).
   974      # CLI flag: -ring.heartbeat-timeout
   975      [heartbeat_timeout: <duration> | default = 1m]
   976  
   977      # The number of ingesters to write to and read from.
   978      # CLI flag: -distributor.replication-factor
   979      [replication_factor: <int> | default = 1]
   980  
   981      # True to enable the zone-awareness and replicate ingested samples across
   982      # different availability zones.
   983      # CLI flag: -distributor.zone-awareness-enabled
   984      [zone_awareness_enabled: <boolean> | default = false]
   985  
   986      # Comma-separated list of zones to exclude from the ring. Instances in
   987      # excluded zones will be filtered out from the ring.
   988      # CLI flag: -distributor.excluded-zones
   989      [excluded_zones: <string> | default = ""]
   990  
   991    # Number of tokens for each ingester.
   992    # CLI flag: -ingester.num-tokens
   993    [num_tokens: <int> | default = 128]
   994  
   995    # Period at which to heartbeat to consul. 0 = disabled.
   996    # CLI flag: -ingester.heartbeat-period
   997    [heartbeat_period: <duration> | default = 5s]
   998  
   999    # Heartbeat timeout after which instance is assumed to be unhealthy. 0 =
  1000    # disabled.
  1001    # CLI flag: -ingester.heartbeat-timeout
  1002    [heartbeat_timeout: <duration> | default = 1m]
  1003  
  1004    # Observe tokens after generating to resolve collisions. Useful when using
  1005    # gossiping ring.
  1006    # CLI flag: -ingester.observe-period
  1007    [observe_period: <duration> | default = 0s]
  1008  
  1009    # Period to wait for a claim from another member; will join automatically
  1010    # after this.
  1011    # CLI flag: -ingester.join-after
  1012    [join_after: <duration> | default = 0s]
  1013  
  1014    # Minimum duration to wait after the internal readiness checks have passed but
  1015    # before succeeding the readiness endpoint. This is used to slowdown
  1016    # deployment controllers (eg. Kubernetes) after an instance is ready and
  1017    # before they proceed with a rolling update, to give the rest of the cluster
  1018    # instances enough time to receive ring updates.
  1019    # CLI flag: -ingester.min-ready-duration
  1020    [min_ready_duration: <duration> | default = 15s]
  1021  
  1022    # Name of network interface to read address from.
  1023    # CLI flag: -ingester.lifecycler.interface
  1024    [interface_names: <list of strings> | default = [<private network interfaces>]]
  1025  
  1026    # Enable IPv6 support. Required to make use of IP addresses from IPv6
  1027    # interfaces.
  1028    # CLI flag: -ingester.enable-inet6
  1029    [enable_inet6: <boolean> | default = false]
  1030  
  1031    # Duration to sleep for before exiting, to ensure metrics are scraped.
  1032    # CLI flag: -ingester.final-sleep
  1033    [final_sleep: <duration> | default = 0s]
  1034  
  1035    # File path where tokens are stored. If empty, tokens are not stored at
  1036    # shutdown and restored at startup.
  1037    # CLI flag: -ingester.tokens-file-path
  1038    [tokens_file_path: <string> | default = ""]
  1039  
  1040    # The availability zone where this instance is running.
  1041    # CLI flag: -ingester.availability-zone
  1042    [availability_zone: <string> | default = ""]
  1043  
  1044    # Unregister from the ring upon clean shutdown. It can be useful to disable
  1045    # for rolling restarts with consistent naming in conjunction with
  1046    # -distributor.extend-writes=false.
  1047    # CLI flag: -ingester.unregister-on-shutdown
  1048    [unregister_on_shutdown: <boolean> | default = true]
  1049  
  1050    # When enabled the readiness probe succeeds only after all instances are
  1051    # ACTIVE and healthy in the ring, otherwise only the instance itself is
  1052    # checked. This option should be disabled if in your cluster multiple
  1053    # instances can be rolled out simultaneously, otherwise rolling updates may be
  1054    # slowed down.
  1055    # CLI flag: -ingester.readiness-check-ring-health
  1056    [readiness_check_ring_health: <boolean> | default = true]
  1057  
  1058    # IP address to advertise in the ring.
  1059    # CLI flag: -ingester.lifecycler.addr
  1060    [address: <string> | default = ""]
  1061  
  1062    # port to advertise in consul (defaults to server.grpc-listen-port).
  1063    # CLI flag: -ingester.lifecycler.port
  1064    [port: <int> | default = 0]
  1065  
  1066    # ID to register in the ring.
  1067    # CLI flag: -ingester.lifecycler.ID
  1068    [id: <string> | default = "<hostname>"]
  1069  ```
  1070  
  1071  ### querier
  1072  
  1073  The `querier` block configures the querier.
  1074  
  1075  ```yaml
  1076  pool_config:
  1077    # How frequently to clean up clients for ingesters that have gone away.
  1078    # CLI flag: -querier.client-cleanup-period
  1079    [client_cleanup_period: <duration> | default = 15s]
  1080  
  1081    # Run a health check on each ingester client during periodic cleanup.
  1082    # CLI flag: -querier.health-check-ingesters
  1083    [health_check_ingesters: <boolean> | default = true]
  1084  
  1085    # Timeout for ingester client healthcheck RPCs.
  1086    # CLI flag: -querier.health-check-timeout
  1087    [remote_timeout: <duration> | default = 5s]
  1088  
  1089  # The time after which a metric should be queried from storage and not just
  1090  # ingesters. 0 means all queries are sent to store. If this option is enabled,
  1091  # the time range of the query sent to the store-gateway will be manipulated to
  1092  # ensure the query end is not more recent than 'now - query-store-after'.
  1093  # CLI flag: -querier.query-store-after
  1094  [query_store_after: <duration> | default = 4h]
  1095  ```
  1096  
  1097  ### query_frontend
  1098  
  1099  The `query_frontend` block configures the query-frontend.
  1100  
  1101  ```yaml
  1102  # Number of concurrent workers forwarding queries to single query-scheduler.
  1103  # CLI flag: -query-frontend.scheduler-worker-concurrency
  1104  [scheduler_worker_concurrency: <int> | default = 5]
  1105  
  1106  # Configures the gRPC client used to communicate between the query-frontends and
  1107  # the query-schedulers.
  1108  # The CLI flags prefix for this block configuration is:
  1109  # query-frontend.grpc-client-config
  1110  [grpc_client_config: <grpc_client>]
  1111  
  1112  # List of network interface names to look up when finding the instance IP
  1113  # address. This address is sent to query-scheduler and querier, which uses it to
  1114  # send the query response back to query-frontend.
  1115  # CLI flag: -query-frontend.instance-interface-names
  1116  [instance_interface_names: <list of strings> | default = [<private network interfaces>]]
  1117  
  1118  # IP address to advertise to the querier (via scheduler) (default is
  1119  # auto-detected from network interfaces).
  1120  # CLI flag: -query-frontend.instance-addr
  1121  [instance_addr: <string> | default = ""]
  1122  
  1123  # Enable using a IPv6 instance address. (default false)
  1124  # CLI flag: -query-frontend.instance-enable-ipv6
  1125  [instance_enable_ipv6: <boolean> | default = false]
  1126  
  1127  # Port to advertise to query-scheduler and querier (defaults to
  1128  # -server.http-listen-port).
  1129  # CLI flag: -query-frontend.instance-port
  1130  [instance_port: <int> | default = 0]
  1131  ```
  1132  
  1133  ### frontend_worker
  1134  
  1135  The `frontend_worker` block configures the frontend-worker.
  1136  
  1137  ```yaml
  1138  # Querier ID, sent to the query-frontend to identify requests from the same
  1139  # querier. Defaults to hostname.
  1140  # CLI flag: -querier.id
  1141  [id: <string> | default = ""]
  1142  
  1143  # Configures the gRPC client used to communicate between the queriers and the
  1144  # query-frontends / query-schedulers.
  1145  # The CLI flags prefix for this block configuration is: querier.frontend-client
  1146  [grpc_client_config: <grpc_client>]
  1147  
  1148  # The maximum number of concurrent queries allowed.
  1149  # CLI flag: -querier.max-concurrent
  1150  [max_concurrent: <int> | default = 4]
  1151  ```
  1152  
  1153  ### query_scheduler
  1154  
  1155  The `query_scheduler` block configures the query-scheduler.
  1156  
  1157  ```yaml
  1158  # Maximum number of outstanding requests per tenant per query-scheduler.
  1159  # In-flight requests above this limit will fail with HTTP response status code
  1160  # 429.
  1161  # CLI flag: -query-scheduler.max-outstanding-requests-per-tenant
  1162  [max_outstanding_requests_per_tenant: <int> | default = 100]
  1163  
  1164  # If a querier disconnects without sending notification about graceful shutdown,
  1165  # the query-scheduler will keep the querier in the tenant's shard until the
  1166  # forget delay has passed. This feature is useful to reduce the blast radius
  1167  # when shuffle-sharding is enabled.
  1168  # CLI flag: -query-scheduler.querier-forget-delay
  1169  [querier_forget_delay: <duration> | default = 0s]
  1170  
  1171  # This configures the gRPC client used to report errors back to the
  1172  # query-frontend.
  1173  # The CLI flags prefix for this block configuration is:
  1174  # query-scheduler.grpc-client-config
  1175  [grpc_client_config: <grpc_client>]
  1176  
  1177  # The maximum number of query-scheduler instances to use, regardless how many
  1178  # replicas are running. This option can be set only when
  1179  # -query-scheduler.service-discovery-mode is set to 'ring'. 0 to use all
  1180  # available query-scheduler instances.
  1181  # CLI flag: -query-scheduler.max-used-instances
  1182  [max_used_instances: <int> | default = 0]
  1183  ```
  1184  
  1185  ### store_gateway
  1186  
  1187  The `store_gateway` block configures the store-gateway.
  1188  
  1189  ```yaml
  1190  # The hash ring configuration.
  1191  sharding_ring:
  1192    # The key-value store used to share the hash ring across multiple instances.
  1193    kvstore:
  1194      # Backend storage to use for the ring. Supported values are: consul, etcd,
  1195      # inmemory, memberlist, multi.
  1196      # CLI flag: -store-gateway.sharding-ring.store
  1197      [store: <string> | default = "memberlist"]
  1198  
  1199      # The prefix for the keys in the store. Should end with a /.
  1200      # CLI flag: -store-gateway.sharding-ring.prefix
  1201      [prefix: <string> | default = "collectors/"]
  1202  
  1203      consul:
  1204        # Hostname and port of Consul.
  1205        # CLI flag: -store-gateway.sharding-ring.consul.hostname
  1206        [host: <string> | default = "localhost:8500"]
  1207  
  1208        # ACL Token used to interact with Consul.
  1209        # CLI flag: -store-gateway.sharding-ring.consul.acl-token
  1210        [acl_token: <string> | default = ""]
  1211  
  1212        # HTTP timeout when talking to Consul
  1213        # CLI flag: -store-gateway.sharding-ring.consul.client-timeout
  1214        [http_client_timeout: <duration> | default = 20s]
  1215  
  1216        # Enable consistent reads to Consul.
  1217        # CLI flag: -store-gateway.sharding-ring.consul.consistent-reads
  1218        [consistent_reads: <boolean> | default = false]
  1219  
  1220        # Rate limit when watching key or prefix in Consul, in requests per
  1221        # second. 0 disables the rate limit.
  1222        # CLI flag: -store-gateway.sharding-ring.consul.watch-rate-limit
  1223        [watch_rate_limit: <float> | default = 1]
  1224  
  1225        # Burst size used in rate limit. Values less than 1 are treated as 1.
  1226        # CLI flag: -store-gateway.sharding-ring.consul.watch-burst-size
  1227        [watch_burst_size: <int> | default = 1]
  1228  
  1229        # Maximum duration to wait before retrying a Compare And Swap (CAS)
  1230        # operation.
  1231        # CLI flag: -store-gateway.sharding-ring.consul.cas-retry-delay
  1232        [cas_retry_delay: <duration> | default = 1s]
  1233  
  1234      etcd:
  1235        # The etcd endpoints to connect to.
  1236        # CLI flag: -store-gateway.sharding-ring.etcd.endpoints
  1237        [endpoints: <list of strings> | default = []]
  1238  
  1239        # The dial timeout for the etcd connection.
  1240        # CLI flag: -store-gateway.sharding-ring.etcd.dial-timeout
  1241        [dial_timeout: <duration> | default = 10s]
  1242  
  1243        # The maximum number of retries to do for failed ops.
  1244        # CLI flag: -store-gateway.sharding-ring.etcd.max-retries
  1245        [max_retries: <int> | default = 10]
  1246  
  1247        # Enable TLS.
  1248        # CLI flag: -store-gateway.sharding-ring.etcd.tls-enabled
  1249        [tls_enabled: <boolean> | default = false]
  1250  
  1251        # Path to the client certificate, which will be used for authenticating
  1252        # with the server. Also requires the key path to be configured.
  1253        # CLI flag: -store-gateway.sharding-ring.etcd.tls-cert-path
  1254        [tls_cert_path: <string> | default = ""]
  1255  
  1256        # Path to the key for the client certificate. Also requires the client
  1257        # certificate to be configured.
  1258        # CLI flag: -store-gateway.sharding-ring.etcd.tls-key-path
  1259        [tls_key_path: <string> | default = ""]
  1260  
  1261        # Path to the CA certificates to validate server certificate against. If
  1262        # not set, the host's root CA certificates are used.
  1263        # CLI flag: -store-gateway.sharding-ring.etcd.tls-ca-path
  1264        [tls_ca_path: <string> | default = ""]
  1265  
  1266        # Override the expected name on the server certificate.
  1267        # CLI flag: -store-gateway.sharding-ring.etcd.tls-server-name
  1268        [tls_server_name: <string> | default = ""]
  1269  
  1270        # Skip validating server certificate.
  1271        # CLI flag: -store-gateway.sharding-ring.etcd.tls-insecure-skip-verify
  1272        [tls_insecure_skip_verify: <boolean> | default = false]
  1273  
  1274        # Override the default cipher suite list (separated by commas). Allowed
  1275        # values:
  1276        # 
  1277        # Secure Ciphers:
  1278        # - TLS_AES_128_GCM_SHA256
  1279        # - TLS_AES_256_GCM_SHA384
  1280        # - TLS_CHACHA20_POLY1305_SHA256
  1281        # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  1282        # - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  1283        # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  1284        # - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  1285        # - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  1286        # - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  1287        # - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  1288        # - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  1289        # - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
  1290        # - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
  1291        # 
  1292        # Insecure Ciphers:
  1293        # - TLS_RSA_WITH_RC4_128_SHA
  1294        # - TLS_RSA_WITH_3DES_EDE_CBC_SHA
  1295        # - TLS_RSA_WITH_AES_128_CBC_SHA
  1296        # - TLS_RSA_WITH_AES_256_CBC_SHA
  1297        # - TLS_RSA_WITH_AES_128_CBC_SHA256
  1298        # - TLS_RSA_WITH_AES_128_GCM_SHA256
  1299        # - TLS_RSA_WITH_AES_256_GCM_SHA384
  1300        # - TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
  1301        # - TLS_ECDHE_RSA_WITH_RC4_128_SHA
  1302        # - TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
  1303        # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  1304        # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  1305        # CLI flag: -store-gateway.sharding-ring.etcd.tls-cipher-suites
  1306        [tls_cipher_suites: <string> | default = ""]
  1307  
  1308        # Override the default minimum TLS version. Allowed values: VersionTLS10,
  1309        # VersionTLS11, VersionTLS12, VersionTLS13
  1310        # CLI flag: -store-gateway.sharding-ring.etcd.tls-min-version
  1311        [tls_min_version: <string> | default = ""]
  1312  
  1313        # Etcd username.
  1314        # CLI flag: -store-gateway.sharding-ring.etcd.username
  1315        [username: <string> | default = ""]
  1316  
  1317        # Etcd password.
  1318        # CLI flag: -store-gateway.sharding-ring.etcd.password
  1319        [password: <string> | default = ""]
  1320  
  1321      multi:
  1322        # Primary backend storage used by multi-client.
  1323        # CLI flag: -store-gateway.sharding-ring.multi.primary
  1324        [primary: <string> | default = ""]
  1325  
  1326        # Secondary backend storage used by multi-client.
  1327        # CLI flag: -store-gateway.sharding-ring.multi.secondary
  1328        [secondary: <string> | default = ""]
  1329  
  1330        # Mirror writes to secondary store.
  1331        # CLI flag: -store-gateway.sharding-ring.multi.mirror-enabled
  1332        [mirror_enabled: <boolean> | default = false]
  1333  
  1334        # Timeout for storing value to secondary store.
  1335        # CLI flag: -store-gateway.sharding-ring.multi.mirror-timeout
  1336        [mirror_timeout: <duration> | default = 2s]
  1337  
  1338    # Period at which to heartbeat to the ring. 0 = disabled.
  1339    # CLI flag: -store-gateway.sharding-ring.heartbeat-period
  1340    [heartbeat_period: <duration> | default = 15s]
  1341  
  1342    # The heartbeat timeout after which store-gateways are considered unhealthy
  1343    # within the ring. 0 = never (timeout disabled).
  1344    # CLI flag: -store-gateway.sharding-ring.heartbeat-timeout
  1345    [heartbeat_timeout: <duration> | default = 1m]
  1346  
  1347    # Instance ID to register in the ring.
  1348    # CLI flag: -store-gateway.sharding-ring.instance-id
  1349    [instance_id: <string> | default = "<hostname>"]
  1350  
  1351    # List of network interface names to look up when finding the instance IP
  1352    # address.
  1353    # CLI flag: -store-gateway.sharding-ring.instance-interface-names
  1354    [instance_interface_names: <list of strings> | default = [<private network interfaces>]]
  1355  
  1356    # Port to advertise in the ring (defaults to -server.http-listen-port).
  1357    # CLI flag: -store-gateway.sharding-ring.instance-port
  1358    [instance_port: <int> | default = 0]
  1359  
  1360    # IP address to advertise in the ring. Default is auto-detected.
  1361    # CLI flag: -store-gateway.sharding-ring.instance-addr
  1362    [instance_addr: <string> | default = ""]
  1363  
  1364    # Enable using a IPv6 instance address. (default false)
  1365    # CLI flag: -store-gateway.sharding-ring.instance-enable-ipv6
  1366    [instance_enable_ipv6: <boolean> | default = false]
  1367  
  1368    # The replication factor to use when sharding blocks. This option needs be set
  1369    # both on the store-gateway and querier when running in microservices mode.
  1370    # CLI flag: -store-gateway.sharding-ring.replication-factor
  1371    [replication_factor: <int> | default = 1]
  1372  
  1373    # File path where tokens are stored. If empty, tokens are not stored at
  1374    # shutdown and restored at startup.
  1375    # CLI flag: -store-gateway.sharding-ring.tokens-file-path
  1376    [tokens_file_path: <string> | default = ""]
  1377  
  1378    # True to enable zone-awareness and replicate blocks across different
  1379    # availability zones. This option needs be set both on the store-gateway and
  1380    # querier when running in microservices mode.
  1381    # CLI flag: -store-gateway.sharding-ring.zone-awareness-enabled
  1382    [zone_awareness_enabled: <boolean> | default = false]
  1383  
  1384    # Minimum time to wait for ring stability at startup, if set to positive
  1385    # value.
  1386    # CLI flag: -store-gateway.sharding-ring.wait-stability-min-duration
  1387    [wait_stability_min_duration: <duration> | default = 0s]
  1388  
  1389    # Maximum time to wait for ring stability at startup. If the store-gateway
  1390    # ring keeps changing after this period of time, the store-gateway will start
  1391    # anyway.
  1392    # CLI flag: -store-gateway.sharding-ring.wait-stability-max-duration
  1393    [wait_stability_max_duration: <duration> | default = 5m]
  1394  
  1395    # The availability zone where this instance is running. Required if
  1396    # zone-awareness is enabled.
  1397    # CLI flag: -store-gateway.sharding-ring.instance-availability-zone
  1398    [instance_availability_zone: <string> | default = ""]
  1399  
  1400    # Unregister from the ring upon clean shutdown.
  1401    # CLI flag: -store-gateway.sharding-ring.unregister-on-shutdown
  1402    [unregister_on_shutdown: <boolean> | default = true]
  1403  
  1404  bucket_store:
  1405    # Directory to store synchronized pyroscope block headers. This directory is
  1406    # not required to be persisted between restarts, but it's highly recommended
  1407    # in order to improve the store-gateway startup time.
  1408    # CLI flag: -blocks-storage.bucket-store.sync-dir
  1409    [sync_dir: <string> | default = "./data/pyroscope-sync/"]
  1410  
  1411    # How frequently to scan the bucket, or to refresh the bucket index (if
  1412    # enabled), in order to look for changes (new blocks shipped by ingesters and
  1413    # blocks deleted by retention or compaction).
  1414    # CLI flag: -blocks-storage.bucket-store.sync-interval
  1415    [sync_interval: <duration> | default = 15m]
  1416  
  1417    # Maximum number of concurrent tenants synching blocks.
  1418    # CLI flag: -blocks-storage.bucket-store.tenant-sync-concurrency
  1419    [tenant_sync_concurrency: <int> | default = 10]
  1420  
  1421    # Blocks with minimum time within this duration are ignored, and not loaded by
  1422    # store-gateway. Useful when used together with -querier.query-store-after to
  1423    # prevent loading young blocks, because there are usually many of them
  1424    # (depending on number of ingesters) and they are not yet compacted. Negative
  1425    # values or 0 disable the filter.
  1426    # CLI flag: -blocks-storage.bucket-store.ignore-blocks-within
  1427    [ignore_blocks_within: <duration> | default = 3h]
  1428  
  1429    # Number of Go routines to use when syncing block meta files from object
  1430    # storage per tenant.
  1431    # CLI flag: -blocks-storage.bucket-store.meta-sync-concurrency
  1432    [meta_sync_concurrency: <int> | default = 20]
  1433  
  1434    # Duration after which the blocks marked for deletion will be filtered out
  1435    # while fetching blocks. The idea of ignore-deletion-marks-delay is to ignore
  1436    # blocks that are marked for deletion with some delay. This ensures store can
  1437    # still serve blocks that are meant to be deleted but do not have a
  1438    # replacement yet.
  1439    # CLI flag: -blocks-storage.bucket-store.ignore-deletion-marks-delay
  1440    [ignore_deletion_mark_delay: <duration> | default = 30m]
  1441  ```
  1442  
  1443  ### compactor
  1444  
  1445  The `compactor` block configures the compactor.
  1446  
  1447  ```yaml
  1448  # List of compaction time ranges.
  1449  # CLI flag: -compactor.block-ranges
  1450  [block_ranges: <list of durations> | default = 1h0m0s,2h0m0s,8h0m0s]
  1451  
  1452  # Number of Go routines to use when downloading blocks for compaction and
  1453  # uploading resulting blocks.
  1454  # CLI flag: -compactor.block-sync-concurrency
  1455  [block_sync_concurrency: <int> | default = 8]
  1456  
  1457  # Number of Go routines to use when syncing block meta files from the long term
  1458  # storage.
  1459  # CLI flag: -compactor.meta-sync-concurrency
  1460  [meta_sync_concurrency: <int> | default = 20]
  1461  
  1462  # Directory to temporarily store blocks during compaction. This directory is not
  1463  # required to be persisted between restarts.
  1464  # CLI flag: -compactor.data-dir
  1465  [data_dir: <string> | default = "./data-compactor"]
  1466  
  1467  # The frequency at which the compaction runs
  1468  # CLI flag: -compactor.compaction-interval
  1469  [compaction_interval: <duration> | default = 30m]
  1470  
  1471  # How many times to retry a failed compaction within a single compaction run.
  1472  # CLI flag: -compactor.compaction-retries
  1473  [compaction_retries: <int> | default = 3]
  1474  
  1475  # Max number of concurrent compactions running.
  1476  # CLI flag: -compactor.compaction-concurrency
  1477  [compaction_concurrency: <int> | default = 1]
  1478  
  1479  # How long the compactor waits before compacting first-level blocks that are
  1480  # uploaded by the ingesters. This configuration option allows for the reduction
  1481  # of cases where the compactor begins to compact blocks before all ingesters
  1482  # have uploaded their blocks to the storage.
  1483  # CLI flag: -compactor.first-level-compaction-wait-period
  1484  [first_level_compaction_wait_period: <duration> | default = 25m]
  1485  
  1486  # How frequently compactor should run blocks cleanup and maintenance, as well as
  1487  # update the bucket index.
  1488  # CLI flag: -compactor.cleanup-interval
  1489  [cleanup_interval: <duration> | default = 15m]
  1490  
  1491  # Max number of tenants for which blocks cleanup and maintenance should run
  1492  # concurrently.
  1493  # CLI flag: -compactor.cleanup-concurrency
  1494  [cleanup_concurrency: <int> | default = 20]
  1495  
  1496  # Time before a block marked for deletion is deleted from bucket. If not 0,
  1497  # blocks will be marked for deletion and compactor component will permanently
  1498  # delete blocks marked for deletion from the bucket. If 0, blocks will be
  1499  # deleted straight away. Note that deleting blocks immediately can cause query
  1500  # failures.
  1501  # CLI flag: -compactor.deletion-delay
  1502  [deletion_delay: <duration> | default = 12h]
  1503  
  1504  [tenant_cleanup_delay: <duration> | default = ]
  1505  
  1506  # Max time for starting compactions for a single tenant. After this time no new
  1507  # compactions for the tenant are started before next compaction cycle. This can
  1508  # help in multi-tenant environments to avoid single tenant using all compaction
  1509  # time, but also in single-tenant environments to force new discovery of blocks
  1510  # more often. 0 = disabled.
  1511  # CLI flag: -compactor.max-compaction-time
  1512  [max_compaction_time: <duration> | default = 1h]
  1513  
  1514  # If enabled, will delete the bucket-index, markers and debug files in the
  1515  # tenant bucket when there are no blocks left in the index.
  1516  # CLI flag: -compactor.no-blocks-file-cleanup-enabled
  1517  [no_blocks_file_cleanup_enabled: <boolean> | default = false]
  1518  
  1519  # If enabled, the compactor will downsample profiles in blocks at compaction
  1520  # level 3 and above. The original profiles are also kept.
  1521  # CLI flag: -compactor.downsampler-enabled
  1522  [downsampler_enabled: <boolean> | default = false]
  1523  
  1524  # Number of goroutines opening blocks before compaction.
  1525  # CLI flag: -compactor.max-opening-blocks-concurrency
  1526  [max_opening_blocks_concurrency: <int> | default = 16]
  1527  
  1528  # Comma separated list of tenants that can be compacted. If specified, only
  1529  # these tenants will be compacted by compactor, otherwise all tenants can be
  1530  # compacted. Subject to sharding.
  1531  # CLI flag: -compactor.enabled-tenants
  1532  [enabled_tenants: <string> | default = ""]
  1533  
  1534  # Comma separated list of tenants that cannot be compacted by this compactor. If
  1535  # specified, and compactor would normally pick given tenant for compaction (via
  1536  # -compactor.enabled-tenants or sharding), it will be ignored instead.
  1537  # CLI flag: -compactor.disabled-tenants
  1538  [disabled_tenants: <string> | default = ""]
  1539  
  1540  sharding_ring:
  1541    # The key-value store used to share the hash ring across multiple instances.
  1542    kvstore:
  1543      # Backend storage to use for the ring. Supported values are: consul, etcd,
  1544      # inmemory, memberlist, multi.
  1545      # CLI flag: -compactor.ring.store
  1546      [store: <string> | default = "memberlist"]
  1547  
  1548      # The prefix for the keys in the store. Should end with a /.
  1549      # CLI flag: -compactor.ring.prefix
  1550      [prefix: <string> | default = "collectors/"]
  1551  
  1552      consul:
  1553        # Hostname and port of Consul.
  1554        # CLI flag: -compactor.ring.consul.hostname
  1555        [host: <string> | default = "localhost:8500"]
  1556  
  1557        # ACL Token used to interact with Consul.
  1558        # CLI flag: -compactor.ring.consul.acl-token
  1559        [acl_token: <string> | default = ""]
  1560  
  1561        # HTTP timeout when talking to Consul
  1562        # CLI flag: -compactor.ring.consul.client-timeout
  1563        [http_client_timeout: <duration> | default = 20s]
  1564  
  1565        # Enable consistent reads to Consul.
  1566        # CLI flag: -compactor.ring.consul.consistent-reads
  1567        [consistent_reads: <boolean> | default = false]
  1568  
  1569        # Rate limit when watching key or prefix in Consul, in requests per
  1570        # second. 0 disables the rate limit.
  1571        # CLI flag: -compactor.ring.consul.watch-rate-limit
  1572        [watch_rate_limit: <float> | default = 1]
  1573  
  1574        # Burst size used in rate limit. Values less than 1 are treated as 1.
  1575        # CLI flag: -compactor.ring.consul.watch-burst-size
  1576        [watch_burst_size: <int> | default = 1]
  1577  
  1578        # Maximum duration to wait before retrying a Compare And Swap (CAS)
  1579        # operation.
  1580        # CLI flag: -compactor.ring.consul.cas-retry-delay
  1581        [cas_retry_delay: <duration> | default = 1s]
  1582  
  1583      etcd:
  1584        # The etcd endpoints to connect to.
  1585        # CLI flag: -compactor.ring.etcd.endpoints
  1586        [endpoints: <list of strings> | default = []]
  1587  
  1588        # The dial timeout for the etcd connection.
  1589        # CLI flag: -compactor.ring.etcd.dial-timeout
  1590        [dial_timeout: <duration> | default = 10s]
  1591  
  1592        # The maximum number of retries to do for failed ops.
  1593        # CLI flag: -compactor.ring.etcd.max-retries
  1594        [max_retries: <int> | default = 10]
  1595  
  1596        # Enable TLS.
  1597        # CLI flag: -compactor.ring.etcd.tls-enabled
  1598        [tls_enabled: <boolean> | default = false]
  1599  
  1600        # Path to the client certificate, which will be used for authenticating
  1601        # with the server. Also requires the key path to be configured.
  1602        # CLI flag: -compactor.ring.etcd.tls-cert-path
  1603        [tls_cert_path: <string> | default = ""]
  1604  
  1605        # Path to the key for the client certificate. Also requires the client
  1606        # certificate to be configured.
  1607        # CLI flag: -compactor.ring.etcd.tls-key-path
  1608        [tls_key_path: <string> | default = ""]
  1609  
  1610        # Path to the CA certificates to validate server certificate against. If
  1611        # not set, the host's root CA certificates are used.
  1612        # CLI flag: -compactor.ring.etcd.tls-ca-path
  1613        [tls_ca_path: <string> | default = ""]
  1614  
  1615        # Override the expected name on the server certificate.
  1616        # CLI flag: -compactor.ring.etcd.tls-server-name
  1617        [tls_server_name: <string> | default = ""]
  1618  
  1619        # Skip validating server certificate.
  1620        # CLI flag: -compactor.ring.etcd.tls-insecure-skip-verify
  1621        [tls_insecure_skip_verify: <boolean> | default = false]
  1622  
  1623        # Override the default cipher suite list (separated by commas). Allowed
  1624        # values:
  1625        # 
  1626        # Secure Ciphers:
  1627        # - TLS_AES_128_GCM_SHA256
  1628        # - TLS_AES_256_GCM_SHA384
  1629        # - TLS_CHACHA20_POLY1305_SHA256
  1630        # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  1631        # - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  1632        # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  1633        # - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  1634        # - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  1635        # - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  1636        # - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  1637        # - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  1638        # - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
  1639        # - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
  1640        # 
  1641        # Insecure Ciphers:
  1642        # - TLS_RSA_WITH_RC4_128_SHA
  1643        # - TLS_RSA_WITH_3DES_EDE_CBC_SHA
  1644        # - TLS_RSA_WITH_AES_128_CBC_SHA
  1645        # - TLS_RSA_WITH_AES_256_CBC_SHA
  1646        # - TLS_RSA_WITH_AES_128_CBC_SHA256
  1647        # - TLS_RSA_WITH_AES_128_GCM_SHA256
  1648        # - TLS_RSA_WITH_AES_256_GCM_SHA384
  1649        # - TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
  1650        # - TLS_ECDHE_RSA_WITH_RC4_128_SHA
  1651        # - TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
  1652        # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  1653        # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  1654        # CLI flag: -compactor.ring.etcd.tls-cipher-suites
  1655        [tls_cipher_suites: <string> | default = ""]
  1656  
  1657        # Override the default minimum TLS version. Allowed values: VersionTLS10,
  1658        # VersionTLS11, VersionTLS12, VersionTLS13
  1659        # CLI flag: -compactor.ring.etcd.tls-min-version
  1660        [tls_min_version: <string> | default = ""]
  1661  
  1662        # Etcd username.
  1663        # CLI flag: -compactor.ring.etcd.username
  1664        [username: <string> | default = ""]
  1665  
  1666        # Etcd password.
  1667        # CLI flag: -compactor.ring.etcd.password
  1668        [password: <string> | default = ""]
  1669  
  1670      multi:
  1671        # Primary backend storage used by multi-client.
  1672        # CLI flag: -compactor.ring.multi.primary
  1673        [primary: <string> | default = ""]
  1674  
  1675        # Secondary backend storage used by multi-client.
  1676        # CLI flag: -compactor.ring.multi.secondary
  1677        [secondary: <string> | default = ""]
  1678  
  1679        # Mirror writes to secondary store.
  1680        # CLI flag: -compactor.ring.multi.mirror-enabled
  1681        [mirror_enabled: <boolean> | default = false]
  1682  
  1683        # Timeout for storing value to secondary store.
  1684        # CLI flag: -compactor.ring.multi.mirror-timeout
  1685        [mirror_timeout: <duration> | default = 2s]
  1686  
  1687    # Period at which to heartbeat to the ring. 0 = disabled.
  1688    # CLI flag: -compactor.ring.heartbeat-period
  1689    [heartbeat_period: <duration> | default = 15s]
  1690  
  1691    # The heartbeat timeout after which compactors are considered unhealthy within
  1692    # the ring. 0 = never (timeout disabled).
  1693    # CLI flag: -compactor.ring.heartbeat-timeout
  1694    [heartbeat_timeout: <duration> | default = 1m]
  1695  
  1696    # Instance ID to register in the ring.
  1697    # CLI flag: -compactor.ring.instance-id
  1698    [instance_id: <string> | default = "<hostname>"]
  1699  
  1700    # List of network interface names to look up when finding the instance IP
  1701    # address.
  1702    # CLI flag: -compactor.ring.instance-interface-names
  1703    [instance_interface_names: <list of strings> | default = [<private network interfaces>]]
  1704  
  1705    # Port to advertise in the ring (defaults to -server.http-listen-port).
  1706    # CLI flag: -compactor.ring.instance-port
  1707    [instance_port: <int> | default = 0]
  1708  
  1709    # IP address to advertise in the ring. Default is auto-detected.
  1710    # CLI flag: -compactor.ring.instance-addr
  1711    [instance_addr: <string> | default = ""]
  1712  
  1713    # Enable using a IPv6 instance address. (default false)
  1714    # CLI flag: -compactor.ring.instance-enable-ipv6
  1715    [instance_enable_ipv6: <boolean> | default = false]
  1716  
  1717    # Minimum time to wait for ring stability at startup. 0 to disable.
  1718    # CLI flag: -compactor.ring.wait-stability-min-duration
  1719    [wait_stability_min_duration: <duration> | default = 0s]
  1720  
  1721    # Maximum time to wait for ring stability at startup. If the compactor ring
  1722    # keeps changing after this period of time, the compactor will start anyway.
  1723    # CLI flag: -compactor.ring.wait-stability-max-duration
  1724    [wait_stability_max_duration: <duration> | default = 5m]
  1725  
  1726    # Timeout for waiting on compactor to become ACTIVE in the ring.
  1727    # CLI flag: -compactor.ring.wait-active-instance-timeout
  1728    [wait_active_instance_timeout: <duration> | default = 10m]
  1729  
  1730  # The sorting to use when deciding which compaction jobs should run first for a
  1731  # given tenant. Supported values are: smallest-range-oldest-blocks-first,
  1732  # newest-blocks-first.
  1733  # CLI flag: -compactor.compaction-jobs-order
  1734  [compaction_jobs_order: <string> | default = "smallest-range-oldest-blocks-first"]
  1735  
  1736  # Experimental: The strategy to use when splitting blocks during compaction.
  1737  # Supported values are: fingerprint, stacktracePartition.
  1738  # CLI flag: -compactor.compaction-split-by
  1739  [compaction_split_by: <string> | default = "fingerprint"]
  1740  ```
  1741  
  1742  ### grpc_client
  1743  
  1744  The `grpc_client` block configures the gRPC client used to communicate between two Pyroscope components. The supported CLI flags `<prefix>` used to reference this configuration block are:
  1745  
  1746  - `querier.frontend-client`
  1747  - `query-frontend.grpc-client-config`
  1748  - `query-scheduler.grpc-client-config`
  1749  
  1750  &nbsp;
  1751  
  1752  ```yaml
  1753  # gRPC client max receive message size (bytes).
  1754  # CLI flag: -<prefix>.grpc-max-recv-msg-size
  1755  [max_recv_msg_size: <int> | default = 104857600]
  1756  
  1757  # gRPC client max send message size (bytes).
  1758  # CLI flag: -<prefix>.grpc-max-send-msg-size
  1759  [max_send_msg_size: <int> | default = 104857600]
  1760  
  1761  # Use compression when sending messages. Supported values are: 'gzip', 'snappy'
  1762  # and '' (disable compression)
  1763  # CLI flag: -<prefix>.grpc-compression
  1764  [grpc_compression: <string> | default = ""]
  1765  
  1766  # Rate limit for gRPC client; 0 means disabled.
  1767  # CLI flag: -<prefix>.grpc-client-rate-limit
  1768  [rate_limit: <float> | default = 0]
  1769  
  1770  # Rate limit burst for gRPC client.
  1771  # CLI flag: -<prefix>.grpc-client-rate-limit-burst
  1772  [rate_limit_burst: <int> | default = 0]
  1773  
  1774  # Enable backoff and retry when we hit rate limits.
  1775  # CLI flag: -<prefix>.backoff-on-ratelimits
  1776  [backoff_on_ratelimits: <boolean> | default = false]
  1777  
  1778  backoff_config:
  1779    # Minimum delay when backing off.
  1780    # CLI flag: -<prefix>.backoff-min-period
  1781    [min_period: <duration> | default = 100ms]
  1782  
  1783    # Maximum delay when backing off.
  1784    # CLI flag: -<prefix>.backoff-max-period
  1785    [max_period: <duration> | default = 10s]
  1786  
  1787    # Number of times to backoff and retry before failing.
  1788    # CLI flag: -<prefix>.backoff-retries
  1789    [max_retries: <int> | default = 10]
  1790  
  1791  # Initial stream window size. Values less than the default are not supported and
  1792  # are ignored. Setting this to a value other than the default disables the BDP
  1793  # estimator.
  1794  # CLI flag: -<prefix>.initial-stream-window-size
  1795  [initial_stream_window_size: <int> | default = 63KiB1023B]
  1796  
  1797  # Initial connection window size. Values less than the default are not supported
  1798  # and are ignored. Setting this to a value other than the default disables the
  1799  # BDP estimator.
  1800  # CLI flag: -<prefix>.initial-connection-window-size
  1801  [initial_connection_window_size: <int> | default = 63KiB1023B]
  1802  
  1803  # Enable TLS in the gRPC client. This flag needs to be enabled when any other
  1804  # TLS flag is set. If set to false, insecure connection to gRPC server will be
  1805  # used.
  1806  # CLI flag: -<prefix>.tls-enabled
  1807  [tls_enabled: <boolean> | default = false]
  1808  
  1809  # Path to the client certificate, which will be used for authenticating with the
  1810  # server. Also requires the key path to be configured.
  1811  # CLI flag: -<prefix>.tls-cert-path
  1812  [tls_cert_path: <string> | default = ""]
  1813  
  1814  # Path to the key for the client certificate. Also requires the client
  1815  # certificate to be configured.
  1816  # CLI flag: -<prefix>.tls-key-path
  1817  [tls_key_path: <string> | default = ""]
  1818  
  1819  # Path to the CA certificates to validate server certificate against. If not
  1820  # set, the host's root CA certificates are used.
  1821  # CLI flag: -<prefix>.tls-ca-path
  1822  [tls_ca_path: <string> | default = ""]
  1823  
  1824  # Override the expected name on the server certificate.
  1825  # CLI flag: -<prefix>.tls-server-name
  1826  [tls_server_name: <string> | default = ""]
  1827  
  1828  # Skip validating server certificate.
  1829  # CLI flag: -<prefix>.tls-insecure-skip-verify
  1830  [tls_insecure_skip_verify: <boolean> | default = false]
  1831  
  1832  # Override the default cipher suite list (separated by commas). Allowed values:
  1833  # 
  1834  # Secure Ciphers:
  1835  # - TLS_AES_128_GCM_SHA256
  1836  # - TLS_AES_256_GCM_SHA384
  1837  # - TLS_CHACHA20_POLY1305_SHA256
  1838  # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  1839  # - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  1840  # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  1841  # - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  1842  # - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  1843  # - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  1844  # - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  1845  # - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  1846  # - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
  1847  # - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
  1848  # 
  1849  # Insecure Ciphers:
  1850  # - TLS_RSA_WITH_RC4_128_SHA
  1851  # - TLS_RSA_WITH_3DES_EDE_CBC_SHA
  1852  # - TLS_RSA_WITH_AES_128_CBC_SHA
  1853  # - TLS_RSA_WITH_AES_256_CBC_SHA
  1854  # - TLS_RSA_WITH_AES_128_CBC_SHA256
  1855  # - TLS_RSA_WITH_AES_128_GCM_SHA256
  1856  # - TLS_RSA_WITH_AES_256_GCM_SHA384
  1857  # - TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
  1858  # - TLS_ECDHE_RSA_WITH_RC4_128_SHA
  1859  # - TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
  1860  # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  1861  # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  1862  # CLI flag: -<prefix>.tls-cipher-suites
  1863  [tls_cipher_suites: <string> | default = ""]
  1864  
  1865  # Override the default minimum TLS version. Allowed values: VersionTLS10,
  1866  # VersionTLS11, VersionTLS12, VersionTLS13
  1867  # CLI flag: -<prefix>.tls-min-version
  1868  [tls_min_version: <string> | default = ""]
  1869  
  1870  # The maximum amount of time to establish a connection. A value of 0 means
  1871  # default gRPC client connect timeout and backoff.
  1872  # CLI flag: -<prefix>.connect-timeout
  1873  [connect_timeout: <duration> | default = 5s]
  1874  
  1875  # Initial backoff delay after first connection failure. Only relevant if
  1876  # ConnectTimeout > 0.
  1877  # CLI flag: -<prefix>.connect-backoff-base-delay
  1878  [connect_backoff_base_delay: <duration> | default = 1s]
  1879  
  1880  # Maximum backoff delay when establishing a connection. Only relevant if
  1881  # ConnectTimeout > 0.
  1882  # CLI flag: -<prefix>.connect-backoff-max-delay
  1883  [connect_backoff_max_delay: <duration> | default = 5s]
  1884  
  1885  cluster_validation:
  1886    # Optionally define the cluster validation label.
  1887    # CLI flag: -<prefix>.cluster-validation.label
  1888    [label: <string> | default = ""]
  1889  ```
  1890  
  1891  ### memberlist
  1892  
  1893  The `memberlist` block configures the Gossip memberlist.
  1894  
  1895  ```yaml
  1896  # Name of the node in memberlist cluster. Defaults to hostname.
  1897  # CLI flag: -memberlist.nodename
  1898  [node_name: <string> | default = ""]
  1899  
  1900  # Add random suffix to the node name.
  1901  # CLI flag: -memberlist.randomize-node-name
  1902  [randomize_node_name: <boolean> | default = true]
  1903  
  1904  # The timeout for establishing a connection with a remote node, and for
  1905  # read/write operations.
  1906  # CLI flag: -memberlist.stream-timeout
  1907  [stream_timeout: <duration> | default = 2s]
  1908  
  1909  # Multiplication factor used when sending out messages (factor * log(N+1)).
  1910  # CLI flag: -memberlist.retransmit-factor
  1911  [retransmit_factor: <int> | default = 4]
  1912  
  1913  # How often to use pull/push sync.
  1914  # CLI flag: -memberlist.pullpush-interval
  1915  [pull_push_interval: <duration> | default = 30s]
  1916  
  1917  # How often to gossip.
  1918  # CLI flag: -memberlist.gossip-interval
  1919  [gossip_interval: <duration> | default = 200ms]
  1920  
  1921  # How many nodes to gossip to.
  1922  # CLI flag: -memberlist.gossip-nodes
  1923  [gossip_nodes: <int> | default = 3]
  1924  
  1925  # How long to keep gossiping to dead nodes, to give them chance to refute their
  1926  # death.
  1927  # CLI flag: -memberlist.gossip-to-dead-nodes-time
  1928  [gossip_to_dead_nodes_time: <duration> | default = 30s]
  1929  
  1930  # How soon can dead node's name be reclaimed with new address. 0 to disable.
  1931  # CLI flag: -memberlist.dead-node-reclaim-time
  1932  [dead_node_reclaim_time: <duration> | default = 0s]
  1933  
  1934  # Enable message compression. This can be used to reduce bandwidth usage at the
  1935  # cost of slightly more CPU utilization.
  1936  # CLI flag: -memberlist.compression-enabled
  1937  [compression_enabled: <boolean> | default = true]
  1938  
  1939  # How frequently to notify watchers when a key changes. Can reduce CPU activity
  1940  # in large memberlist deployments. 0 to notify without delay.
  1941  # CLI flag: -memberlist.notify-interval
  1942  [notify_interval: <duration> | default = 0s]
  1943  
  1944  # Gossip address to advertise to other members in the cluster. Used for NAT
  1945  # traversal.
  1946  # CLI flag: -memberlist.advertise-addr
  1947  [advertise_addr: <string> | default = ""]
  1948  
  1949  # Gossip port to advertise to other members in the cluster. Used for NAT
  1950  # traversal.
  1951  # CLI flag: -memberlist.advertise-port
  1952  [advertise_port: <int> | default = 7946]
  1953  
  1954  # The cluster label is an optional string to include in outbound packets and
  1955  # gossip streams. Other members in the memberlist cluster will discard any
  1956  # message whose label doesn't match the configured one, unless the
  1957  # 'cluster-label-verification-disabled' configuration option is set to true.
  1958  # CLI flag: -memberlist.cluster-label
  1959  [cluster_label: <string> | default = ""]
  1960  
  1961  # When true, memberlist doesn't verify that inbound packets and gossip streams
  1962  # have the cluster label matching the configured one. This verification should
  1963  # be disabled while rolling out the change to the configured cluster label in a
  1964  # live memberlist cluster.
  1965  # CLI flag: -memberlist.cluster-label-verification-disabled
  1966  [cluster_label_verification_disabled: <boolean> | default = false]
  1967  
  1968  # Other cluster members to join. Can be specified multiple times. It can be an
  1969  # IP, hostname or an entry specified in the DNS Service Discovery format.
  1970  # CLI flag: -memberlist.join
  1971  [join_members: <list of strings> | default = []]
  1972  
  1973  # Min backoff duration to join other cluster members.
  1974  # CLI flag: -memberlist.min-join-backoff
  1975  [min_join_backoff: <duration> | default = 1s]
  1976  
  1977  # Max backoff duration to join other cluster members.
  1978  # CLI flag: -memberlist.max-join-backoff
  1979  [max_join_backoff: <duration> | default = 1m]
  1980  
  1981  # Max number of retries to join other cluster members.
  1982  # CLI flag: -memberlist.max-join-retries
  1983  [max_join_retries: <int> | default = 10]
  1984  
  1985  # Abort if this node fails the fast memberlist cluster joining procedure at
  1986  # startup. When enabled, it's guaranteed that other services, depending on
  1987  # memberlist, have an updated view over the cluster state when they're started.
  1988  # CLI flag: -memberlist.abort-if-fast-join-fails
  1989  [abort_if_cluster_fast_join_fails: <boolean> | default = false]
  1990  
  1991  # Abort if this node fails to join memberlist cluster at startup. When enabled,
  1992  # it's not guaranteed that other services are started only after the cluster
  1993  # state has been successfully updated; use 'abort-if-fast-join-fails' instead.
  1994  # CLI flag: -memberlist.abort-if-join-fails
  1995  [abort_if_cluster_join_fails: <boolean> | default = false]
  1996  
  1997  # If not 0, how often to rejoin the cluster. Occasional rejoin can help to fix
  1998  # the cluster split issue, and is harmless otherwise. For example when using
  1999  # only few components as a seed nodes (via -memberlist.join), then it's
  2000  # recommended to use rejoin. If -memberlist.join points to dynamic service that
  2001  # resolves to all gossiping nodes (eg. Kubernetes headless service), then rejoin
  2002  # is not needed.
  2003  # CLI flag: -memberlist.rejoin-interval
  2004  [rejoin_interval: <duration> | default = 0s]
  2005  
  2006  # How long to keep LEFT ingesters in the ring.
  2007  # CLI flag: -memberlist.left-ingesters-timeout
  2008  [left_ingesters_timeout: <duration> | default = 5m]
  2009  
  2010  # How long to keep obsolete entries in the KV store.
  2011  # CLI flag: -memberlist.obsolete-entries-timeout
  2012  [obsolete_entries_timeout: <duration> | default = 30s]
  2013  
  2014  # Timeout for leaving memberlist cluster.
  2015  # CLI flag: -memberlist.leave-timeout
  2016  [leave_timeout: <duration> | default = 20s]
  2017  
  2018  # Timeout for broadcasting all remaining locally-generated updates to other
  2019  # nodes when shutting down. Only used if there are nodes left in the memberlist
  2020  # cluster, and only applies to locally-generated updates, not to broadcast
  2021  # messages that are result of incoming gossip updates. 0 = no timeout, wait
  2022  # until all locally-generated updates are sent.
  2023  # CLI flag: -memberlist.broadcast-timeout-for-local-updates-on-shutdown
  2024  [broadcast_timeout_for_local_updates_on_shutdown: <duration> | default = 10s]
  2025  
  2026  # How much space to use for keeping received and sent messages in memory for
  2027  # troubleshooting (two buffers). 0 to disable.
  2028  # CLI flag: -memberlist.message-history-buffer-bytes
  2029  [message_history_buffer_bytes: <int> | default = 0]
  2030  
  2031  # Size of the buffered channel for the WatchPrefix function.
  2032  # CLI flag: -memberlist.watch-prefix-buffer-size
  2033  [watch_prefix_buffer_size: <int> | default = 128]
  2034  
  2035  # IP address to listen on for gossip messages. Multiple addresses may be
  2036  # specified. Defaults to 0.0.0.0
  2037  # CLI flag: -memberlist.bind-addr
  2038  [bind_addr: <list of strings> | default = []]
  2039  
  2040  # Port to listen on for gossip messages.
  2041  # CLI flag: -memberlist.bind-port
  2042  [bind_port: <int> | default = 7946]
  2043  
  2044  # Timeout used when connecting to other nodes to send packet.
  2045  # CLI flag: -memberlist.packet-dial-timeout
  2046  [packet_dial_timeout: <duration> | default = 2s]
  2047  
  2048  # Timeout for writing 'packet' data.
  2049  # CLI flag: -memberlist.packet-write-timeout
  2050  [packet_write_timeout: <duration> | default = 5s]
  2051  
  2052  # Maximum number of concurrent writes to other nodes.
  2053  # CLI flag: -memberlist.max-concurrent-writes
  2054  [max_concurrent_writes: <int> | default = 3]
  2055  
  2056  # Timeout for acquiring one of the concurrent write slots. After this time, the
  2057  # message will be dropped.
  2058  # CLI flag: -memberlist.acquire-writer-timeout
  2059  [acquire_writer_timeout: <duration> | default = 250ms]
  2060  
  2061  # Enable TLS on the memberlist transport layer.
  2062  # CLI flag: -memberlist.tls-enabled
  2063  [tls_enabled: <boolean> | default = false]
  2064  
  2065  # Path to the client certificate, which will be used for authenticating with the
  2066  # server. Also requires the key path to be configured.
  2067  # CLI flag: -memberlist.tls-cert-path
  2068  [tls_cert_path: <string> | default = ""]
  2069  
  2070  # Path to the key for the client certificate. Also requires the client
  2071  # certificate to be configured.
  2072  # CLI flag: -memberlist.tls-key-path
  2073  [tls_key_path: <string> | default = ""]
  2074  
  2075  # Path to the CA certificates to validate server certificate against. If not
  2076  # set, the host's root CA certificates are used.
  2077  # CLI flag: -memberlist.tls-ca-path
  2078  [tls_ca_path: <string> | default = ""]
  2079  
  2080  # Override the expected name on the server certificate.
  2081  # CLI flag: -memberlist.tls-server-name
  2082  [tls_server_name: <string> | default = ""]
  2083  
  2084  # Skip validating server certificate.
  2085  # CLI flag: -memberlist.tls-insecure-skip-verify
  2086  [tls_insecure_skip_verify: <boolean> | default = false]
  2087  
  2088  # Override the default cipher suite list (separated by commas). Allowed values:
  2089  # 
  2090  # Secure Ciphers:
  2091  # - TLS_AES_128_GCM_SHA256
  2092  # - TLS_AES_256_GCM_SHA384
  2093  # - TLS_CHACHA20_POLY1305_SHA256
  2094  # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  2095  # - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  2096  # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  2097  # - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  2098  # - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  2099  # - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  2100  # - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  2101  # - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  2102  # - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
  2103  # - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
  2104  # 
  2105  # Insecure Ciphers:
  2106  # - TLS_RSA_WITH_RC4_128_SHA
  2107  # - TLS_RSA_WITH_3DES_EDE_CBC_SHA
  2108  # - TLS_RSA_WITH_AES_128_CBC_SHA
  2109  # - TLS_RSA_WITH_AES_256_CBC_SHA
  2110  # - TLS_RSA_WITH_AES_128_CBC_SHA256
  2111  # - TLS_RSA_WITH_AES_128_GCM_SHA256
  2112  # - TLS_RSA_WITH_AES_256_GCM_SHA384
  2113  # - TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
  2114  # - TLS_ECDHE_RSA_WITH_RC4_128_SHA
  2115  # - TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
  2116  # - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  2117  # - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  2118  # CLI flag: -memberlist.tls-cipher-suites
  2119  [tls_cipher_suites: <string> | default = ""]
  2120  
  2121  # Override the default minimum TLS version. Allowed values: VersionTLS10,
  2122  # VersionTLS11, VersionTLS12, VersionTLS13
  2123  # CLI flag: -memberlist.tls-min-version
  2124  [tls_min_version: <string> | default = ""]
  2125  ```
  2126  
  2127  ### limits
  2128  
  2129  The `limits` block configures default and per-tenant limits imposed by components.
  2130  
  2131  ```yaml
  2132  # Per-tenant ingestion rate limit in sample size per second. Units in MB.
  2133  # CLI flag: -distributor.ingestion-rate-limit-mb
  2134  [ingestion_rate_mb: <float> | default = 4]
  2135  
  2136  # Per-tenant allowed ingestion burst size (in sample size). Units in MB. The
  2137  # burst size refers to the per-distributor local rate limiter, and should be set
  2138  # at least to the maximum profile size expected in a single push request.
  2139  # CLI flag: -distributor.ingestion-burst-size-mb
  2140  [ingestion_burst_size_mb: <float> | default = 2]
  2141  
  2142  # Maximum length accepted for label names.
  2143  # CLI flag: -validation.max-length-label-name
  2144  [max_label_name_length: <int> | default = 1024]
  2145  
  2146  # Maximum length accepted for label value. This setting also applies to the
  2147  # metric name.
  2148  # CLI flag: -validation.max-length-label-value
  2149  [max_label_value_length: <int> | default = 2048]
  2150  
  2151  # Maximum number of label names per series.
  2152  # CLI flag: -validation.max-label-names-per-series
  2153  [max_label_names_per_series: <int> | default = 30]
  2154  
  2155  # Maximum number of sessions per series. 0 to disable.
  2156  # CLI flag: -validation.max-sessions-per-series
  2157  [max_sessions_per_series: <int> | default = 0]
  2158  
  2159  # Enforce labels order optimization.
  2160  # CLI flag: -validation.enforce-labels-order
  2161  [enforce_labels_order: <boolean> | default = false]
  2162  
  2163  # Maximum size of a profile in bytes. This is based off the uncompressed size. 0
  2164  # to disable.
  2165  # CLI flag: -validation.max-profile-size-bytes
  2166  [max_profile_size_bytes: <int> | default = 4194304]
  2167  
  2168  # Maximum number of samples in a profile. 0 to disable.
  2169  # CLI flag: -validation.max-profile-stacktrace-samples
  2170  [max_profile_stacktrace_samples: <int> | default = 16000]
  2171  
  2172  # Maximum number of labels in a profile sample. 0 to disable.
  2173  # CLI flag: -validation.max-profile-stacktrace-sample-labels
  2174  [max_profile_stacktrace_sample_labels: <int> | default = 100]
  2175  
  2176  # Maximum depth of a profile stacktrace. Profiles are not rejected instead
  2177  # stacktraces are truncated. 0 to disable.
  2178  # CLI flag: -validation.max-profile-stacktrace-depth
  2179  [max_profile_stacktrace_depth: <int> | default = 1000]
  2180  
  2181  # Maximum length of a profile symbol value (labels, function names and
  2182  # filenames, etc...). Profiles are not rejected instead symbol values are
  2183  # truncated. 0 to disable.
  2184  # CLI flag: -validation.max-profile-symbol-value-length
  2185  [max_profile_symbol_value_length: <int> | default = 65535]
  2186  
  2187  distributor_usage_groups:
  2188  
  2189  # Duration of the distributor aggregation window. Requires aggregation period to
  2190  # be specified. 0 to disable.
  2191  # CLI flag: -distributor.aggregation-window
  2192  [distributor_aggregation_window: <duration> | default = 0s]
  2193  
  2194  # Duration of the distributor aggregation period. Requires aggregation window to
  2195  # be specified. 0 to disable.
  2196  # CLI flag: -distributor.aggregation-period
  2197  [distributor_aggregation_period: <duration> | default = 0s]
  2198  
  2199  # List of ingestion relabel configurations. The relabeling rules work the same
  2200  # way, as those of
  2201  # [Prometheus](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config).
  2202  # All rules are applied in the order they are specified. Note: In most
  2203  # situations, it is more effective to use relabeling directly in Grafana Alloy.
  2204  # Example:
  2205  #   This example consists of two rules, the first one will drop all profiles
  2206  #   received with an label 'environment="secrets"' and the second rule will add
  2207  #   a label 'powered_by="Grafana Labs"' to all profile series.
  2208  #   ingestion_relabeling_rules:
  2209  #       - action: drop
  2210  #         regex: secret
  2211  #         source_labels:
  2212  #           - environment
  2213  #       - action: replace
  2214  #         replacement: grafana-labs
  2215  #         target_label: powered_by
  2216  # CLI flag: -distributor.ingestion-relabeling-rules
  2217  [ingestion_relabeling_rules: <list of Configs> | default = []]
  2218  
  2219  # Position of the default ingestion relabeling rules in relation to relabel
  2220  # rules from overrides. Valid values are 'first', 'last' or 'disabled'.
  2221  # CLI flag: -distributor.ingestion-relabeling-default-rules-position
  2222  [ingestion_relabeling_default_rules_position: <string> | default = "first"]
  2223  
  2224  # List of sample type relabel configurations. Rules are applied to sample types
  2225  # with __type__ and __unit__ labels, along with all series labels.
  2226  # Example:
  2227  #   This example shows sample type filtering rules. The first rule drops all
  2228  #   allocation-related sample types (alloc_objects, alloc_space) from memory
  2229  #   profiles, keeping only in-use metrics. The second rule keeps only
  2230  #   CPU-related sample types by matching the __type__ label. The third rule
  2231  #   shows how to drop allocation sample types for a specific service by
  2232  #   combining __type__ and service_name labels.
  2233  #   sample_type_relabeling_rules:
  2234  #       - action: drop
  2235  #         regex: alloc_.*
  2236  #         source_labels:
  2237  #           - __type__
  2238  #       - action: keep
  2239  #         regex: cpu|wall
  2240  #         source_labels:
  2241  #           - __type__
  2242  #       - action: drop
  2243  #         regex: alloc_.*;my-service
  2244  #         separator: ;
  2245  #         source_labels:
  2246  #           - __type__
  2247  #           - service_name
  2248  # CLI flag: -distributor.sample-type-relabeling-rules
  2249  [sample_type_relabeling_rules: <list of Configs> | default = []]
  2250  
  2251  # The tenant's shard size used by shuffle-sharding. Must be set both on
  2252  # ingesters and distributors. 0 disables shuffle sharding.
  2253  # CLI flag: -distributor.ingestion-tenant-shard-size
  2254  [ingestion_tenant_shard_size: <int> | default = 0]
  2255  
  2256  # Maximum number of active series of profiles per tenant, per ingester. 0 to
  2257  # disable.
  2258  # CLI flag: -ingester.max-local-series-per-tenant
  2259  [max_local_series_per_tenant: <int> | default = 0]
  2260  
  2261  # Maximum number of active series of profiles per tenant, across the cluster. 0
  2262  # to disable. When the global limit is enabled, each ingester is configured with
  2263  # a dynamic local limit based on the replication factor and the current number
  2264  # of healthy ingesters, and is kept updated whenever the number of ingesters
  2265  # change.
  2266  # CLI flag: -ingester.max-global-series-per-tenant
  2267  [max_global_series_per_tenant: <int> | default = 5000]
  2268  
  2269  # Limit how far back in profiling data can be queried, up until lookback
  2270  # duration ago. This limit is enforced in the query frontend. If the requested
  2271  # time range is outside the allowed range, the request will not fail, but will
  2272  # be modified to only query data within the allowed time range. 0 to disable,
  2273  # default to 7d.
  2274  # CLI flag: -querier.max-query-lookback
  2275  [max_query_lookback: <duration> | default = 1w]
  2276  
  2277  # The limit to length of queries. 0 to disable.
  2278  # CLI flag: -querier.max-query-length
  2279  [max_query_length: <duration> | default = 1d]
  2280  
  2281  # Maximum number of queries that will be scheduled in parallel by the frontend.
  2282  # CLI flag: -querier.max-query-parallelism
  2283  [max_query_parallelism: <int> | default = 0]
  2284  
  2285  # Whether query analysis is enabled in the query frontend. If disabled, the
  2286  # /AnalyzeQuery endpoint will return an empty response.
  2287  # CLI flag: -querier.query-analysis-enabled
  2288  [query_analysis_enabled: <boolean> | default = true]
  2289  
  2290  # Whether the series portion of query analysis is enabled. If disabled, no
  2291  # series data (e.g., series count) will be calculated by the /AnalyzeQuery
  2292  # endpoint.
  2293  # CLI flag: -querier.query-analysis-series-enabled
  2294  [query_analysis_series_enabled: <boolean> | default = false]
  2295  
  2296  # Maximum number of flame graph nodes by default. 0 to disable.
  2297  # CLI flag: -querier.max-flamegraph-nodes-default
  2298  [max_flamegraph_nodes_default: <int> | default = 8192]
  2299  
  2300  # Maximum number of flame graph nodes allowed. 0 to disable.
  2301  # CLI flag: -querier.max-flamegraph-nodes-max
  2302  [max_flamegraph_nodes_max: <int> | default = 1048576]
  2303  
  2304  # The tenant's shard size, used when store-gateway sharding is enabled. Value of
  2305  # 0 disables shuffle sharding for the tenant, that is all tenant blocks are
  2306  # sharded across all store-gateway replicas.
  2307  # CLI flag: -store-gateway.tenant-shard-size
  2308  [store_gateway_tenant_shard_size: <int> | default = 0]
  2309  
  2310  # Split queries by a time interval and execute in parallel. The value 0 disables
  2311  # splitting by time
  2312  # CLI flag: -querier.split-queries-by-interval
  2313  [split_queries_by_interval: <duration> | default = 0s]
  2314  
  2315  # Whether profiles should be sanitized when merging.
  2316  # CLI flag: -querier.sanitize-on-merge
  2317  [query_sanitize_on_merge: <boolean> | default = true]
  2318  
  2319  # Delete blocks containing samples older than the specified retention period. 0
  2320  # to disable.
  2321  # CLI flag: -compactor.blocks-retention-period
  2322  [compactor_blocks_retention_period: <duration> | default = 0s]
  2323  
  2324  # The number of shards to use when splitting blocks. 0 to disable splitting.
  2325  # CLI flag: -compactor.split-and-merge-shards
  2326  [compactor_split_and_merge_shards: <int> | default = 0]
  2327  
  2328  # Number of stages split shards will be written to. Number of output split
  2329  # shards is controlled by -compactor.split-and-merge-shards.
  2330  # CLI flag: -compactor.split-and-merge-stage-size
  2331  [compactor_split_and_merge_stage_size: <int> | default = 0]
  2332  
  2333  # Number of groups that blocks for splitting should be grouped into. Each group
  2334  # of blocks is then split separately. Number of output split shards is
  2335  # controlled by -compactor.split-and-merge-shards.
  2336  # CLI flag: -compactor.split-groups
  2337  [compactor_split_groups: <int> | default = 1]
  2338  
  2339  # Max number of compactors that can compact blocks for single tenant. 0 to
  2340  # disable the limit and use all compactors.
  2341  # CLI flag: -compactor.compactor-tenant-shard-size
  2342  [compactor_tenant_shard_size: <int> | default = 0]
  2343  
  2344  # If a partial block (unfinished block without meta.json file) hasn't been
  2345  # modified for this time, it will be marked for deletion. The minimum accepted
  2346  # value is 4h0m0s: a lower value will be ignored and the feature disabled. 0 to
  2347  # disable.
  2348  # CLI flag: -compactor.partial-block-deletion-delay
  2349  [compactor_partial_block_deletion_delay: <duration> | default = 1d]
  2350  
  2351  # If enabled, the compactor will downsample profiles in blocks at compaction
  2352  # level 3 and above. The original profiles are also kept. Note: This set the
  2353  # default for the teanant overrides, in order to be effective it also requires
  2354  # compactor.downsampler-enabled to be set to true.
  2355  # CLI flag: -compactor.compactor-downsampler-enabled
  2356  [compactor_downsampler_enabled: <boolean> | default = true]
  2357  
  2358  # S3 server-side encryption type. Required to enable server-side encryption
  2359  # overrides for a specific tenant. If not set, the default S3 client settings
  2360  # are used.
  2361  [s3_sse_type: <string> | default = ""]
  2362  
  2363  # S3 server-side encryption KMS Key ID. Ignored if the SSE type override is not
  2364  # set.
  2365  [s3_sse_kms_key_id: <string> | default = ""]
  2366  
  2367  # S3 server-side encryption KMS encryption context. If unset and the key ID
  2368  # override is set, the encryption context will not be provided to S3. Ignored if
  2369  # the SSE type override is not set.
  2370  [s3_sse_kms_encryption_context: <string> | default = ""]
  2371  
  2372  # This limits how far into the past profiling data can be ingested. This limit
  2373  # is enforced in the distributor. 0 to disable, defaults to 1h.
  2374  # CLI flag: -validation.reject-older-than
  2375  [reject_older_than: <duration> | default = 1h]
  2376  
  2377  # This limits how far into the future profiling data can be ingested. This limit
  2378  # is enforced in the distributor. 0 to disable, defaults to 10m.
  2379  # CLI flag: -validation.reject-newer-than
  2380  [reject_newer_than: <duration> | default = 10m]
  2381  ```
  2382  
  2383  ### s3_storage_backend
  2384  
  2385  The s3_backend block configures the connection to Amazon S3 object storage backend.
  2386  
  2387  ```yaml
  2388  # The S3 bucket endpoint. It could be an AWS S3 endpoint listed at
  2389  # https://docs.aws.amazon.com/general/latest/gr/s3.html or the address of an
  2390  # S3-compatible service in hostname:port format.
  2391  # CLI flag: -storage.s3.endpoint
  2392  [endpoint: <string> | default = ""]
  2393  
  2394  # S3 region. If unset, the client will issue a S3 GetBucketLocation API call to
  2395  # autodetect it.
  2396  # CLI flag: -storage.s3.region
  2397  [region: <string> | default = ""]
  2398  
  2399  # S3 bucket name
  2400  # CLI flag: -storage.s3.bucket-name
  2401  [bucket_name: <string> | default = ""]
  2402  
  2403  # S3 secret access key
  2404  # CLI flag: -storage.s3.secret-access-key
  2405  [secret_access_key: <string> | default = ""]
  2406  
  2407  # S3 access key ID
  2408  # CLI flag: -storage.s3.access-key-id
  2409  [access_key_id: <string> | default = ""]
  2410  
  2411  # If enabled, use http:// for the S3 endpoint instead of https://. This could be
  2412  # useful in local dev/test environments while using an S3-compatible backend
  2413  # storage, like Minio.
  2414  # CLI flag: -storage.s3.insecure
  2415  [insecure: <boolean> | default = false]
  2416  
  2417  # The signature version to use for authenticating against S3. Supported values
  2418  # are: v4, v2.
  2419  # CLI flag: -storage.s3.signature-version
  2420  [signature_version: <string> | default = "v4"]
  2421  
  2422  # Deprecated, use s3.bucket-lookup-type instead. Set this to `true` to force the
  2423  # bucket lookup to be using path-style.
  2424  # CLI flag: -storage.s3.force-path-style
  2425  [force_path_style: <boolean> | default = false]
  2426  
  2427  # S3 bucket lookup style, use one of: [path-style virtual-hosted-style auto]
  2428  # CLI flag: -storage.s3.bucket-lookup-type
  2429  [bucket_lookup_type: <string> | default = "auto"]
  2430  
  2431  sse:
  2432    # Enable AWS Server Side Encryption. Supported values: SSE-KMS, SSE-S3.
  2433    # CLI flag: -storage.s3.sse.type
  2434    [type: <string> | default = ""]
  2435  
  2436    # KMS Key ID used to encrypt objects in S3
  2437    # CLI flag: -storage.s3.sse.kms-key-id
  2438    [kms_key_id: <string> | default = ""]
  2439  
  2440    # KMS Encryption Context used for object encryption. It expects JSON formatted
  2441    # string.
  2442    # CLI flag: -storage.s3.sse.kms-encryption-context
  2443    [kms_encryption_context: <string> | default = ""]
  2444  
  2445  http:
  2446    # The time an idle connection will remain idle before closing.
  2447    # CLI flag: -storage.s3.http.idle-conn-timeout
  2448    [idle_conn_timeout: <duration> | default = 1m30s]
  2449  
  2450    # The amount of time the client will wait for a servers response headers.
  2451    # CLI flag: -storage.s3.http.response-header-timeout
  2452    [response_header_timeout: <duration> | default = 2m]
  2453  
  2454    # If the client connects to S3 via HTTPS and this option is enabled, the
  2455    # client will accept any certificate and hostname.
  2456    # CLI flag: -storage.s3.http.insecure-skip-verify
  2457    [insecure_skip_verify: <boolean> | default = false]
  2458  
  2459    # Maximum time to wait for a TLS handshake. 0 means no limit.
  2460    # CLI flag: -storage.s3.tls-handshake-timeout
  2461    [tls_handshake_timeout: <duration> | default = 10s]
  2462  
  2463    # The time to wait for a server's first response headers after fully writing
  2464    # the request headers if the request has an Expect header. 0 to send the
  2465    # request body immediately.
  2466    # CLI flag: -storage.s3.expect-continue-timeout
  2467    [expect_continue_timeout: <duration> | default = 1s]
  2468  
  2469    # Maximum number of idle (keep-alive) connections across all hosts. 0 means no
  2470    # limit.
  2471    # CLI flag: -storage.s3.max-idle-connections
  2472    [max_idle_connections: <int> | default = 0]
  2473  
  2474    # Maximum number of idle (keep-alive) connections to keep per-host. If 0, a
  2475    # built-in default value is used.
  2476    # CLI flag: -storage.s3.max-idle-connections-per-host
  2477    [max_idle_connections_per_host: <int> | default = 100]
  2478  
  2479    # Maximum number of connections per host. 0 means no limit.
  2480    # CLI flag: -storage.s3.max-connections-per-host
  2481    [max_connections_per_host: <int> | default = 0]
  2482  ```
  2483  
  2484  ### gcs_storage_backend
  2485  
  2486  The gcs_backend block configures the connection to Google Cloud Storage object storage backend.
  2487  
  2488  ```yaml
  2489  # GCS bucket name
  2490  # CLI flag: -storage.gcs.bucket-name
  2491  [bucket_name: <string> | default = ""]
  2492  
  2493  # JSON either from a Google Developers Console client_credentials.json file, or
  2494  # a Google Developers service account key. Needs to be valid JSON, not a
  2495  # filesystem path. If empty, fallback to Google default logic:
  2496  # 1. A JSON file whose path is specified by the GOOGLE_APPLICATION_CREDENTIALS
  2497  # environment variable. For workload identity federation, refer to
  2498  # https://cloud.google.com/iam/docs/how-to#using-workload-identity-federation on
  2499  # how to generate the JSON configuration file for on-prem/non-Google cloud
  2500  # platforms.
  2501  # 2. A JSON file in a location known to the gcloud command-line tool:
  2502  # $HOME/.config/gcloud/application_default_credentials.json.
  2503  # 3. On Google Compute Engine it fetches credentials from the metadata server.
  2504  # CLI flag: -storage.gcs.service-account
  2505  [service_account: <string> | default = ""]
  2506  
  2507  http:
  2508    # The time an idle connection will remain idle before closing.
  2509    # CLI flag: -storage.gcs.http.idle-conn-timeout
  2510    [idle_conn_timeout: <duration> | default = 1m30s]
  2511  
  2512    # The amount of time the client will wait for a servers response headers.
  2513    # CLI flag: -storage.gcs.http.response-header-timeout
  2514    [response_header_timeout: <duration> | default = 2m]
  2515  
  2516    # If the client connects to GCS via HTTPS and this option is enabled, the
  2517    # client will accept any certificate and hostname.
  2518    # CLI flag: -storage.gcs.http.insecure-skip-verify
  2519    [insecure_skip_verify: <boolean> | default = false]
  2520  
  2521    # Maximum time to wait for a TLS handshake. 0 means no limit.
  2522    # CLI flag: -storage.gcs.tls-handshake-timeout
  2523    [tls_handshake_timeout: <duration> | default = 10s]
  2524  
  2525    # The time to wait for a server's first response headers after fully writing
  2526    # the request headers if the request has an Expect header. 0 to send the
  2527    # request body immediately.
  2528    # CLI flag: -storage.gcs.expect-continue-timeout
  2529    [expect_continue_timeout: <duration> | default = 1s]
  2530  
  2531    # Maximum number of idle (keep-alive) connections across all hosts. 0 means no
  2532    # limit.
  2533    # CLI flag: -storage.gcs.max-idle-connections
  2534    [max_idle_conns: <int> | default = 0]
  2535  
  2536    # Maximum number of idle (keep-alive) connections to keep per-host. If 0, a
  2537    # built-in default value is used.
  2538    # CLI flag: -storage.gcs.max-idle-connections-per-host
  2539    [max_idle_conns_per_host: <int> | default = 100]
  2540  
  2541    # Maximum number of connections per host. 0 means no limit.
  2542    # CLI flag: -storage.gcs.max-connections-per-host
  2543    [max_conns_per_host: <int> | default = 0]
  2544  ```
  2545  
  2546  ### azure_storage_backend
  2547  
  2548  The `azure_storage_backend` block configures the connection to Azure object storage backend.
  2549  
  2550  ```yaml
  2551  # Azure Active Directory tenant ID. If set alongside `client-id` and
  2552  # `client-secret`, these values will be used for authentication via a client
  2553  # secret credential.
  2554  # CLI flag: -storage.azure.az-tenant-id
  2555  [az_tenant_id: <string> | default = ""]
  2556  
  2557  # Azure Active Directory client ID. If set alongside `az-tenant-id` and
  2558  # `client-secret`, these values will be used for authentication via a client
  2559  # secret credential.
  2560  # CLI flag: -storage.azure.client-id
  2561  [client_id: <string> | default = ""]
  2562  
  2563  # Azure Active Directory client secret. If set alongside `az-tenant-id` and
  2564  # `client-id`, these values will be used for authentication via a client secret
  2565  # credential.
  2566  # CLI flag: -storage.azure.client-secret
  2567  [client_secret: <string> | default = ""]
  2568  
  2569  # Azure storage account name
  2570  # CLI flag: -storage.azure.account-name
  2571  [account_name: <string> | default = ""]
  2572  
  2573  # Azure storage account key. If unset, Azure managed identities will be used for
  2574  # authentication instead.
  2575  # CLI flag: -storage.azure.account-key
  2576  [account_key: <string> | default = ""]
  2577  
  2578  # If `connection-string` is set, the value of `endpoint-suffix` will not be
  2579  # used. Use this method over `account-key` if you need to authenticate via a SAS
  2580  # token. Or if you use the Azurite emulator.
  2581  # CLI flag: -storage.azure.connection-string
  2582  [connection_string: <string> | default = ""]
  2583  
  2584  # Azure storage container name
  2585  # CLI flag: -storage.azure.container-name
  2586  [container_name: <string> | default = ""]
  2587  
  2588  # Azure storage endpoint suffix without schema. The account name will be
  2589  # prefixed to this value to create the FQDN. If set to empty string, default
  2590  # endpoint suffix is used.
  2591  # CLI flag: -storage.azure.endpoint-suffix
  2592  [endpoint_suffix: <string> | default = ""]
  2593  
  2594  # Number of retries for recoverable errors
  2595  # CLI flag: -storage.azure.max-retries
  2596  [max_retries: <int> | default = 3]
  2597  
  2598  # User assigned managed identity. If empty, then System assigned identity is
  2599  # used.
  2600  # CLI flag: -storage.azure.user-assigned-id
  2601  [user_assigned_id: <string> | default = ""]
  2602  ```
  2603  
  2604  ### swift_storage_backend
  2605  
  2606  The `swift_storage_backend` block configures the connection to OpenStack Object Storage (Swift) object storage backend.
  2607  
  2608  ```yaml
  2609  # OpenStack Swift authentication API version. 0 to autodetect.
  2610  # CLI flag: -storage.swift.auth-version
  2611  [auth_version: <int> | default = 0]
  2612  
  2613  # OpenStack Swift authentication URL
  2614  # CLI flag: -storage.swift.auth-url
  2615  [auth_url: <string> | default = ""]
  2616  
  2617  # OpenStack Swift username.
  2618  # CLI flag: -storage.swift.username
  2619  [username: <string> | default = ""]
  2620  
  2621  # OpenStack Swift user's domain name.
  2622  # CLI flag: -storage.swift.user-domain-name
  2623  [user_domain_name: <string> | default = ""]
  2624  
  2625  # OpenStack Swift user's domain ID.
  2626  # CLI flag: -storage.swift.user-domain-id
  2627  [user_domain_id: <string> | default = ""]
  2628  
  2629  # OpenStack Swift user ID.
  2630  # CLI flag: -storage.swift.user-id
  2631  [user_id: <string> | default = ""]
  2632  
  2633  # OpenStack Swift API key.
  2634  # CLI flag: -storage.swift.password
  2635  [password: <string> | default = ""]
  2636  
  2637  # OpenStack Swift user's domain ID.
  2638  # CLI flag: -storage.swift.domain-id
  2639  [domain_id: <string> | default = ""]
  2640  
  2641  # OpenStack Swift user's domain name.
  2642  # CLI flag: -storage.swift.domain-name
  2643  [domain_name: <string> | default = ""]
  2644  
  2645  # OpenStack Swift project ID (v2,v3 auth only).
  2646  # CLI flag: -storage.swift.project-id
  2647  [project_id: <string> | default = ""]
  2648  
  2649  # OpenStack Swift project name (v2,v3 auth only).
  2650  # CLI flag: -storage.swift.project-name
  2651  [project_name: <string> | default = ""]
  2652  
  2653  # ID of the OpenStack Swift project's domain (v3 auth only), only needed if it
  2654  # differs the from user domain.
  2655  # CLI flag: -storage.swift.project-domain-id
  2656  [project_domain_id: <string> | default = ""]
  2657  
  2658  # Name of the OpenStack Swift project's domain (v3 auth only), only needed if it
  2659  # differs from the user domain.
  2660  # CLI flag: -storage.swift.project-domain-name
  2661  [project_domain_name: <string> | default = ""]
  2662  
  2663  # OpenStack Swift Region to use (v2,v3 auth only).
  2664  # CLI flag: -storage.swift.region-name
  2665  [region_name: <string> | default = ""]
  2666  
  2667  # Name of the OpenStack Swift container to put chunks in.
  2668  # CLI flag: -storage.swift.container-name
  2669  [container_name: <string> | default = ""]
  2670  
  2671  # Max retries on requests error.
  2672  # CLI flag: -storage.swift.max-retries
  2673  [max_retries: <int> | default = 3]
  2674  
  2675  # Time after which a connection attempt is aborted.
  2676  # CLI flag: -storage.swift.connect-timeout
  2677  [connect_timeout: <duration> | default = 10s]
  2678  
  2679  # Time after which an idle request is aborted. The timeout watchdog is reset
  2680  # each time some data is received, so the timeout triggers after X time no data
  2681  # is received on a request.
  2682  # CLI flag: -storage.swift.request-timeout
  2683  [request_timeout: <duration> | default = 5s]
  2684  ```
  2685  
  2686  ### filesystem_storage_backend
  2687  
  2688  The `filesystem_storage_backend` block configures the usage of local file system as object storage backend.
  2689  
  2690  ```yaml
  2691  # Local filesystem storage directory.
  2692  # CLI flag: -storage.filesystem.dir
  2693  [dir: <string> | default = "./data-shared"]
  2694  ```
  2695  
  2696  ### analytics
  2697  
  2698  The `analytics` block configures usage statistics collection. For more details about usage statistics, refer to [Anonymous usage statistics reporting](../anonymous-usage-statistics-reporting)
  2699  
  2700  ```yaml
  2701  # Enable anonymous usage statistics collection. For more details about usage
  2702  # statistics, refer to
  2703  # https://grafana.com/docs/pyroscope/latest/configure-server/anonymous-usage-statistics-reporting/
  2704  # CLI flag: -usage-stats.enabled
  2705  [reporting_enabled: <boolean> | default = true]
  2706  ```
  2707