我希望grafana报告在任何给定时间的死信队列中有多少条消息。由于最终出现在此队列中的消息的性质,因此将对其进行评估和解析。
我已将grafana配置为从NumberOfMessagesSent
队列中读取dead-letter
,但是,该值始终为0
,因为;我认为最终在此处发送的消息是从另一个队列发送的(通过SQS)。
即使我可以看到消息已发送到dead-letter
队列(不是以编程方式),但已被X接收数之后配置的另一个队列发送。
对此有解决方案吗?
答案 0 :(得分:5)
快速解答:
您只能在SQS DLQ上真正监控的指标是 ApproximateNumberOfMessagesVisible
。
TLDR:
当新消息到达SQS DLQ时,NumberOfMessagesSent
或NumberOfMessagesReceived
都不增加。
来自AWS Documentation的引用:
如果您手动将消息发送到死信队列,则会被捕获 通过NumberOfMessagesSent指标。但是,如果邮件发送到 由于尝试失败而导致的死信队列,不是 由该指标捕获。因此,对于 收到的NumberOfMessagesSent和NumberOfMessages不同。
NumberOfMessagesSent
的意思是:
您已发送到队列的消息数(由于失败而到达DLQ的消息除外)
NumberOfMessagesReceived
的意思是:
您从队列中收到了多少邮件
ApproximateNumberOfMessagesVisible
的意思是:
总数或消息,在队列中可见。 (请记住,当您从队列中接收消息时,您必须设置可见性超时==对其他人不可见您接收到的消息的时间。另外请记住,您应在成功处理后删除消息,否则在可见性超时后可供其他人使用。 )
答案 1 :(得分:0)
由于正如David Navrkal所提到的那样,NumberOfMessagesReceived和NumberOfMessagesSent的度量取决于消息如何排队,因此,我使用度量roximateNumberOfMessagesDelayed为我们的需求设计了新的解决方案。在dlq设置上,我添加了使用此指标的延迟。
ie:延迟秒:60#用于警报
有关Yaml,请参见Configure SQS Dead letter Queue to raise a cloud watch alarm on receiving a message。