0005: Loki mixin 配置改进
作者: Alexandre Chouinard (Daazku@gmail.com)
日期 03/2025
赞助商: N/A
类型: 功能
状态: 草稿
相关 issue/PR
邮件列表 [mailing list] 主题: N/A
背景
在不使用 Prometheus Operator 特定配置的现有 Prometheus stack 上设置 Loki 的仪表盘和告警并不容易。
指标选择器是硬编码的,这导致在许多情况下,仪表盘无法使用,除非进行手动修改。它假定指标上存在 `job`、`cluster`、`namespace`、`container` 和/或它们的组合标签,并且具有非常特定的值。
问题陈述
这使得仪表盘和告警对于不符合当前关于哪些标签应存在于指标中的假设的设置而言无法使用。
一个很好的例子是无处不在的“job”标签:job=~\"$namespace/bloom-planner\"
通常,“job”标签指的是用于抓取目标的任务名称,如 Prometheus 文档所述,在 k8s 中,如果您不使用带有 ServiceMonitor
的 prometheus-operator
,通常会有如下所示的抓取配置:
- job_name: "kubernetes-pods" # Can actually be anything you want.
kubernetes_sd_configs:
- role: pod
relabel_configs:
# Cluster label is "required" by kubernetes-mixin dashboards
- target_label: cluster
replacement: '${cluster_label}'
...
这将抓取所有 Pod 并产生类似如下的结果:
up{job="kubernetes-pods", ...}
这立即导致仪表盘无法使用,因为它与仪表盘和告警中硬编码的内容不兼容。
目标
理想情况下,选择器应默认为 Grafana 内部所需的值,但仍应可配置,以便用户可以根据其设置进行调整。
一个很好的例子是 kubernetes-monitoring/kubernetes-mixin 的做法:每个可能的选择器都是可配置的,从而允许各种设置正常工作。
支持此功能的结构已经存在。只是尚未得到充分利用。
非目标(可选)
希望能创建一些自动化检查,验证仪表盘和告警中使用的所有指标是否使用了配置中的正确选择器。在仓库中有很多关于新仪表盘或仪表盘更新未使用正确标签的问题。
提案
提案 0:不做任何事情
这将迫使社区要么手动编辑仪表盘/告警,要么遵循 Loki 特定的指标收集方法。
提案 1:允许配置指标标签选择器
这将需要大量的重构工作。
它将使社区更容易采用“官方”仪表盘和告警。
一次定义, everywhere 重用。(目前,更新需要大量的搜索和替换。)
其他注意事项
如果此提案被接受,我愿意做必要的工作来推进它。