Promotheus - 查询以获得事件增加的百分比

Ale*_*cus 2 prometheus

我有一个带有路径和状态代码的请求直方图...如果过去一小时内的错误比前一小时增加了 20%,我如何发出警报?

一个指标样本:

{instance="someIp",instance_hostname="someHost",job="someAppName",le="+Inf",method="GET",path="somePath",status_code="500"} 
Run Code Online (Sandbox Code Playgroud)

我应该依赖速率函数吗?就像是:

rate(http_request_duration_seconds{job="someProject", status_code="500"}[60m])
Run Code Online (Sandbox Code Playgroud)

Ali*_*ean 5

取过去一小时的错误率与前一小时的错误率之比:

(
  rate(http_request_duration_seconds_count{status_code="500"}[1h])
    /
  rate(http_request_duration_seconds_count{status_code="500"}[1h] offset 1h)
)
  >
1.2
Run Code Online (Sandbox Code Playgroud)

这将检查错误绝对数量的增加。如果您想检查错误相对数量的增加(例如,过去一小时内 10% 的请求失败,而前一小时内 5% 的请求失败),那么您需要在比较之前将错误率除以总请求率1小时前同样的事情。

或者您可能想要将两者结合起来,如果相对错误数量增加了 X%,并且绝对数量超过某个噪声阈值,则发出警报(这样,如果您在过去一小时内收到 2 个请求并且其中之一失败了)。