Skip to main content
本集成接收 Amazon SNS 主题的 HTTPS 订阅推送。CloudWatch 告警的触发和恢复对应同一条 Flashduty 告警;同一主题上的 Cost Anomaly Detection、Amazon Managed Service for Prometheus(AMP)告警管理器和 AWS Budgets 通知也会被识别。

在 Flashduty On-call


您可通过以下2种方式,获取一个集成推送地址,任选其一即可。

使用专属集成

当您不需要将告警事件路由到不同的协作空间,优先选择此方式,更简单。
  1. 进入 Flashduty 控制台,选择 协作空间,进入某个空间的详情页面
  2. 选择 配置 → 集成数据 → 专属集成,点击 新增一个集成,进入添加集成页面
  3. 选择 AWS CLoudWatch 集成,点击 保存,生成卡片。
  4. 点击生成的卡片,可以查看到 推送地址,复制备用,完成。

使用共享集成

当您需要根据告警事件的 Payload 信息,将告警路由到不同的协作空间,优先选择此方式。
  1. 进入 Flashduty 控制台,选择 集成中心=>告警事件,进入集成选择页面。
  2. 选择 AWS CloudWatch 集成:
    • 集成名称:为当前集成定义一个名称。
  3. 配置默认路由,并选择对应的协作空间(集成创建后可以前往 路由 进行更多路由规则的配置)。
  4. 点击 保存 后,复制当前页面的新生成的 推送地址 备用。
  5. 完成。

在 AWS 中配置


  1. 登录 AWS 控制台,打开 Simple Notification Service
  2. 进入 Topics 页面,单击 Create topic,Type 选择 Standard,名称填写 Flashduty,单击 Create topic
  3. 进入 Subscriptions 页面,单击 Create subscription
  4. Topic ARN 选择 Flashduty,Protocol 选择 HTTPS,Endpoint 填写集成的推送地址
  5. 单击 Create subscription
drawing
  1. 回到 Subscriptions 页面,订阅状态变为 Confirmed 说明 Flashduty 已完成订阅确认
  2. 打开 CloudWatch 控制台,进入 All alarms,创建或编辑告警
  3. 在 Notification 这一步,为 In alarm、OK 和 Insufficient data 三种状态都选择 SNS 主题 Flashduty。不选 OK 时告警不会自动恢复
drawing
  1. 回到集成列表,显示最新事件时间即说明已收到事件
订阅可以开启或关闭 Raw message delivery,两种方式都能接收。关闭时 SNS 会附带 Subject,可作为纯文本消息的告警标题,建议保持关闭。

其他发布到 SNS 的 AWS 服务


把下列服务的通知发送到同一个 Flashduty 主题即可,无需额外配置。

Cost Anomaly Detection

在 Billing and Cost Management → Cost Anomaly Detection → Alert subscriptions 中创建订阅,Alerting frequency 选择 Individual alerts,Alert recipients 选择 SNS 主题 Flashduty。SNS 主题的访问策略需要允许 costalerts.amazonaws.com 发布消息。 每个异常(anomalyId)对应一条告警,同一异常的后续通知会合并。Cost Anomaly Detection 不发送异常结束通知,告警需要手动关闭。

Amazon Managed Service for Prometheus

在工作区的告警管理器配置中添加 sns_configs 接收器,指向 Flashduty 主题。请使用 AWS 文档 Configure alert manager to send messages to Amazon SNS as JSON 中的 default_template,让消息以 JSON 发送:
  • 每条告警按 fingerprint 生成 Alert Key,firing 触发,resolved 恢复
  • severity 标签为 critical、warning、info 时分别对应 Critical、Warning、Info,其余为 Warning
  • 标签和注解会成为 Flashduty 标签,标题取 summary 注解,没有时取 alertname
未使用该模板时,告警管理器默认发送纯文本,Flashduty 会按下文「其他消息」处理,无法自动恢复。模板不会转义标签值中的双引号,含双引号的消息同样按纯文本处理。

AWS Budgets

在预算的 Alert 设置中选择 Amazon SNS Alerts,填写 Flashduty 主题的 ARN。SNS 主题的访问策略需要允许 budgets.amazonaws.com 发布消息。Budgets 通知是纯文本,按下文「其他消息」处理。

其他消息

无法识别的消息(纯文本或其他 JSON)每条生成一条 Warning 告警:Alert Key 为 SNS MessageId,SNS 重试同一条消息时不会重复建告警;标题取 SNS Subject,没有时取消息第一行。这类告警不会自动恢复。

Alert Key


CloudWatch 告警的 ALARM、INSUFFICIENT_DATA、OK 使用同一个 Alert Key,告警名称、阈值、原因和描述的变化不会拆分告警。缺少 AlarmArn 的 CloudWatch 告警消息会被拒绝。

状态和告警等级


CloudWatch 告警没有等级字段,ALARM 和 INSUFFICIENT_DATA 默认对应 Warning,OK 对应恢复。如需指定等级,在告警的 Alarm description 中写入 flashduty_severity: critical(可选 critical、warning、info,不区分大小写,= 或 : 均可)。例如:

标签


  • 单指标告警:trigger_metric_name、trigger_namespace、trigger_dimensions_<维度名> 等,维度含 InstanceId 时写入 resource
  • 指标数学和异常检测告警:每个查询写入 trigger_expression_<查询 ID>、trigger_metric_<查询 ID>(命名空间/指标名)和 trigger_dimensions_<维度名>;metric 和 check 取返回数据的查询
  • 复合告警:alarm_rule 和 triggering_children(触发的子告警 ARN)
  • 所有告警:alarm_arn、aws_account_id、region、new_state_value、old_state_value

排查问题


  • 订阅停留在 Pending confirmation:确认 Endpoint 是完整推送地址且包含 integration_key,然后在 SNS 控制台对该订阅执行 Request confirmation
  • Flashduty 返回 SubscribeURL 错误:Flashduty 只访问 sns.<region>.amazonaws.com、sns.<region>.amazonaws.com.cn 和 sns.<region>.amazonaws.eu 上的订阅确认地址,请确认订阅请求来自 Amazon SNS
  • 告警没有恢复:确认 CloudWatch 告警的 OK 状态也通知了 Flashduty 主题
  • 需要在 EventBridge 中统一处理:GuardDuty、Security Hub、AWS Health 等事件请使用 AWS EventBridge 集成