目标主机IP为192.168.0.112
PromQL_1:up{job="node_exporter,instance="192.168.0.112:9100"}
这是一个用来检测目标主机上的node_exporter是否在线的表达式,如果在线返回值为1
PromQL_2:node_systemd_unit_state{job="node_exporter",name="docker.service",state="active",instance="192.168.0.112:9100"}
这是一个检测目标主机docker服务是否在线的表达式,如果在线返回值为1
我在Prometheus中设置的报警规则为以下两条:
PromQL_1 != 1 时触发报警 报警A
PromQL_2 != 1 时触发报警 报警B
但是当node_exporter在目标主机处于离线的时候,并不会触发报警B,此时Prometheus中PromQL_2执行时没有数据的。
如何解决在Promql未采集到数据的时候将其判定为非1值从而触发报警?
按你的描述应该是:
PromQL_2 != 1 时触发报警 报警B
吧
你现在不确定
PromQL_1 != 1
啊!不过上面的条件如果设置对啦,就应该能针对性报警啦。已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。