我试图在Prometheus Alerting Manager中配置一个警报,该警报在2个不同主机的状态为Down时显示。
为了更好地说明,我有以下几对主机(host = {instance
):
host1.1
host1.2
host2.1
host2.2
host3.1
host3.2
host4.1
host4.2
...
并且我需要一个警报,当SAME对的两个主机都关闭时出现:
expr = ( icmpping{instance=~"hostX1"}==0 and icmpping{instance=~"hostX2"}==0 )
(我知道语法是不正确的,我只是想强调一下,X
在两个icmpping
条件下都指向相同的数字)
有任何提示吗?
答案 0 :(得分:0)
最简单的方法也许是在摄取时使用relabel_config
来生成一个标签来反映这种逻辑。relabel_configs:
- source_labels: [host]
regex: ^(.*)\.\d+$
target_label: host_group
它将生成您需要匹配的标签:
host=host1.1 => host_group=host1
host=host1.2 => host_group=host1
然后可以将其用于警报规则。
sum(icmpping) on(host_group) == 0
如果这不可能,则可以使用label_replace来实现相同的效果(仅在即时矢量上)
sum(label_replace(icmpping,"host_group","$1","host","(.*)\._\\d+")) on(host_group) == 0