问题描述
想要设置一个CloudWatch告警,以监控以下指标的组合:
– 发送的消息数量(Number of messages sent)
– 删除的消息数量(Number of messages deleted)
用户希望当这个组合的值大于等于6时,触发一个CloudWatch告警。并且,如果告警触发,希望能够触发AWS Lambda函数。
用户还提到,他希望能够获取队列中当前可用消息数量的指标,但是目前没有这样的指标。
用户还提到,纯粹的指标通常不足以设置告警,需要构建和导出中间量到CloudWatch,例如一组指标的最大值、指标的变化率、与目标值的差值等。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
对于用户的整体目标,我们可以设置一个基于CloudWatch的告警,监控SQS的ApproximateNumberOfMessagesVisible
指标。根据CloudWatch关于SQS的文档,ApproximateNumberOfMessagesVisible
指标表示队列中可供检索的消息数量。
以下是设置告警的步骤:
1. 打开CloudWatch控制台。
2. 在导航栏中,选择Alarms。
3. 单击Create alarm。
4. 在Create Alarm页面,选择Select metric。
5. 在Browse选项卡中,选择SQS。
6. 在Queue Metrics下,选择ApproximateNumberOfMessagesVisible。
7. 在Conditions部分,设置条件为GreaterThanOrEqualToThreshold
,并将阈值设置为6。
8. 在Actions部分,选择要触发的操作,例如触发AWS Lambda函数。
9. 单击Create alarm。
请注意,ApproximateNumberOfMessagesVisible
指标是近似值,因为指标是定期获取的,无法保证在获取和显示之间队列中没有变化。
方案2
最近AWS刚刚推出了CloudWatch Metric Math,这应该适用于您的用例。
您可以参考以下文档:
– Amazon CloudWatch Adds Metric Math to Enable Custom Operations on Metrics
– Create a CloudWatch Alarm Based on a Metric Math Expression
请注意,使用CloudWatch API获取和推送指标会产生费用,当请求数超过每月100万次时,会有额外的费用。还有其他一些限制需要注意,以避免超出预算或工作流程的限制。
以上是两种解决方案,您可以根据您的具体需求选择适合您的方案。