如何配置CloudWatch告警,实现SQS消息1小时未删除时发送通知
SQS队列消息滞留1小时未删除告警正确配置方案
基础逻辑说明
你选择的ApproximateAgeOfOldestMessage指标是符合需求的,该指标代表SQS队列中最旧的未被删除消息的存活时长,单位为秒,你遇到的触发异常基本是配置规则错误导致的,按以下步骤调整即可。
详细配置步骤
- 进入CloudWatch控制台「告警」模块,点击创建告警,选择对应SQS队列的
ApproximateAgeOfOldestMessage指标 - 指标统计规则配置:统计方式固定选择
Maximum(最大值),统计周期设置为1分钟,禁止使用Average、Sum等统计方式,否则无法正确获取最旧消息的实际年龄 - 阈值条件配置:选择「静态阈值」,触发条件设置为「大于或等于」,阈值填入
3600(对应1小时的秒数) - 告警触发逻辑配置:将「数据点触发告警」规则设置为
1 out of 1,即只要有1个统计周期的指标满足阈值就直接触发告警,不要配置多周期连续触发规则,避免触发延迟 - 通知配置:绑定对应SNS主题,关联你需要接收通知的端点(邮箱、短信、企业机器人webhook等)
常见失效场景排查
- 统计周期设置过长:如果设置统计周期为1小时,消息超过1小时后最多需要再等1个统计周期才能被检测到,会出现明显的触发延迟
- 队列配置了延迟发送/可见性超时规则:
ApproximateAgeOfOldestMessage的计时起点是消息对消费者可见的时间,不是消息入队时间,如果队列开启了全局延迟配置,需要把延迟时长计入阈值设置 - 告警处于「不足数据」状态:如果队列长时间没有消息,指标会没有数据,默认不会触发告警,你可以根据需求将不足数据的处理规则设置为「触发告警」或者「忽略」
内容的提问来源于stack exchange,提问作者Chandra Reddy
相关产品推荐
相关产品推荐

