【问题标题】:Detect change in two values检测两个值的变化
【发布时间】:2020-02-03 17:07:00
【问题描述】:

我目前使用 prometheus alertmanager alert 来确定在给定时间运行的盒子数量。

我想创建一个警报,当在线邮箱数量发生变化时会发出警报。我使用这样的东西:

sum(up{app="mybox"}) != sum(up{app="mybox"} offset 5m)

这将检测到状态变化,但不会报告当前/之前的值。所有 $labels.value 将返回一个真/假。有没有办法编写这个查询,以便 A) 它在变化时发出警报,并且 B) 报告不同的值?

【问题讨论】:

    标签: prometheus prometheus-alertmanager


    【解决方案1】:

    alert templating 中所见,只有一个$value 可用,它是规则的表达式。

    在您的情况下,它将是sum(up{app="mybox"}) 的新值。根据您的用例,您可以将其表示为

    • 增加:sum(up{app="mybox"}) - sum(up{app="mybox"} offset 5m) != 0
    • 变化比例:1 - clamp_max(sum(up) / sum(up{app="mybox"} offset 5m), 0) != 0

    如果您确实需要其他(以前的)值,您可以使用a query template,但不要将其放在标签中。否则,将为每个先前的值生成不同的警报。

    expr: sum(up{app="mybox"}) != sum(up{app="mybox"} offset 5m)
    annotations:
       description: The new value {{ $value }} is different from the previous: {{with query "sum(up{app='mybox'} offset 5m)"}}{{ . | first | value}}{{end}}.
    

    注意:在您的情况下,查询可能会被简化,但我写的是一般情况。

    【讨论】:

      猜你喜欢
      • 2013-05-03
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 2022-12-12
      • 2019-08-20
      相关资源
      最近更新 更多