配置Prometheus警报规则,结合两个不同实例的状态

时间:2019-12-05 11:10:15

标签: monitoring prometheus prometheus-alertmanager

我试图在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条件下都指向相同的数字)

有任何提示吗?

1 个答案:

答案 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