Grafana警报-根据Spring Boot Prometheus metrics的新条件检查发送警报通知

Grafana警报-根据Spring Boot Prometheus metrics的新条件检查发送警报通知,prometheus,spring-boot-actuator,spring-micrometer,grafana-alerts,Prometheus,Spring Boot Actuator,Spring Micrometer,Grafana Alerts,我正在尝试使用Grafana为从普罗米修斯(Prometheus)那里获取的Spring Boot指标创建警报。用例用于警告每个服务引发的异常。我使用的是http\u server\u requests\u seconds\u count度量,下面提到的是我用来创建图的PromQL查询的分解 首先,我排除了所有不会引发异常的指标 http\u服务器\u请求\u秒数\u计数{application=“my-service-1”,异常!~“None”} 接下来,我应用了rate()函数,因为默认

我正在尝试使用Grafana为从普罗米修斯(Prometheus)那里获取的Spring Boot指标创建警报。用例用于警告每个服务引发的异常。我使用的是http\u server\u requests\u seconds\u count度量,下面提到的是我用来创建图的PromQL查询的分解

  • 首先,我排除了所有不会引发异常的指标

    http\u服务器\u请求\u秒数\u计数{application=“my-service-1”,异常!~“None”}

  • 接下来,我应用了
    rate()
    函数,因为默认度量只提供了一个单调的值

    速率(http\u服务器\u请求\u秒数\u计数{application=“my-service-1”,异常!~“无”}[5m])

  • 然后我使用以下条件触发警报。(使用
    max()
    函数作为
    sum()
    count()
    函数会考虑数据点,这不是我的要求)

    当查询(A,5m,现在)的max()大于0.02时

    每1m评估5m

上述设置工作正常,并在满足警报条件时发送通知。然而,我在使用这种方法时面临着几个问题

  • 我需要的是异常的实际计数,而不是比率
  • 我尝试了以下方法来解决这个问题。但是,除非抛出任何新的异常,否则它仍然给出一个单调的值

    count\u over\u time(http\u server\u请求秒数\u count{application=“my-service-1”,exception!~“None”}[5m])

  • 对于每个异常,我会收到几个系列,除非警报状态返回到Ok,否则Grafana不会在满足不同系列的条件时再次发送通知
  • 如何解决上述问题,并让Grafana根据新异常发出警报,同时发送计数而不是速率

    谢谢你的帮助