我正在尝试在 Prometheus Alerting Manager 中配置一个警报,该警报会在 2 个不同主机的状态关闭时出现。
为了更好地解释,我有这对主机(host=instance
):
host1.1
host1.2
host2.1
host2.2
host3.1
host3.2
host4.1
host4.2
...
我需要在同一对夫妇的两个主机都关闭时出现的警报:
expr = ( icmpping{instance=~"hostX1"}==0 and icmpping{instance=~"hostX2"}==0 )
(我知道语法不正确,我只是想强调 X
在两个 icmpping
条件下指的是同一个数字)
有什么提示吗?
最佳答案
最简单的方法可能是在摄取时生成一个反射(reflect)此逻辑的标签,使用 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
关于monitoring - 结合 2 个不同实例的状态配置 Prometheus 警报规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59193831/