Prometheus:警告并发请求数量下降
Prometheus: alert on drop in number of concurrent requests
给定一个 Gauge 指标 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)。
您应该对较长时间段内的请求数进行平均。例如:
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。
给定一个 Gauge 指标 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)。
您应该对较长时间段内的请求数进行平均。例如:
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。