有没有办法为具有相似名称的多个 ENUM 指标设置警报

Is there a way to set alert for multiple ENUM metrics with similar name

我正在尝试处理多个(大约 500 个)名称相似的指标,例如:

INSTANCE03{INSTANCE03="Dead"} == 1
INSTANCE05{INSTANCE05="Dead"} == 1
INSTANCE07{INSTANCE07="Dead"} == 1

它们中的每一个都被指定为一个枚举,它显示如下状态:

INSTANCE03{INSTANCE03="Dead"} == 1
INSTANCE03{INSTANCE03="Alive"} == 0

有没有办法以某种简短的方式发出警报,将所有这些指标的状态从“活着”切换到“死亡”? G。将正则表达式用于 __name__ 值?

如果我每行指定一个指标实例,警报就会起作用,但对于如此多的指标来说,这不是一种干净的方法。

低于我的alert_rules.yml

groups:
 - name: example
   rules:
   - alert: InstanceDown
     expr: INSTANCE03{INSTANCE03="Dead",instance="127.0.0.1:8888",job="prometheus"} == 1
     for: 15s
     annotations:
       summary: "Instance is down."
       description: "Instance down for 15 seconds. Please check mentioned instance."

我很确定 Prometheus 没有办法处理任意标签(即你的 INSTANCE03="Dead" 标签),除了定义一个 label_join() or <relabel_config> 你枚举所有可能的标签名称并替换它们带有固定标签(例如state)。

在它们进入 Prometheus 之前,返回导出这些指标并在那里修复它会容易得多。

您可以在 metric_relabel_configs 中使用 labelmap 操作来修复这些标签和指标名称。

正如 Alin 所说,修复指标的来源是最好的。每个实例具有 0/1 的量规将是最简单的。