关于 Grafana Mimir 运行时配置
运行时配置文件包含配置参数,并在 Mimir 运行时定期重新加载。它允许您更改 Grafana Mimir 配置的子集,而无需重新启动 Grafana Mimir 组件或实例。
运行时配置适用于启动时设置的配置子集。Grafana Mimir 运维人员可以观察配置并使用运行时配置对 Grafana Mimir 进行即时调整。
运行时配置的值优先于命令行选项。
如果指定了多个运行时配置文件,则这些文件将按从左到右的顺序合并。
对于在解析 YAML 之前需要解压缩的配置文件,请添加 .gz
扩展名。
启用运行时配置
要启用运行时配置,请在启动时使用 -runtime-config.file=<filepath>,<filepath>
CLI 标志指定一个逗号分隔的文件路径列表,或者在 YAML 配置文件的 runtime_config
块中指定。
默认情况下,Grafana Mimir 每 10 秒重新加载这些文件的内容,并按从左到右的顺序合并这些文件。您可以使用 -runtime-config.reload-period=<duration>
CLI 标志或在 YAML 配置文件中指定 period
值来配置此间隔。
在 Kubernetes 上运行 Grafana Mimir 时,将运行时配置文件存储在 ConfigMap 中,并将 ConfigMap 挂载到每个容器中。
查看运行时配置
使用 Grafana Mimir 的 /runtime_config
端点查看运行时配置的当前值,包括 overrides。要仅查看非默认配置值,请使用 /runtime_config?mode=diff
指定端点。
按租户配置运行时限制
运行时配置文件主要用于根据每个租户的摄取和查询需求设置和调整相应的限制。
在 YAML 配置文件的 limits 部分中定义的值定义了应用于租户的默认限制集。例如,如果您在 YAML 配置文件中将 ingestion_rate
设置为 25,000
,则集群中任何每秒发送样本数 (SPS) 超过 25,000 的租户将被限速。
您可以使用运行时配置文件来覆盖此行为。例如,如果您有一个租户 (tenant1
) 需要发送的数据点是当前限制的两倍,而另一个租户 (tenant2
) 需要发送的数据点是当前限制的三倍,您可以修改运行时配置文件的内容如下:
overrides:
tenant1:
ingestion_rate: 50000
tenant2:
ingestion_rate: 75000
结果是,Grafana Mimir 允许 tenant1
发送 50,000 SPS,tenant2
发送 75,000 SPS,同时对所有其他租户维持 25,000 SPS 的限速。
- 对于每个租户,您可以在运行时配置文件中覆盖
limits
块中列出的所有限制。 - 对于每个租户,您可以覆盖不同的限制。
- 对于未在运行时配置文件中覆盖的任何租户或限制,您可以继承
limits
块中指定的限制值。
Ingester 实例限制
运行时配置文件可用于动态调整 Grafana Mimir ingester 实例限制。租户限制应用于每个租户,而 ingester 实例限制应用于每个 ingester 进程。无论租户限制如何,ingester 限制都能确保单个 ingester 不会过载。这些限制可以在全局配置文件的 ingester.instance_limits
块中、通过 CLI 标志或在运行时配置文件的 ingester_limits
字段下设置。
运行时配置允许您覆盖初始值,这对于需要根据摄取或查询负载变化动态更改其值的高级运维人员非常有用。
ingester
块中 instance_limits
部分下的所有内容都可以通过运行时配置覆盖。以下示例显示了更改 ingester 限制的部分运行时配置:
ingester_limits:
max_ingestion_rate: 20000
max_series: 1500000
max_tenants: 1000
max_inflight_push_requests: 30000
Distributor 实例限制
运行时配置文件可用于动态调整 Grafana Mimir distributor 实例限制。租户限制应用于每个租户,而 distributor 实例限制应用于每个 distributor 进程。无论租户限制如何,distributor 限制都能确保单个 distributor 不会过载。这些限制可以在全局配置文件的 distributor.instance_limits
块中、通过 CLI 标志或在运行时配置文件的 distributor_limits
字段下设置。
运行时配置允许您覆盖初始值,这对于需要根据摄取负载变化动态更改其值的高级运维人员非常有用。
distributor
块中 instance_limits
部分下的所有内容都可以通过运行时配置覆盖。以下示例显示了更改 distributor 限制的部分运行时配置:
distributor_limits:
max_ingestion_rate: 75000
max_inflight_push_requests: 1500
max_inflight_push_requests_bytes: 314572800
Ingester 流式传输的运行时配置
一个高级运行时配置选项控制 ingesters 在查询时是传输编码块(默认)还是传输解码序列给 queriers。
参数 ingester_stream_chunks_when_using_blocks
可能只能在运行时配置中使用。值为 true
时传输编码块,值为 false
时传输解码序列。
注意
默认情况下,
-ingester.stream-chunks-when-using-blocks
为true
,启用传输编码块。在运行时配置中,参数
ingester_stream_chunks_when_using_blocks
会覆盖 CLI 标志-ingester.stream-chunks-when-using-blocks
。强烈建议您保持传输编码块的功能启用,除非在极少数情况下观察到规则评估变慢。