给出一个量表指标number_of_concurrent_requests
(例如),当该值突然下降时,我需要发送警报。
我考虑的一种方法是将当前值与30秒前的值进行比较,如果差异大于20%,则发送警报(当然,这里的30和20是任意的)。
规则表达式类似于:
(number_of_concurrent_requests - (number_of_concurrent_requests offset 30s)) / (number_of_concurrent_requests offset 30s) < -0.20
这可行,但是:
$value
包含比率(例如-0.34)。答案 0 :(得分:1)
您可能应该在较长时间内平均请求数。例如:
number_of_concurrent_requests / avg_over_time(number_of_concurrent_requests[5m]) < .8
如果要与更早的期间进行比较,可以选择向分母添加偏移量。当然,请使用您认为最合适的范围代替5m
。
关于第二个问题,在警报描述的模板中,您可以使用printf
函数来生成PromQL查询;用管道将其输送到query
function中;并输出第一个结果。像这样:
{{ with printf `number_of_concurrent_requests{job="%s",env="%s"}` $labels.job $labels.env | query }}
{{- . | first | value -}}
{{ end }}
有关更多详细信息,请参见this answer。