【问题标题】:Alert if no messages have been received in the last 30 minutes如果在过去 30 分钟内未收到任何消息,则发出警报
【发布时间】:2018-08-30 12:39:47
【问题描述】:

我正在查询 Prometheus。具有指标的服务公开了指标端点,它包含一个 mymessagingservice_inbox_messagecount 条目,显示收件箱 MSMQ 中有多少消息。 我有一个 MSMQ 收件箱和一个审计收件箱。当消息到达收件箱队列时,我的服务会将其从收件箱中删除并将其移动到 Autit 中。我的目标是进行查询,检查过去 30 分钟内有多少邮件到达收件箱队列。 这是我的查询的样子:

“mymessagingservice_inbox_messagecount{environment="prod"}[30m]” 

当我运行它时,所有结果都显示为 0。事实是审核队列在 2 分钟前显示了一条消息。 不确定我是否有正确的查询,或者是否有其他因素影响结果。我唯一能想到的是,消息很快从收件箱队列中取出,Prometheus 前后对端点进行了观察,这样消息就没有被记录下来。 有什么想法吗?

【问题讨论】:

    标签: prometheus


    【解决方案1】:

    看起来您正在使用仪表并仅报告队列中“待处理”消息的当前数量。在这里,您遇到的问题是刮擦的时间是相关的 - 因此在大多数情况下不会产生您需要的东西。您的用例听起来像是带有 increase() 函数的 counter 指标的完美示例。

    计数器是一种度量类型,它总是增加并计算(例如)进入队列的消息的总数。然后您可以应用increase() 函数来计算范围向量中第一项和最后一项之间的值的(不完全精确)增量。

    increase(mymessagingservice_inbox_messages_total{environment="prod"}[30m])
    

    这意味着您需要以一种在将新邮件放入收件箱后立即增加计数器的方式来检测您的代码。

    有关详细信息,请参阅 countersincrease function 上的文档。您还可以查看以这种方式执行此操作的 rabbitmq 导出器的指标:https://github.com/kbudde/rabbitmq_exporter#queues---counter

    当一切都设置好后,你可以建立一个规则来计算过去 30 分钟内是否没有增加,这个简单的条件:

    increase(mymessagingservice_inbox_messages_total{environment="prod"}[30m]) == 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      相关资源
      最近更新 更多