Grafana 警报 - 针对 Spring-Boot Prometheus 指标的每个新条件检查发送警报通知

问题描述

我正在尝试使用 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. 对于每个异常,我都会收到多个系列,除非警报状态恢复到好的,否则 Grafana 不会第二次发送来自不同系列的条件满足的通知

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

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...