SQS队列在一定时间后不为空时报警?
Alarm when SQS Queue is not Empty After Certain Time?
用例
我们有 1 个 sqs 正在被 lambda 使用,我们想知道在某个时间戳后是否所有 sqs 中的消息都已被使用。
例如,其他一些系统会从早上 6 点开始向 SQS 发送消息,lambda 需要 4 个小时才能处理完所有消息。我们想知道在上午 10 点,队列中的所有消息是否已被消费。
而我们每天只需要检测一次sqs的深度即可。
问题。
有没有一种简单的方法可以在 cloudwatch 中设置警报来实现我们的用例?
有许多潜在的解决方案,例如使用 cloudwatch 规则触发 lambda 并检测队列的大小和发送指标。我们可以对指标发出警报,但这似乎是一项繁重的工作
欢迎任何反馈!
谢谢
持续检查
您可以针对队列的 ApproximateNumberOfMessagesVisible
指标创建 Amazon CloudWatch 警报。
例如,如果您希望在过去一小时内队列未为空时收到通知,您可以在 ApproximateNumberOfMessagesVisible
的最小值 > 0 持续 60 分钟时创建警报。这表示过去一小时队列中的最小消息数大于零。
在特定时间检查
如果您想在特定时间检查队列长度,您需要使用 Amazon CloudWatch Events 触发 AWS Lambda 函数 在给定的时间。
Lambda 函数可以调用 get_queue_attributes()
来检索 ApproximateNumberOfMessages
。如果这比预期的要大,Lambda 函数可以将消息发送到 Amazon SNS 主题。用户可以订阅主题以接收电子邮件或短信通知。
用例
我们有 1 个 sqs 正在被 lambda 使用,我们想知道在某个时间戳后是否所有 sqs 中的消息都已被使用。
例如,其他一些系统会从早上 6 点开始向 SQS 发送消息,lambda 需要 4 个小时才能处理完所有消息。我们想知道在上午 10 点,队列中的所有消息是否已被消费。
而我们每天只需要检测一次sqs的深度即可。
问题。
有没有一种简单的方法可以在 cloudwatch 中设置警报来实现我们的用例?
有许多潜在的解决方案,例如使用 cloudwatch 规则触发 lambda 并检测队列的大小和发送指标。我们可以对指标发出警报,但这似乎是一项繁重的工作
欢迎任何反馈!
谢谢
持续检查
您可以针对队列的 ApproximateNumberOfMessagesVisible
指标创建 Amazon CloudWatch 警报。
例如,如果您希望在过去一小时内队列未为空时收到通知,您可以在 ApproximateNumberOfMessagesVisible
的最小值 > 0 持续 60 分钟时创建警报。这表示过去一小时队列中的最小消息数大于零。
在特定时间检查
如果您想在特定时间检查队列长度,您需要使用 Amazon CloudWatch Events 触发 AWS Lambda 函数 在给定的时间。
Lambda 函数可以调用 get_queue_attributes()
来检索 ApproximateNumberOfMessages
。如果这比预期的要大,Lambda 函数可以将消息发送到 Amazon SNS 主题。用户可以订阅主题以接收电子邮件或短信通知。