View a markdown version of this page

从与 Amazon SNS 直接集成的 APM 摄取警报 - AWS 事件检测及响应服务用户指南

从与 Amazon SNS 直接集成的 APM 摄取警报

如果您的 APM 支持向 Amazon SNS 主题发送警报,则您可以按照本指南将您的 APM 警报摄取到 AWS 事件检测及响应服务。

您可以部署所提供的 CloudFormation 模板或手动设置此集成。在设置集成之前,请确认在您的账户中创建了 AWS 服务相关角色(SLR)AWSServiceRoleForHealth_EventProcessor

选项 1:使用 CloudFormation

可以使用 CloudFormation 模板来简化创建集成基础设施的过程,该基础设施是从与 Amazon SNS 集成的 APM 中将警报摄取到 AWS 事件检测及响应服务所必需的。

注意
  • 通过此 CloudFormation 模板部署的资源(例如:Lambda 和 EventBridge)将产生额外费用。有关这些服务的定价的更多信息,请参阅 AWS 定价

  • 此 CloudFormation 模板必须部署在 AWS 事件检测及响应服务需要从中摄取警报的每个 AWS 账户和区域中。

  • 本文档中提供的示例适用于 Grafana,但是此模板可用于与 Amazon Simple Notification Service 直接集成的任何 APM。

  • 出于安全考虑,AWS 建议从 TransformLambdaFunction 中移除 logger.info() 语句,以防止将有效载荷记录在 Amazon CloudWatch Logs 中。

部署此 CloudFormation 模板的先决条件:

完成先决条件:

  1. 打开 Amazon SNS 控制台,然后选择“主题”。复制为接收来自 APM 的警报事件而创建的 SNS 主题的 ARN。

    • 示例:arn:aws:sns:eu-west-1:012345678912:<your-apm-name>-sns

  2. 下载并打开 CloudFormation 模板

    • 在模板中找到 TransformLambdaFunction

      • def lambda_handler(event, context) 下,将 event["detail"]["incident-detection-response-identifier"] 设置为 json 路径,在该路径中,警报名称出现在 SNS 记录的 json 有效载荷中。

        • 通过 SNS 发送到 TransformLambdaFunction 的任何事件都有一个父有效载荷结构,即 event["Records"][n]["Sns"]["Message"]。来自源的实际有效载荷来源(APM)封装在父结构内。

        • Grafana 的示例:event["Records"][n]["Sns"]["Message"]["alerts"][n]["labels"]["alertname"]

部署 CloudFormation 模板:

  1. 在您需要在其中设置集成的账户和区域中导航到 CloudFormation 控制台。

  2. 导航到 CloudFormation。

    • 依次选择“创建堆栈”、“使用新资源(标准)”

      • 选择“选择现有模板”、“上传模板文件”、“选择文件”,然后上传您本地保存的 CloudFormation 模板。

  3. 指定堆栈详细信息:

    • 输入堆栈名称(示例<your-apm-name>IntegrationForIDR

    • 指定在完成先决条件期间获得的参数值

      • APMNameParameter(示例Grafana

      • TriggerSNSParameter(示例arn:aws:sns:eu-west-1:012345678912:<your-apm-name>-sns

    • 选择下一步。

  4. 配置堆栈选项:

    • 滚动到页面底部,然后确认支持 CloudFormation 使用自定义名称创建 IAM 资源的复选框。

  5. 审核和创建:

    • 验证参数值是否正确配置,然后选择“提交”。

  6. CloudFormation 堆栈将部署必要的资源,来将您的 APM 事件集成到 AWS 事件检测及响应服务。等待直到 CloudFormation 堆栈状态变为 CREATE_COMPLETE

  7. 假设示例值已输入到 Grafana 的参数中并在 EU-WEST-1 区域中执行,CloudFormation 堆栈会创建以下资源。

    • CustomEventBus:Grafana-AWSIncidentDetectionResponse-EventBus

    • SNSSubscription:arn:aws:sns:eu-west-1:012345678912:grafana-sns:[random_string]

    • TransformLambdaExecutionRole:IDR-TransformLambdaExecutionRole-eu-west-1

    • TransformLambdaFunction:Grafana-AWSIncidentDetectionResponse-Lambda-Transform

    • TransformLambdaPermission:GrafanaIntegrationForIDR-TransformLambdaPermission-[random_string]

集成测试

成功部署 CloudFormation 堆栈后,您可以通过从 APM 发送测试有效载荷来验证集成。从 APM 发送测试有效载荷后:

  1. 导航到 Lambda 控制台并选择 APMNameParameter-AWSIncidentDetectionResponse-Lambda-Transform 函数。然后,选择“监控”选项卡。

  2. 应在指标图表中观察到成功的调用。

  3. 选择“查看 Amazon CloudWatch Logs”。您可以从日志流中的日志事件进行验证,以确认从 APM 发送的测试有效载荷是否存在,或者是否遇到了任何错误。

与 AWS 事件检测及响应服务共享您的事件总线 ARN

  1. 导航到 Amazon EventBridge 控制台。选择“事件总线”。

  2. 记录作为 CloudFormation 堆栈一部分部署的自定义事件总线的 ARN,例如:arn:aws:events:eu-west-1:012345678912:event-bus/Grafana-AWSIncidentDetectionResponse-EventBus

    • 警报摄取问卷 - 概述的“第三方 APM 警报”部分的“EventBridge 事件总线 ARN”字段中,将此自定义事件总线的 ARN 提供给 AWS 事件检测及响应服务。

  3. 在接入过程中,AWS 事件检测及响应服务将在此自定义事件总线上创建托管式 EventBridge 规则,以摄取您的 APM 警报。

选项 2:手动集成

该图显示了使用 Amazon SNS 进行集成的示例。
  1. 打开 Amazon SNS 控制台,并在 Amazon Simple Notification Service 控制台中创建一个 SNS 主题(名为 [apm_name]-sns),来接收来自 APM 的警报事件。记下所创建的 SNS 主题的 ARN。

  2. 执行下列操作之一:

    • (建议)创建名为 [apm_name]-AWSIncidentDetectionResponse-EventBus 的 EventBridge 自定义事件总线。

    • (替代)使用默认的 EventBridge 事件总线,而非自定义事件总线。

    AWS 事件检测及响应服务将通过 AWSServiceRoleForHealth_EventProcessor SLR,在自定义或默认事件总线上安装托管式规则 (AWSHealthEventProcessorEventSource-DO-NOT-DELETE)。规则源将是自定义或默认事件总线,规则目标将是 AWS 事件检测及响应服务,而规则将与用于摄取第三方 APM 事件的模式相匹配。

  3. 创建名为 $YourApmName-AWSIncidentDetectionResponse-LambdaFunctionLambda 函数以转换您的 SNS 有效载荷。

  4. 将 SNS 主题设置为 Lambda 函数 $YourApmName-AWSIncidentDetectionResponse-LambdaFunction 的触发器。

    • 在“添加触发器”页面中,搜索“SNS”。

    • 添加在步骤 1 中创建的专用 SNS 主题的 ARN。

    • 选择“添加”。

  5. 按照您的 APM 文档,为需要由 AWS 事件检测及响应服务摄取的 APM 有效载荷设置 SNS 目标。

AWS 事件检测及响应服务将通过 AWSServiceRoleForHealth_EventProcessor SLR,在自定义或默认事件总线上安装托管式规则 (AWSHealthEventProcessorEventSource-DO-NOT-DELETE)。规则源将是自定义或默认事件总线,规则目标将是 AWS 事件检测及响应服务,而规则将与用于摄取第三方 APM 事件的模式相匹配。