普罗米修斯中度量标准与自身比较的正确方法,以检测速率的增加或减少



给定一个指标my_http_counter,它有自己的标签,我可以用

查询
sum(rate(my_http_counter[1m])) by (label)

我正在寻找一种正确的方法来检测在过去5分钟内超过2%的增长。

I though of:

sum(rate(my_http_counter[1m] offset 5m)) by (label) /
sum(rate(my_http_counter[1m])) by (label) 

但是,我不确定这个。

我可以比较两个重叠的指标,但我正在寻找正确的方法来比较一个mertic与其先前的状态。

谢谢。

下面的查询应该检测到在过去5分钟内rate(my_http_counter[1m])的增长超过2%:

(
sum(rate(my_http_counter[1m])) by (label)
/
sum(rate(my_http_counter[1m] offset 5m)) by (label)
) > 1.02

它使用offset修饰符来获取相同系列5分钟前的值。

另一个选择是将Prometheus子查询与delta函数一起使用:

(
delta(
(sum(rate(my_http_counter[1m])) by (label))[5m:1m]
)
/
sum(rate(my_http_counter[1m])) by (label)
) > 0.02

在与0.02进行比较之前,可能值得将查询包装到abs()中,以便在过去5分钟内捕获增加和减少超过2%:

abs(
delta(
(sum(rate(my_http_counter[1m])) by (label))[5m:1m]
)
/
sum(rate(my_http_counter[1m])) by (label)
) > 0.02

相关内容

最新更新