温馨提示:本文翻译自stackoverflow.com,查看原文请点击:prometheus - Detect change in two values
prometheus prometheus-alertmanager

prometheus - 检测两个值的变化

发布于 2020-04-14 23:39:24

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

我想创建一个警报,如果在线包装箱的数量发生变化,它将发出警报。我用这样的东西:

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

这将检测状态变化,但不报告当前/先前值。所有$ labels.value都将返回true / false。有没有一种方法可以编写此查询,以便A)都在更改时发出警报,并且B)报告不同的值?

查看更多

提问者
Joe Devilla
被浏览
101
Michael Doubez 2020-02-05 05:35

警报模板中可以看出,只有一种$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

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

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}}.

注意:查询可能会根据您的情况进行简化,但我写的是一般情况。