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 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