我目前使用Prometheus alertmanager警报来确定在给定时间运行的盒子数量。
我想创建一个警报,如果在线包装箱的数量发生变化,它将发出警报。我用这样的东西:
sum(up{app="mybox"}) != sum(up{app="mybox"} offset 5m)
这将检测状态变化,但不报告当前/先前值。所有$ labels.value都将返回true / false。有没有一种方法可以编写此查询,以便A)都在更改时发出警报,并且B)报告不同的值?
从警报模板中可以看出,只有一种$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}}.
注意:查询可能会根据您的情况进行简化,但我写的是一般情况。