从与 EventBridge 直接集成的 APM 摄取警报
下面的主题显示了从与 Amazon EventBridge 直接集成的应用程序性能监控(APM)工具向 AWS 事件检测及响应服务发送警报的过程。有关与 Amazon EventBridge 直接集成的 APM 的完整列表,请参阅 Amazon EventBridge integrations
您可以部署所提供的 CloudFormation 模板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"]设置为所需的值。
先决条件步骤:
-
打开 EventBridge 控制台。在集成菜单下,选择合作伙伴事件源。
-
在 Amazon EventBridge 合作伙伴框中搜索您的 APM。
-
选择设置,然后按照提供的说明进行操作。
-
注意:最后一步是在控制台中为合作伙伴事件源选择与事件总线关联。选择此选项会自动创建与合作伙伴事件源同名的合作伙伴事件总线(名称必须匹配)。
-
-
复制合作伙伴事件总线或源的名称。部署 CloudFormation 模板时,事件总线或源用作名为
PartnerEventBusNameParameter的参数。-
New Relic 的示例:
aws.partner/newrelic.com/1234567/source_name
-
-
部署 CloudFormation 模板时,复制合作伙伴事件总线或源的第一部分以输入到
PartnerEventBusPrefixParameter中。-
New Relic 的示例为
aws.partner/newrelic.com
-
-
-
下载并编辑 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 模板:
-
在您的目标账户和区域中打开 CloudFormation 控制台。
-
依次选择“创建堆栈”、“使用新资源(标准)”
-
选择选择现有模板、上传模板文件、选择文件,然后上传您本地保存的 CloudFormation 模板。
-
-
指定堆栈详细信息:
-
输入堆栈名称(示例:
NewRelicIntegrationForIDR)。 -
指定在完成先决条件期间获得的参数值。
-
APMNameParameter(示例:
NewRelic) -
PartnerEventBusNameParameter(示例:
aws.partner/newrelic.com/1234567/source_name) -
PartnerEventBusPrefixParameter(示例:
aws.partner/newrelic.com)
-
-
选择下一步。
-
-
配置堆栈选项:
-
滚动到页面底部,然后选中支持 CloudFormation 使用自定义名称创建 IAM 资源的框。
-
-
审核和创建:
-
验证参数值是否正确配置,然后选择提交。
-
-
CloudFormation 堆栈会部署必要的资源,来将您的 APM 事件集成到 AWS 事件检测及响应服务。等待堆栈状态显示
CREATE_COMPLETE。 -
假设示例值已输入到 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 发送测试有效载荷来测试集成:
-
导航到 Lambda 控制台并选择
APMNameParameter-AWSIncidentDetectionResponse-Lambda-Transform函数。选择监控选项卡。 -
在指标图表中寻找成功的调用。
-
选择查看 Amazon CloudWatch Logs,以检查日志流中是否有您的测试有效载荷或是否存在任何错误。
与 AWS 事件检测及响应服务共享您的事件总线 ARN
-
打开 Amazon EventBridge 控制台。选择事件总线。
-
复制作为 CloudFormation 堆栈一部分创建的自定义事件总线的 ARN(示例:
arn:aws:events:us-east-1:123456789123:event-bus/NewRelic-AWSIncidentDetectionResponse-EventBus)。-
将此 ARN 添加到警报摄取问卷 - 概述的“第三方 APM 警报”部分中的“EventBridge 事件总线 ARN”字段。
-
-
在接入过程中,AWS 事件检测及响应服务会在此自定义事件总线上创建托管式 EventBridge 规则,以摄取您的 APM 警报。
选项 2:手动集成
为 AWS 事件检测及响应服务需要从中摄取警报的每个 AWS 账户和 AWS 区域完成以下步骤。AWS 事件检测及响应服务建议在与您的应用程序资源相同的 AWS 账户和区域中设置警报,以便更快地识别和调查受影响的资源。事件和支持案例是在从中收到 APM 警报的 AWS 账户上开立的。
-
通过将 APM 设置为 Amazon EventBridge 合作伙伴事件源,创建 EventBridge 合作伙伴事件总线(例如
aws.partner/apm_name/integrationName)。有关将 APM 设置为事件源的指南,请参阅使用 Amazon EventBridge 接收来自 SaaS 合作伙伴的事件。 -
执行下列操作之一:
-
(建议)创建名为
$YourApmName-AWSIncidentDetectionResponse-EventBus的 EventBridge 自定义事件总线。 -
(替代)使用默认的 EventBridge 事件总线,而非自定义事件总线。
AWS 事件检测及响应服务将通过
AWSServiceRoleForHealth_EventProcessorSLR,在自定义或默认事件总线上安装托管式规则 (AWSHealthEventProcessorEventSource-DO-NOT-DELETE)。规则源将是自定义或默认事件总线,规则目标将是 AWS 事件检测及响应服务,而规则将与用于摄取第三方 APM 事件的模式相匹配。 -
-
创建名为
$YourApmName-AWSIncidentDetectionResponse-LambdaFunction的 Lambda 函数来转换您的合作伙伴事件总线事件。转换后的事件将与托管式规则AWSHealthEventProcessorEventSource-DO-NOT-DELETE相匹配。-
转换后的事件包括唯一的 AWS 事件检测及响应服务标识符,并将事件的来源和详细信息类型设置为所需的值。这样,转换后的 JSON 有效载荷结构就会与托管式规则模式相匹配。
-
将 Lambda 函数的目标设置为在步骤 2 中创建的自定义事件总线(建议)或设置为您的默认事件总线。
-
-
创建 EventBridge 规则,并定义与您要推送到 AWS 事件检测及响应服务的事件列表相匹配的事件模式。规则的源是您在步骤 1 中创建的合作伙伴事件总线 (
aws.partner/apm_name/integrationName)。规则的目标是您在步骤 3 中创建的 Lambda 函数 ([apm_name]-AWSIncidentDetectionResponse-LambdaFunction)。有关定义 EventBridge 规则的指南,请参阅 Amazon EventBridge 规则。
有关如何使用 AWS 事件检测及响应服务手动设置合作伙伴事件总线集成的分步示例,请参阅集成来自 Datadog 和 Splunk 的通知。