Prometheus 每次出现错误时使用普罗米修斯创建警报

Prometheus 每次出现错误时使用普罗米修斯创建警报,prometheus,prometheus-alertmanager,prometheus-blackbox-exporter,Prometheus,Prometheus Alertmanager,Prometheus Blackbox Exporter,我不熟悉普罗米修斯和警报系统。 我开发了一个微服务,并添加了度量代码,以便在出现错误时获得增量的总数。 现在我正在尝试创建一个警报,这样每当错误增加时,它都应该标记出来并发送一封邮件。 但我无法对这种情况形成适当的查询。我使用了类似于error_total>0的方法来发送警报,但它每次都会工作,因为计数将大于0,除非我们手动重置它。您要查找的是。在前15分钟内出现错误时,以下表达式将触发en error: expr: increase(my_error_metric[15m]) > 0 a

我不熟悉普罗米修斯和警报系统。 我开发了一个微服务,并添加了度量代码,以便在出现错误时获得增量的总数。 现在我正在尝试创建一个警报,这样每当错误增加时,它都应该标记出来并发送一封邮件。
但我无法对这种情况形成适当的查询。我使用了类似于error_total>0的方法来发送警报,但它每次都会工作,因为计数将大于0,除非我们手动重置它。

您要查找的是。在前15分钟内出现错误时,以下表达式将触发en error:

expr: increase(my_error_metric[15m]) > 0
annotations:
  summary: "Hey! There were {{ $value }} errors in the last 15 minutes"
错误在微服务中很常见,对每个错误发出警报通常是无法管理的。一种更常见的策略是仅当超过给定阈值时发出警报(示例5%):


增加时发出警报也可能意味着您可能会错过一些错误,因为警报是在错误时触发的,但在调查过程中会发生另一个错误。不会有第二个警报,它将包含在第一个警报中。

Hi@Michael Doubez,感谢您的回复。表达式increase(my_error_metric[15m])>0不会返回第一个错误的任何响应,但一旦出现第二个错误,表达式将返回一个值,如1.66等。这种行为的原因是什么?在没有错误时是否发布度量?(值为0)这是我唯一想到的。
expr: irate(my_error_metric[2m]) / irate(number_of_call[2m]) * 100 > 5