【问题标题】:Creating alert using prometheus everytime there is an error每次出现错误时使用 prometheus 创建警报
【发布时间】:2020-06-25 07:05:09
【问题描述】:

我是 prometheus 和警报系统的新手。 我开发了一个微服务并添加了指标代码,以便在出现错误时获取增量的总数。 现在我正在尝试创建一个警报,以便每当错误增加时,它应该标记出来并发送邮件。 但我无法为这种情况形成正确的查询。我使用了诸如 error_total > 0 之类的东西来发送警报,但它每次都会起作用,因为除非我们手动重置它,否则计数将 > 0。

【问题讨论】:

    标签: prometheus prometheus-alertmanager prometheus-blackbox-exporter


    【解决方案1】:

    您正在寻找的是increase function。只要在前 15 分钟内发生错误,以下表达式就会触发错误:

    expr: increase(my_error_metric[15m]) > 0
    annotations:
      summary: "Hey! There were {{ $value }} errors in the last 15 minutes"
    

    错误在微服务中很常见,并且对每个错误发出警报通常是难以管理的。更常见的策略是仅在 error rate 超过给定阈值(例如 5%)时发出警报:

    expr: irate(my_error_metric[2m]) / irate(number_of_call[2m]) * 100 > 5
    

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

    【讨论】:

    • 嗨@Michael Doubez,感谢您的回复。表达式 increase(my_error_metric[15m]) > 0 不会对第一个错误返回任何响应,但是一旦出现第二个错误,表达式就会返回一个值,例如 1.66 等。这种行为的原因是什么?
    • 在没有错误的情况下发布指标吗? (值为 0)这是唯一想到的。
    • 这会在 15 分钟内触发所有连续警报的单独警报吗?
    • 我不确定我是否理解这个问题。警报表达式检测状态;每当状态发生变化时,prometheus 都会定期发送一个信号(给警报管理器)。如果 15 分钟内没有错误增加,警报将被解决;如果有增加,则警报处于“触发”状态。如果您在谈论通知,则在警报管理器级别进行处理。
    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多