Prometheus:并发请求数量下降时发出警报

时间:2019-11-14 15:24:39

标签: prometheus

给出一个量表指标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

这可行,但是:

  1. 这是最好的方法吗?
  2. 我想在警报中同时显示百分比和当前值,可以吗?按照上面显示表达式的方式,$value包含比率(例如-0.34)。

1 个答案:

答案 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