【问题标题】:Host down alert in Prometheus when all scrape jobs are down当所有抓取作业都关闭时,Prometheus 中的主机关闭警报
【发布时间】: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


【解决方案1】:

sum 将忽略 hostname 并总结所有内容。总结hostname,你需要

sum by (hostname) (up) == 0

注意:主机名不是up 上的标准label,它是原始海报配置中的自定义标签

【讨论】:

    猜你喜欢
    • 2019-03-12
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    相关资源
    最近更新 更多