1. store
# 从对象存储中拉取块原数据(metadata)的goroutines数量(并发协程)
- --block-meta-fetch-concurrency=32
# 从对象存储中拉取块数据index-cache.json的goroutines数量(并发协程)
- --block-sync-concurrency=20
# 严格保留以重用内存中的块的并发可分配字节的最大大小(可分配的最大可重用内存大小)
- --chunk-pool-size=2GB
# 所有块在被读取之前的最小年龄,设置30m只会读取30分钟之前的数据,一般与prometheus的retention配合使用,小于等于prometheus retention时间,最好重叠2小时
# prometheus查询实时数据,store查询历史数据。prometheus retention时间最好大于等于3个block上传周期,也就是6小时,防止block上传失败导致数据永远丢失
# 当前prometheus配置retention 12h, consistency-delay 10h
- --consistency-delay=10h
# 接收到grpc服务中断后等待的时间
- --grpc-grace-period=2m
# tls证书相关
# - --grpc-server-tls-cert=""
# tls证书相关
# - --grpc-server-tls-client-ca=""
# tls证书相关
# - --grpc-server-tls-key=""
# 接收到http服务中断后等待的时间
- --http-grace-period=2m
# tls证书相关
# - --http.config=""
# 提取块时将过滤掉标记为删除的块的持续时间。 ignore-deletion-marks-delay 的想法是忽略标记为延迟删除的块。这确保store仍然可以提供要删除但还没有替换的块。
# 如果为compactor 或bucket verify 组件提供delete-delay 持续时间,它会上传deletion-mark.json 文件来标记应该删除块的持续时间,而不是立即删除块。
# 如果compactor 或bucket verify 组件的delete-delay 不为零,则ignore-deletion-marks-delay 应设置为(delete-delay)/2,以便标记为删除的块在从bucket 中删除之前获取块时被过滤掉.默认为 24 小时,是压缩器上 --delete-delay 默认值的一半。
- --ignore-deletion-marks-delay=24h
# 内存索引缓存中保存的项目的最大大小
- --index-cache-size=250MB
# 指定可查时间范围最大值(end)。比如指定最多可查到当前时间的数据,设置为`9999-12-31T23:59:59Z`;指定最多查到2小时前的数据,设置为`-2h`
# 设置为最新时间或者与consistency-delay保持一直即可
- --max-time=9999-12-31T23:59:59Z
# 指定可查时间范围最小值(start)。比如指定最多可查到所有时间的数据,设置为`0000-01-01T00:00:00Z`;指定最多查到4周前的数据,设置为`-4w`
- --min-time=0000-01-01T00:00:00Z
# 缓存
- --index-cache.config-file={{ thanos_store_gateway_configmap_config_dir }}/thanos_store_gateway_index_cache_config.yaml
# # 最大并发时间序列调用数量
# - --store.grpc.series-max-concurrency=20
# # 通过单个时间序列调用返回的最大样本量。
# # 如果超出此限制,则时间序列调用将失败。
# # 0 表示没有限制。注意:考虑到每个块包含 120 个样本(这是每个块可以包含的最大样本数),为了效率,限制在内部实现为“块限制”,因此实际样本数可能会更低,即使可能达到最大值.
# - --store.grpc.series-sample-limit=0
# # 通过单个时间序列调用返回的最大触摸时间序列数量。如果超出此限制,则时间序列调用将失败。 0 表示没有限制。
# - --store.grpc.touched-series-limit=0
# # 在本地和远程视图之间同步块的重复间隔。
# - --sync-block-duration=3m
2. compactor
# 从对象存储拉取metadata使用的 goroutine 数量
- --block-meta-fetch-concurrency=32
# 从对象存储同步metadata使用的 goroutine 数量
- --block-sync-concurrency=20
# 从web UI的/global接口查看本地和远端block同步进度的刷新时间间隔
- --block-viewer.global.sync-block-interval=1m
# 在存储桶的web UI用作时间线标题的 Prometheus 标签
# - --bucket-web-label=BUCKET-WEB-LABEL
# 当`--wait`开启之后,指定多长时间清理后台中部分上传的block和标记为删除的block。设置为`0s`禁用它,清除操作只会在单次compact操作结束的时候进行
- --compact.cleanup-interval=5m
# 压缩组时使用的 goroutine 数量,建议配置与cpu核数相同
- --compact.concurrency=2
# 为了确保不会拉取到对象存储中正在上传的block,配置一致性延迟,只有当block上传到对象存储的时间大于30分钟,才是可见/可加载的
- --consistency-delay=30m
# - --deduplication.func=""
# - --deduplication.replica-label=DEDUPLICATION.REPLICA-LABEL
# 删除等待时间,标记为删除后多久之后删除block。配置为`0`之后过期后马上删除,但是可能会影响查询,因为store gateway组件加载了此块,建议保持默认48h
- --delete-delay=48h
# 降采样使用的 goroutine 数量
- --downsample.concurrency=1
# 禁用降采样,不建议配置
# - --downsampling.disable
# - --hash-func=""
# http请求中断等待时间
- --http-grace-period=2m
# - --http.config=""
# - --selector.relabel-config=""
# - --tracing.config=""
# 所有压缩执行之后不退出,继续等待下一个压缩任务
- --wait
# 连续压缩运行和存储桶刷新之间的等待间隔,与`--wait`一起使用
- --wait-interval=5m
# 是否禁用thanos设置的CORS头。默认情况下,thanos将 CORS 标头设置为所有人都允许
# - --web.disable-cors
# - --web.external-prefix=""
# - --web.prefix-header=""
# - --web.route-prefix=""
3. query
4. frontend
# 结果缓存压缩格式,支持"snappy"格式,空值则禁用压缩
- --cache-compression-type=snappy
# http请求中断等待时间
- --http-grace-period=2m
# 未指定范围参数时,通过标签和时间序列 API 检索标签的默认元数据时间范围持续时间。
- --labels.default-time-range=24h
# frontend将并行调度最大数量的标签查询。
- --labels.max-query-parallelism=14
# 单个标签/时间序列 API 请求的最大重试次数,超过次数会返回下游错误
- --labels.max-retries-per-request=5
# 如果未指定 partial_response 参数,则为标签查询请求启用部分响应;`--no-labels.partial-response`禁用
- --labels.partial-response
# 包含响应缓存配置的yaml内容
# - --labels.response-cache-config=""
# - --labels.response-cache-config-file={{ thanos_frontend_configmap_config_dir }}/thanos_frontend_query_range_response_cache_config.yaml
# 标签查询请求的最近允许的可缓存结果,为了防止最近的缓存结果不断变化
- --labels.response-cache-max-freshness=1m
# 将请求按照时间间隔分隔,并且各部分请求并行执行,当配置了`labels.response-cache-config`参数之后,此配置应该大于0
- --labels.split-interval=24h
# 压缩http请求
- --query-frontend.compress-responses
# yaml格式的下游tripper设置,如果下游是本地地址,建议设置`max_idle_conns_per_host`参数值大于等于100。
# 如果它指向单个主机,很可能是负载均衡器,那么强烈建议通过这些参数将 max_idle_conns_per_host 增加到至少 100,
# 否则查询前端将无法利用 HTTP 保持活动连接,并且延迟会高出 10 - 20%。默认情况下,Go HTTP 客户端将只为每个主机保持两个空闲连接。
# - --query-frontend.downstream-tripper-config=""
# 打印查询时间大于指定值的查询时间。设置为0则禁用,小于0则打印所有查询时间。还可以指定时间,如: 100ms
- --query-frontend.log-queries-longer-than=1ms
# 用于识别慢查询源头的请求头名称,值会被加到慢日志的orgid字段中。如果多个header匹配这个请求,那么第一个匹配的参数优先,如果没有配置,则使用`anonymous`
# - --query-frontend.org-id-header=
# 改变输入查询,使其开始和结束与步长保持一致,以获得更好的缓存能力。注意:Grafana仪表盘在默认情况下可以做到这一点。
- --query-range.align-range-with-step
# 限制查询的时间范围,设置为0禁用,1h只能查询1小时范围数据
- --query-range.max-query-length=0
# frontend将并行调度最大数量的范围查询。
- --query-range.max-query-parallelism=14
# 单个范围查询请求的最大充实次数,超过次数会返回下游错误
- --query-range.max-retries-per-request=5
# 如果未指定 partial_response 参数,则为范围查询请求启用部分响应;`--no-query-range.partial-response`禁用
- --query-range.partial-response
# 如果对范围请求的响应为空或不完整,则对下采样数据进行额外的查询。
- --query-range.request-downsampled
# 包含响应缓存配置的yaml内容
# - --query-range.response-cache-config={{ thanos_frontend_query_range_response_cache_config }}
- --query-range.response-cache-config-file={{ thanos_frontend_configmap_config_dir }}/thanos_frontend_query_range_response_cache_config.yaml
# 范围查询请求的最近允许的可缓存结果,为了防止最近的缓存结果不断变化
- --query-range.response-cache-max-freshness=1m
# 将请求按照时间间隔分隔,并且各部分请求并行执行,当配置了`query-range.response-cache-config-file`参数之后,此配置应该大于0
- --query-range.split-interval=24h
# 日志配置
# - --request.logging-config={{ thanos_frontend_request_logging_config }}
# - --request.logging-config-file={{ thanos_frontend_configmap_config_dir }}/thanos_frontend_request_logging_config.yaml
# tracing配置
# - --tracing.config=""
# 是否禁用thanos设置的CORS头。默认情况下,thanos将 CORS 标头设置为所有人都允许
# - --web.disable-cors