0

我正在尝试使用 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

上述设置工作正常,只要满足警报条件就会发送通知。但是,我在使用这种方法时遇到了几个问题。

  1. 我需要异常的实际计数而不是比率

我尝试了以下方法来解决这个问题。但是,它仍然给出一个单调的值,除非有任何新的异常被抛出。

count_over_time(http_server_requests_seconds_count{application="my-service-1",exception!~"None"}[5m])

  1. 对于每个异常,我都会收到几个系列,除非警报状态恢复为Ok,否则 Grafana 将不会在另一个系列满足条件时再次发送通知。

如何解决上述问题并让 Grafana 对新异常发出警报并发送计数而不是速率?

感谢您的帮助!

4

0 回答 0