View a markdown version of this page

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

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

下面的主题显示了从与 Amazon EventBridge 直接集成的应用程序性能监控(APM)工具向 AWS 事件检测及响应服务发送警报的过程。有关与 Amazon EventBridge 直接集成的 APM 的完整列表,请参阅 Amazon EventBridge integrations

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

选项 1:使用 CloudFormation

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

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

  • 在 AWS 事件检测及响应服务需要摄取警报的每个 AWS 账户和区域中部署此 CloudFormation 模板。事件和支持案例是在从中收到 APM 警报的 AWS 账户上开立的。

  • 本文档以 New Relic 为例,但是 CloudFormation 模板可用于任何将 SaaS 与 Amazon EventBridge 集成的 APM。

  • 测试集成后,从 TransformLambdaFunction 中移除 logger.info() 语句,以防止有效载荷出现在 Amazon CloudWatch Logs 中。

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

  • 必须在 Amazon EventBridge 中设置合作伙伴事件源。有关将 APM 设置为事件源的说明,请参阅《Amazon EventBridge 用户指南》中的使用 Amazon EventBridge 从 SaaS 合作伙伴接收事件

  • 必须根据 APM 有效载荷中警报名称的 JSON 路径来修改模板中的 TransformLambdaFunction(Lambda 函数),以便将 ["detail"]["incident-detection-response-identifier"] 设置为所需的值。

先决条件步骤:

  1. 打开 EventBridge 控制台。在集成菜单下,选择合作伙伴事件源

    • 在 Amazon EventBridge 合作伙伴框中搜索您的 APM。

    • 选择设置,然后按照提供的说明进行操作。

      • 注意:最后一步是在控制台中为合作伙伴事件源选择与事件总线关联。选择此选项会自动创建与合作伙伴事件源同名的合作伙伴事件总线(名称必须匹配)。

    • 复制合作伙伴事件总线或源的名称。部署 CloudFormation 模板时,事件总线或源用作名为 PartnerEventBusNameParameter 的参数。

      • New Relic 的示例aws.partner/newrelic.com/1234567/source_name

    • 部署 CloudFormation 模板时,复制合作伙伴事件总线或源的第一部分以输入到 PartnerEventBusPrefixParameter 中。

      • New Relic 的示例为 aws.partner/newrelic.com

  2. 下载并编辑 CloudFormation 模板

    • 在模板中找到 TransformLambdaFunction

    • def lambda_handler(event, context) 下,将 event["detail"]["incident-detection-response-identifier"] 设置为 json 路径,在该路径中,警报名称出现在 APM 警报的 json 有效载荷中。每个 APM 都将有不同的路径。下面可以看到一些示例,但您的具体有效载荷可能会有所不同。

      • New Relic 示例:event["detail"]["incident-detection-response-identifier"] = event["detail"]["workflowName"]

      • Datadog 示例:event["detail"]["incident-detection-response-identifier"] = event["detail"]["meta"]["monitor"]["name"]

      • Splunk 示例:event["detail"]["incident-detection-response-identifier"] = event["detail"]["ruleName"]

    • 保存 CloudFormation 模板。

部署 CloudFormation 模板:

  1. 在您的目标账户和区域中打开 CloudFormation 控制台。

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

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

  3. 指定堆栈详细信息:

    • 输入堆栈名称(示例:NewRelicIntegrationForIDR)。

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

      • APMNameParameter(示例NewRelic

      • PartnerEventBusNameParameter(示例aws.partner/newrelic.com/1234567/source_name

      • PartnerEventBusPrefixParameter(示例aws.partner/newrelic.com

    • 选择下一步

  4. 配置堆栈选项:

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

  5. 审核和创建:

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

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

  7. 假设示例值已输入到 New Relic 的参数中并在 US-EAST-1 区域中运行,CloudFormation 堆栈会创建以下资源。

    • CustomEventBus:NewRelic-AWSIncidentDetectionResponse-EventBus

    • EventBridgeRule:aws.partner/newrelic.com/1234567/source_name|NewRelic-AWSIncidentDetectionResponse-EventBridgeRule

    • TransformLambdaExecutionRole:IDR-TransformLambdaExecutionRole-us-east-1

    • TransformLambdaFunction:NewRelic-AWSIncidentDetectionResponse-Lambda-Transform

    • TransformLambdaPermission:NewRelicIntegrationForIDR-TransformLambdaPermission-[random_string]

集成测试

部署堆栈后,通过从 APM 发送测试有效载荷来测试集成:

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

  2. 在指标图表中寻找成功的调用。

  3. 选择查看 Amazon CloudWatch Logs,以检查日志流中是否有您的测试有效载荷或是否存在任何错误。

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

  1. 打开 Amazon EventBridge 控制台。选择事件总线

  2. 复制作为 CloudFormation 堆栈一部分创建的自定义事件总线的 ARN(示例:arn:aws:events:us-east-1:123456789123:event-bus/NewRelic-AWSIncidentDetectionResponse-EventBus)。

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

选项 2:手动集成

该图显示了使用合作伙伴事件总线或其它 AWS 事件总线源进行集成的示例。

为 AWS 事件检测及响应服务需要从中摄取警报的每个 AWS 账户和 AWS 区域完成以下步骤。AWS 事件检测及响应服务建议在与您的应用程序资源相同的 AWS 账户和区域中设置警报,以便更快地识别和调查受影响的资源。事件和支持案例是在从中收到 APM 警报的 AWS 账户上开立的。

  1. 通过将 APM 设置为 Amazon EventBridge 合作伙伴事件源,创建 EventBridge 合作伙伴事件总线(例如 aws.partner/apm_name/integrationName)。有关将 APM 设置为事件源的指南,请参阅使用 Amazon EventBridge 接收来自 SaaS 合作伙伴的事件

  2. 执行下列操作之一:

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

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

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

  3. 创建名为 $YourApmName-AWSIncidentDetectionResponse-LambdaFunctionLambda 函数来转换您的合作伙伴事件总线事件。转换后的事件将与托管式规则 AWSHealthEventProcessorEventSource-DO-NOT-DELETE 相匹配。

    • 转换后的事件包括唯一的 AWS 事件检测及响应服务标识符,并将事件的来源和详细信息类型设置为所需的值。这样,转换后的 JSON 有效载荷结构就会与托管式规则模式相匹配。

    • 将 Lambda 函数的目标设置为在步骤 2 中创建的自定义事件总线(建议)或设置为您的默认事件总线。

  4. 创建 EventBridge 规则,并定义与您要推送到 AWS 事件检测及响应服务的事件列表相匹配的事件模式。规则的源是您在步骤 1 中创建的合作伙伴事件总线 (aws.partner/apm_name/integrationName)。规则的目标是您在步骤 3 中创建的 Lambda 函数 ([apm_name]-AWSIncidentDetectionResponse-LambdaFunction)。有关定义 EventBridge 规则的指南,请参阅 Amazon EventBridge 规则

有关如何使用 AWS 事件检测及响应服务手动设置合作伙伴事件总线集成的分步示例,请参阅集成来自 Datadog 和 Splunk 的通知