Skip to main content
本集成接收 Amazon EventBridge 事件,可以通过 API destination 直接推送,也可以经 SNS 主题转发。CloudWatch 告警、GuardDuty、Security Hub、AWS Health、Amazon Inspector、AWS Config 和 DevOps Guru 事件会按各自的告警或发现合并,并在来源状态恢复时自动恢复;其他事件每条生成一条告警。

在 Flashduty On-call


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

使用专属集成

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

使用共享集成

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

在 AWS EventBridge 中配置


以下两种推送方式任选其一。

方式一:API destination

步骤1:在 API destinations 中创建 Connection

  1. 登录您的 AWS 控制台,检索 Amazon Eventbridge 产品,并进入对应产品控制台。
  2. 在左侧导航栏选择 Integration=>API destinations。
  3. 点击 connection,并点击 Create connection 创建链接。
drawing
  1. 在 Connection details 部分中,Connection name 处填写 Flashduty。
  2. 在 Authorization 部分中,Destination type 选择 Other。
  3. Authorization type 选择 API Key。
  4. API key name 填写 Flashduty,Value 填写集成推送地址的 integration_key。
  5. 点击 Create 保存即可。
drawing

步骤2:创建 API destination

  1. 回到 API destinations 界面,并点击 Create API destination。
drawing
  1. 在 API destination detail 编辑界面填写相关信息,Name 填写 Flashduty 。
  2. API destination endpoint 填写集成的推送地址(当前页面填写集成名称,保存后即可生成地址)。
  3. HTTP method 选择 POST。
  4. Connection type 选择 Use an existing connection 并在列表中选择步骤1添加的 Flashduty Connection。
  5. 点击 Create 保存即可。
drawing

步骤3:在 EventBridge Rules 中使用步骤2创建的 API destination

  1. 登录您的 AWS 控制台,检索 Amazon Eventbridge 产品,并进入对应产品控制台。
  2. 在左侧导航栏选择 Buses=>Rules,创建或编辑已有的规则。
  3. 此处省略其他配置。
  4. 在 Target types 处,选择 EventBridge API destination 作为目标类型。
  5. 在 API destination 中选择 Use an existing API destination,并在下拉框中选择步骤2创建的 Flashduty API destination。
  6. Next 后按需配置,并保存即可。
drawing

方式二:SNS 主题

  1. 按 AWS CloudWatch 集成 中的步骤创建 SNS 主题和 HTTPS 订阅,Endpoint 填写本集成的推送地址,等待订阅状态变为 Confirmed
  2. 在 EventBridge 规则的 Target types 中选择 AWS service,目标选择 SNS topic 和该主题
  3. 不要为目标配置 Input transformer,保持发送完整事件
Flashduty 只访问 sns.<region>.amazonaws.com、sns.<region>.amazonaws.com.cn 和 sns.<region>.amazonaws.eu 上的订阅确认地址。

事件规则


在规则中填写事件模式,例如:
不要在规则中过滤掉恢复状态,否则告警无法自动恢复。例如只匹配 "state": {"value": ["ALARM"]}、"newEvaluationResult": {"complianceType": ["NON_COMPLIANT"]}、Security Hub 的 "findings": {"Workflow": {"Status": ["NEW"]}} 或 Inspector 的 "status": ["ACTIVE"],都会丢掉恢复事件。
AWS Health 事件发往事件发生的区域,全局服务的事件在 us-east-1。需要在每个关心的区域创建规则。

Alert Key 和恢复


  • 同一来源的后续事件(GuardDuty 的重复发现、Security Hub 的更新、Health 事件的进展)会合并到原告警
  • 一个 Security Hub 事件包含多个发现时,每个发现生成一条告警
  • 缺少上表 Alert Key 字段的事件会被拒绝(HTTP 400)
  • GuardDuty 归档发现时不发送事件,告警需要手动关闭

告警等级


EventBridge 事件没有统一的等级字段,所有事件都以 Warning 触发,与接入以来的行为一致。来源自带的等级保留在标签中,可以在 告警处理 中按标签改写等级: CloudWatch 告警可以在 Alarm description 中写 flashduty_severity: critical(可选 critical、warning、info)指定等级,写法与 AWS CloudWatch 集成 相同。

标题和标签


  • 告警标题为 来源::detail-type,例如 aws.guardduty::GuardDuty Finding
  • 所有事件都带 source、region、account、check(detail-type)、detail(事件 detail 的 JSON)和 resources 标签
  • summary 标签是可读摘要:有专门处理的来源取发现或告警的标题;其他事件依次取 CloudTrail 的 eventSource eventName、RDS 的 SourceIdentifier Message、ECS 的 group stoppedReason、EC2 的 instance-id state
  • 有专门处理的来源还会附加 finding_id、finding_arn、event_arn、config_rule_name、insight_id 等来源字段,resource 取受影响资源(DevOps Guru 洞察没有该标签)

排查问题


  • API destination 调用失败:确认 endpoint 是完整推送地址且包含 integration_key,HTTP method 为 POST
  • SNS 订阅停留在 Pending confirmation:确认订阅的是本集成的推送地址,然后在 SNS 控制台执行 Request confirmation
  • 告警没有恢复:检查规则的事件模式是否过滤掉了恢复状态,以及目标是否配置了 Input transformer
  • 同一发现产生多条告警:确认事件来自上表中的来源且 detail-type 未被改写