【发布时间】:2020-07-20 10:00:37
【问题描述】:
我在理解和/或实现 Prometheus 中的警报逻辑时遇到问题。我有两条警报规则:
alert: JobDown
expr: up == 0
for: 5m
labels:
severity: warning
annotations:
summary: Scrape job {{ $labels.job }} down on {{ $labels.hostname }}.
alert: HostDown
expr: sum(up) == 0
for: 5m
labels:
severity: critical
annotations:
description: All scrape jobs down on {{ $labels.hostname }}.
summary: Host {{ $labels.hostname }} down.
我希望在所有作业都关闭时触发 HostDown 警报,但事实并非如此:我看到主机关闭,Prometheus 显示每个抓取作业的警报,但没有触发 HostDown 警报。我写对了吗?
【问题讨论】:
-
当所有工作都停工时,
up指标对您有什么价值?在 Prometheus 表达式浏览器中查看。你是在用 Prometheus 自己刮吗? -
不,我没有任何 Prometheus 自己的指标,因为我禁用了该工作。对于每个向下的作业,向上度量为 0,当节点上的所有作业都向下时,总和也向下。在控制台中,我可以使用主机标签,即。
sum(up{hostname="somehost"})这在规则配置中是不可能的,但似乎默认情况下,表达式是使用每个目标分组进行评估的,因此预计总和聚合也具有每个目标范围。 -
sum将忽略hostname并总结一切。总结hostname,你需要sum by (hostname) (up) == 0。虽然我不知道您从哪里获得hostname标签 - 它不是up上的标准标签。 -
是的,这行得通。让它成为一个答案,我会接受它。主机名是我的 conf 中的自定义标签。
标签: prometheus prometheus-alertmanager