在 Alertmanager Promql 查询中使用变量

Use variable inside Alertmanager Promql query

我有一些这样的指标:

restarts{service="foo-1"}
restarts{service="foo-2"}
restarts{service="bar-1"}
restarts{service="bar-2"}
restarts{service="bar-3"}

我正在尝试使用 Alertmanager 在所有服务实例的重启次数超过阈值时触发警报。

我想到的是使用如下查询分别为每个 foobar 创建一个规则:

sum(restarts{service=~"bar-.*"}) > 10

但是我的服务太多了,无法为每个服务编写规则。

有没有办法在单个查询中找到每个服务的重启?

您可以在查询中使用 label_replace,例如:

label_replace(restarts, "servicegroup", "", "service", "(.+)-.+")

然后您可以将结果与 sum by (servicegroup) 分组并得到您想要的结果。