我希望grafana报告在任何给定时间死信队列中有多少消息。由于在此队列中结束的消息的性质,将对它们进行评估和解析。
我已经将grafana配置为从dead-letter队列中读取NumberOfMessagesSent,但是,该值始终为0,因为我认为到达此处的消息是从另一个队列(通过SQS)发送的。
尽管我可以看到消息已经发送到dead-letter队列(不是以编程方式),但它是由另一个队列发送的,该队列是在X次接收之后配置的。

对此有解决方案吗?
发布于 2020-03-09 21:40:45
快速回答:
您可以在SQS DLQ上真正监视的唯一指标是ApproximateNumberOfMessagesVisible.
TLDR:
当新消息到达SQS DLQ时,NumberOfMessagesSent或NumberOfMessagesReceived都不会增加。引用自AWS Documentation
如果您手动将消息发送到死信队列,则NumberOfMessagesSent度量将捕获该消息。但是,如果由于失败的处理尝试而将消息发送到死信队列,则此度量不会捕获该消息。因此,NumberOfMessagesSent和NumberOfMessagesReceived的值可能不同。
NumberOfMessagesSent的意思是:
已发送到队列的消息数(由于失败而到达DLQ的消息除外)
NumberOfMessagesReceived的意思是:
您从队列中收到的消息数量
ApproximateNumberOfMessagesVisible的意思是:
队列中可见的消息总数或消息总数。(请记住,当您从队列接收消息时,您必须设置visibility timeout ==,您收到的消息对其他人是不可见的。还要记住,您应该在成功处理之后删除消息,否则其他人将在可见性超时之后删除消息。)
发布于 2020-07-02 07:25:05
正如David Navrkal所提到的,因为NumberOfMessagesReceived和NumberOfMessagesSent的指标依赖于消息的排队方式,所以我使用指标ApproximateNumberOfMessagesDelayed为我们的需求设计了一个新的解决方案。在dlq设置中,我添加了使用此度量的延迟。
例如: DelaySeconds: 60 #用于报警
有关yaml,请参阅Configure SQS Dead letter Queue to raise a cloud watch alarm on receiving a message。
https://stackoverflow.com/questions/56274863
复制相似问题