Prometheus:对价值变化发出警报

mat*_*ots 8 prometheus

如果log_error_count至少1在过去一分钟内增加了,我想收到警报。

所以最初我的查询看起来像

ALERT BackendErrors
  IF rate(log_error_count[1m]) > 0
  FOR 1s
  ...
Run Code Online (Sandbox Code Playgroud)

但后来我尝试使用普罗米修斯仪表板对图表进行理智检查。

使用查询

log_error_count
Run Code Online (Sandbox Code Playgroud)

我的图表看起来像

日志错误计数

当我查看带有查询的图表时

rate(log_error_count[2m])
Run Code Online (Sandbox Code Playgroud)

我的图表看起来像

率(log_error_count [2m])

事实上,我也试过函数iratechanges、 和delta,它们都变为零。

为什么速率为零,我的查询需要看起来像什么才能在计数器增加一次时发出警报?

neo*_*yle 4

我对planetlabs/draino 也有类似的问题:
我希望能够检测到它何时耗尽节点。
(不幸的是,他们继承了对日志记录有意义的极简日志记录策略,而转向了没有意义的指标...)
draino_pod_ip:10002/metrics 端点的网页完全是空的...不存在,直到第一次耗尽发生...
我的需求稍微难以检测,当 value = 0 时(也称为 pod 重新启动),我必须处理指标不存在的情况。
我必须检测从不存在 -> 1 和 n -> n+1 的转变。
这就是我想到的,请注意我检测到的指标是一个整数,我不确定这对于小数来说是如何值的,即使它需要根据您的需求进行调整,我认为它可能会帮助您指出正确的方向:


(absent(draino_cordoned_nodes_total offset 1m) == 1 and count(draino_cordoned_nodes_total) > -1)
Run Code Online (Sandbox Code Playgroud)

^ 当指标从“不存在”切换到“存在”时,会创建一个值为 1 的 blip

((draino_cordoned_nodes_total - draino_cordoned_nodes_total offset 1m) > 0)
Run Code Online (Sandbox Code Playgroud)

^ 当它从 n -> n+1 增加时,会创建一个值为 1 的 blip


结合2:

(absent(draino_cordoned_nodes_total offset 1m) == 1 and count(draino_cordoned_nodes_total) > -1) or ((draino_cordoned_nodes_total - draino_cordoned_nodes_total offset 1m) > 0)
Run Code Online (Sandbox Code Playgroud)

^ 将它们组合在一起使我能够检测到 Grafana 图上单个 1 的变化,我认为这就是您所追求的。