You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 12:37:38