正确计算发送到死信SQS队列的消息数

时间:2019-05-23 12:06:54

标签: amazon-web-services monitoring amazon-sqs grafana

我希望grafana报告在任何给定时间的死信队列中有多少条消息。由于最终出现在此队列中的消息的性质,因此将对其进行评估和解析。

我已将grafana配置为从NumberOfMessagesSent队列中读取dead-letter,但是,该值始终为0,因为;我认为最终在此处发送的消息是从另一个队列发送的(通过SQS)。

即使我可以看到消息已发送到dead-letter队列(不是以编程方式),但已被X接收数之后配置的另一个队列发送。

grafana config for NumberOfMessagesSent

对此有解决方案吗?

2 个答案:

答案 0 :(得分:5)

快速解答:

您只能在SQS DLQ上真正监控的指标是 ApproximateNumberOfMessagesVisible

TLDR:

当新消息到达SQS DLQ时,NumberOfMessagesSentNumberOfMessagesReceived都不增加。 来自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

相关问题