【发布时间】:2020-05-29 08:42:27
【问题描述】:
我在 Amazon SQS 中使用死信队列。我希望每当队列收到新消息时,它都应该引发 CloudWatch 警报。问题是我在指标上配置了一个警报:队列的number_of_messages_sent,但是在Amazon SQS Dead-Letter Queues - Amazon Simple Queue Service 文档中提到的死信队列的情况下,此指标无法按预期工作。
现在对此的一些建议是使用number_of_messages_visible,但我不确定如何在警报中配置它。因此,如果我设置此 metric>0 的值,那么这与在队列中获取新消息不同。如果有旧消息,则度量值将始终为>0。我可以做一些数学表达式来获得这个指标在某个定义的时间段内的增量(比如说一分钟),但我正在寻找一些更好的解决方案。
【问题讨论】:
-
DLQ 的来源是什么?换句话说,结果是什么导致了 DLQ 的失败?它是一个拉姆达吗? SNS 交付?
-
我有一个 java 应用程序,它不断地轮询数据并处理它。如果在处理时引发异常,则将其添加到 DLQ。将消息添加到 DLQ 的代码也在我的应用程序中。
-
所以您是“手动”向您的 DLQ 添加内容?它不是像 lambda 那样的自动 DLQ?
-
考虑当消息在您的 DLQ 中而不是在收到消息时发出警报:简单地在 ApproximateNumberOfMessagesVisible 上发出警报。从操作的角度来看,只要消息在您的 DLQ 中,您就会遇到问题;只有当 DLQ 为空并且您已处理所有 DLQ 消息时,警报才应从 ALARM 变为 OK。尤其如此,因为您有时间限制来处理 DLQ 消息,因为队列的最长保留期为 14 天。
标签: amazon-web-services amazon-cloudformation amazon-sqs amazon-cloudwatch cloudwatch-alarms