Query Frontend
少于1分钟
Query Frontend 组件
基于 thanos/v0.28,面向用户层面用于提供查询数据,它是无状态可以进行水平扩展,用于对范围查询与缓存。
当前仅接口/api/v1/query_range
会经过该组件处理,其他接口请求会直接传递到下游查询组件。
启动参数
名称 | 默认值 | 说明 |
---|---|---|
cache-compression-type | "" | 对结果集的压缩,支持 ‘snappy’ |
http-address | 0.0.0.0:10902 | 监听 HTTP 服务地址 |
http-grace-period | 2m | HTTP服务接收到停止需等待时间,通过配置 context.WithTimeout 的实现 |
http.config | "" | TODO |
labels.default-time-range | 24h | TODO; |
labels.max-query-parallelism | 14 | TODO; |
labels.max-retries-per-request | 5 | TODO; |
labels.partial-response | "" | 如果未指定partial_response参数,则为标签请求启用部分响应 |
labels.response-cache-config | "" | 功能同 labels.response-cache-config-file |
labels.response-cache-config-file | "" | TODO; |
labels.response-cache-max-freshness | 1m | 最近允许标签请求的可缓存结果,以防止缓存可能仍在变化中的最近结果 |
labels.split-interval | 24h | 按间隔拆分标签请求并并行执行,标签时应大于0。配置了响应缓存配置 |
log.format | logfmt | 日志格式,可取值:logfmt、json |
log.level | info | 日志级别 |
log.request.decision | "" | 已被废弃 |
query-frontend.compress-responses | "" | 压缩HTTP响应 |
query-frontend.downstream-tripper-config | "" | 功能同 query-frontend.downstream-tripper-config-file |
query-frontend.downstream-tripper-config-file | TODO;包含downstream tripper的配置,如果是 ‘127.0.0.1’ 则建议 max_idle_conns_per_host 至少配置为100 | |
query-frontend.downstream-url | “http://localhost:9090” | 转发至下游兼容 prometheus query api 地址 |
query-frontend.forward-header | "" | 转发至下游的http请求头 |
query-frontend.log-queries-longer-than | 0 | 记录超过配置时间的慢查询,设置0为关闭,设置小于0则开启所有 |
query-frontend.org-id-header | "" | 用于标识慢速查询源的请求头名称,将会植入至慢日志’org_id’字段中,如为配置默认植入的值为’anonymous' |
query-range.align-range-with-step | "" | TODO; |
query-range.max-query-length | 0 | 限制查询的时间最大区间范围,设置0为禁用 |
query-range.max-query-parallelism | 14 | TODO; 前端将并行计划最大查询范围请求数 |
query-range.max-retries-per-request | 5 | TODO; 单个查询范围请求的最大重试次数;除此之外,将返回下游错误 |
query-range.partial-response | "" | 如果未指定partial_response参数,则为查询范围请求启用部分响应 |
query-range.request-downsampled | "" | 在对范围请求的响应为空或不完整的情况下,对下采样数据进行额外查询 |
query-range.response-cache-config | "" | 功能同 query-range.response-cache-config-file |
query-range.response-cache-config-file | "" | 响应缓存的配置文件 |
query-range.response-cache-max-freshness | 1m | 最近允许查询范围请求的可缓存结果,以防止缓存可能仍在变化中的最近结果 |
query-range.split-interval | 24h | 按间隔拆分查询范围请求并并行执行,如果query-range.response-cache-config 配置了,则必须开启 |
request.logging-config | "" | 功能同 request.logging-config-file |
request.logging-config-file | "" | TODO; |
tracing.config | "" | 功能同 tracing.config-file |
tracing.config-file | "" | 链路跟踪配置文件 |
web.disable-cors | "" | 是否禁用跨域,默认允许所有 |
功能特性
查询分割
针对一个长查询切割为多个子查询,由启动参数--query-range.split-interval
设定,这有以下几个好处:
- 保护’Query’查询组件,如果是比较大的范围查询有可能导致 OOM 发生;
- 更好的并行处理;
- 更好的负载均衡;
失败重试
由启动参数 --query-range.max-retries-per-request
设定,当HTTP请求查询失败时,会进行最大重试次数;
查询缓存
可以对前端查询的结果进行缓存,以便后续复用它们,如果缓存的结果不完整,将计算所需的子查询,并在下游查询器上并行执行它们。查询前端可以选择将查询与其步骤参数对齐,以提高查询结果的可缓存性。目前支持内存缓存(fifo cache)、memcached和redis。
以下几种情况将不会缓存:
- 不对副本去重,如查询开启参数
dedup=false
; - 开启查询指定存储过滤,Enable Store Filtering;
- 下游查询组件设置了"Cache-Control=no-store"头;
开启慢日志
由启动参数 --query-frontend.log-queries-longer-than
设置最大允许时间,超过则记录。
最后修改 2023.02.13: feat: 可对外发布 ingress-nginx thanos (64e761e)