Prometheus 如果在过去30分钟内未收到任何消息,则发出警报

Prometheus 如果在过去30分钟内未收到任何消息,则发出警报,prometheus,Prometheus,我在调查普罗米修斯。具有度量的服务正在公开度量端点,它包含一个mymessagingservice\u inbox\u messagecount条目,该条目显示inbox MSMQ中有多少邮件。 我有一个MSMQ收件箱和一个审计收件箱。当邮件到达收件箱队列时,我的服务会将其从收件箱中删除,并将其移动到Autit队列。我的目标是做一个查询,检查在过去30分钟内有多少邮件到达收件箱队列。 我的查询是这样的: “mymessagingservice_inbox_messagecount{environ

我在调查普罗米修斯。具有度量的服务正在公开度量端点,它包含一个mymessagingservice\u inbox\u messagecount条目,该条目显示inbox MSMQ中有多少邮件。 我有一个MSMQ收件箱和一个审计收件箱。当邮件到达收件箱队列时,我的服务会将其从收件箱中删除,并将其移动到Autit队列。我的目标是做一个查询,检查在过去30分钟内有多少邮件到达收件箱队列。 我的查询是这样的:

“mymessagingservice_inbox_messagecount{environment="prod"}[30m]” 
当我运行它时,所有结果都显示为0。事实上,审核队列在2分钟前显示了一条消息。 不确定我的查询是否正确,或者是否有其他因素影响结果。我唯一能想到的是,邮件很快就从收件箱队列中提取出来,普罗米修斯在前后对端点进行了观察,这样邮件就没有被记录下来。
有什么想法吗?

看起来您正在使用一个仪表,只报告队列中当前“待定”消息的数量。这里你有一个问题,刮伤的时间是相关的-因此在大多数情况下不会产生你所需要的。您的用例听起来像是带有
increase()
函数的
计数器的完美示例

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

increase(mymessagingservice_inbox_messages_total{environment="prod"}[30m])
这意味着您需要以一种方式插入代码,即在新邮件放入收件箱时立即增加计数器

有关详细信息,请参阅和上的文档。您还可以查看rabbitmq导出器的指标,该导出器正是这样做的:

设置完所有内容后,您可以构建一个规则,用于计算在过去30分钟内是否存在以下简单情况:

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