如何为SNS消息重试及DLQ条目配置CloudWatch告警?
配置CloudWatch告警监控SNS消息重试与死信队列(DLQ)条目
一、AWS控制台配置方法
1. 监控SNS消息重试
- 打开CloudWatch控制台,导航到「告警」页面,点击「创建告警」
- 在指标选择环节,搜索并选择
AWS/SNS命名空间,找到NumberOfNotificationsRetried指标,选中你要监控的目标SNS主题 - 设置告警触发条件:例如选择「5分钟内重试次数≥1」作为触发阈值
- 配置通知环节,选择已有的SNS主题或新建一个,用于接收告警通知
- 填写告警名称和描述,完成告警创建
2. 监控DLQ条目(以SQS类型DLQ为例)
- 同样进入CloudWatch告警创建流程
- 选择指标时,搜索
AWS/SQS命名空间,找到NumberOfMessagesSent指标,选中目标DLQ队列 - 设置触发条件:比如「5分钟内新增消息数≥1」
- 配置通知渠道后完成告警创建
二、CloudFormation配置示例
以下是包含SNS主题、DLQ关联及对应CloudWatch告警的完整模板片段:
AWSTemplateFormatVersion: '2010-09-09' Resources: # 待监控的目标SNS主题(配置了重试与DLQ规则) TargetSNSTopic: Type: AWS::SNS::Topic Properties: TopicName: "MyTargetSNSTopic" # 关联接收消息的SQS队列(示例) Subscription: - Protocol: "sqs" Endpoint: !GetAtt MessageReceiverQueue.Arn # 配置重试规则:最多重试3次后进入DLQ RedrivePolicy: deadLetterTargetArn: !GetAtt MyDLQQueue.Arn maxReceiveCount: 3 # 接收SNS消息的SQS队列(示例) MessageReceiverQueue: Type: AWS::SQS::Queue Properties: QueueName: "MessageReceiverQueue" # 死信队列(DLQ) MyDLQQueue: Type: AWS::SQS::Queue Properties: QueueName: "MyDLQQueue" # 监控SNS重试次数的CloudWatch告警 SNSSRetryAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmName: "SNSTopicRetryAlarm" AlarmDescription: "触发条件:SNS主题存在消息重试" Namespace: "AWS/SNS" MetricName: "NumberOfNotificationsRetried" Dimensions: - Name: "TopicName" Value: !Ref TargetSNSTopic Statistic: "Sum" Period: 300 # 统计周期:5分钟 EvaluationPeriods: 1 Threshold: 1 ComparisonOperator: "GreaterThanOrEqualToThreshold" # 关联告警通知主题 AlarmActions: - !Ref AlarmNotificationTopic # 监控DLQ新增消息的CloudWatch告警 DLQMessageAlarm: Type: AWS::CloudWatch::Alarm Properties: AlarmName: "DLQMessageCountAlarm" AlarmDescription: "触发条件:DLQ收到新消息" Namespace: "AWS/SQS" MetricName: "NumberOfMessagesSent" Dimensions: - Name: "QueueName" Value: !GetAtt MyDLQQueue.QueueName Statistic: "Sum" Period: 300 EvaluationPeriods: 1 Threshold: 1 ComparisonOperator: "GreaterThanOrEqualToThreshold" AlarmActions: - !Ref AlarmNotificationTopic # 用于接收告警通知的SNS主题 AlarmNotificationTopic: Type: AWS::SNS::Topic Properties: TopicName: "AlarmNotificationTopic"
模板关键点说明
RedrivePolicy:在SNS主题中配置该属性,指定重试次数(maxReceiveCount)和DLQ的ARN,实现重试失败后消息进入DLQ的逻辑- 告警指标选择:
NumberOfNotificationsRetried对应SNS重试次数,NumberOfMessagesSent对应DLQ新增消息数 - 统计规则:使用
Sum统计周期内的总量,Period设为300秒(5分钟),Threshold=1表示只要有1次触发就告警
内容的提问来源于stack exchange,提问作者Muhammad Muiz Ather
相关产品推荐
相关产品推荐

