我正在尝试使用 Grafana 为从 Prometheus 抓取的 Spring Boot 指标创建警报。用例是提醒每个服务抛出的异常。我正在使用http_server_requests_seconds_count指标,下面提到的是我用来创建图表的 PromQL 查询的细分。
首先,我排除了所有不会引发异常的指标。
http_server_requests_seconds_count{application="my-service-1",exception!~"None"}
接下来我应用了这个
rate()
函数,因为默认度量只提供了一个单调的值。rate(http_server_requests_seconds_count{application="my-service-1",exception!~"None"}[5m])
然后我使用以下条件触发警报。(使用
max()
函数作为sum()
函数count()
考虑数据点,这不是我的要求)WHEN max() OF query(A,5m,now) IS ABOVE 0.02
EVALUATE every 1m FOR 5m
上述设置工作正常,只要满足警报条件就会发送通知。但是,我在使用这种方法时遇到了几个问题。
- 我需要异常的实际计数而不是比率
我尝试了以下方法来解决这个问题。但是,它仍然给出一个单调的值,除非有任何新的异常被抛出。
count_over_time(http_server_requests_seconds_count{application="my-service-1",exception!~"None"}[5m])
- 对于每个异常,我都会收到几个系列,除非警报状态恢复为Ok,否则 Grafana 将不会在另一个系列满足条件时再次发送通知。
如何解决上述问题并让 Grafana 对新异常发出警报并发送计数而不是速率?
感谢您的帮助!