记录 Amazon EventBridge 管道的性能 - Amazon EventBridge

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

记录 Amazon EventBridge 管道的性能

EventBridge Pipes 日志记录允许您让 EventBridge Pipes 向支持的 AWS 服务发送记录,详细介绍管道性能。使用日志可深入了解管道的执行性能,并帮助进行故障排除和调试。

您可以选择以下 AWS 服务作为日志目标,EventBridge Pipes 会将记录传送到此处:

  • CloudWatch Logs

    EventBridge 可将日志记录传送到指定的 CloudWatch Logs 日志组。

    使用 CloudWatch Logs,可将所有系统、应用程序和 AWS 服务中的日志集中在高度可扩展的单个服务中。有关更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的使用日志组和日志流

  • Firehose 流日志

    EventBridge 将日志记录传送到 Firehose 传送流。

    Amazon Data Firehose 是一项完全托管的服务,用于将实时流数据传送到目标位置,例如某些 AWS 服务以及任何自定义 HTTP 端点,或支持的第三方服务提供商拥有的 HTTP 端点。有关更多信息,请参阅《Amazon Data Firehose User Guide》中的 Creating an Amazon Data Firehose delivery stream

  • Amazon S3 日志

    EventBridge 将日志记录作为 Amazon S3 对象传送到指定桶。

    Amazon S3 是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的在 Amazon S3 中上传、下载和使用对象

Amazon EventBridge Pipes 日志记录工作方式

管道执行是管道接收并传递到富集和/或目标的一个事件或一批事件。如果启用,EventBridge 会在处理事件批次时,为其执行的每个步骤生成一条日志记录。记录中包含的信息适用于事件批次,无论是单个事件还是最多 10,000 个事件。

可以在管道源和目标上配置事件批次的大小。有关更多信息,请参阅 Amazon EventBridge Pipes 批处理和并发

发送到每个日志目标的记录数据都是相同的。

如果配置了 Amazon CloudWatch Logs 目标,则传送到所有目标的日志记录限制均为 256kb。字段会根据需要被截断。

您可以通过以下方式自定义 EventBridge 发送到所选日志目标的记录:

  • 您可以指定日志级别,该级别决定了 EventBridge 向所选日志目标发送记录的执行步骤。有关更多信息,请参阅 指定 EventBridge Pipes 日志级别

  • 您可以指定对于相关的执行步骤,EventBridge Pipes 是否在记录中包含执行数据。这些数据包括:

    • 事件批次的有效负载

    • 发送到 AWS 富集或目标服务的请求

    • AWS 富集或目标服务返回的响应

    有关更多信息,请参阅 在 EventBridge Pipes 日志中包含执行数据

指定 EventBridge Pipes 日志级别

您可以指定执行步骤的类型,EventBridge 会向所选日志目标发送这些步骤的记录。

从以下详情级别中进行选择,将其包含在日志记录中。日志级别适用于为管道指定的所有日志目标。每个日志级别都包含之前日志级别的执行步骤。

  • 关闭 - EventBridge 不向任何指定的日志目标发送任何记录。这是默认设置。

  • 错误 - EventBridge 将与管道执行期间生成的错误相关的所有记录发送到指定的日志目的地。

  • 信息 - EventBridge 将与错误相关的所有记录,以及管道执行期间执行的其他步骤发送到指定的日志目的地。

  • 跟踪 - EventBridge 将管道执行期间的任何步骤生成的所有记录发送到指定的日志目的地。

在 EventBridge 控制台中,默认情况下 CloudWatch 日志被选为日志目的地,ERROR 日志级别也是如此。因此,默认情况下,EventBridge Pipes 会创建一个新的 CloudWatch 日志组,向该组发送包含 ERROR 级别详情的日志记录。以编程方式配置日志时,不会选择默认值。

下表列出了每个日志级别中包含的执行步骤。

步骤 跟踪 信息 错误 关闭

执行已失败

x x x

执行部分失败

x x x

执行已启动

x x

执行已成功

x x

执行受限

x x x

执行超时

x x x

富集调用失败

x x x

已跳过富集调用

x x

已启动富集调用

x

富集调用成功

x

进入富集阶段

x x

富集阶段失败

x x x

富集阶段成功

x x

富集转换失败

x x x

已启动富集转换

x

富集转换成功

x

目标调用失败

x x x

目标调用部分失败

x x x

已跳过目标调用

x

已启动目标调用

x

目标调用成功

x

进入目标阶段

x x

目标阶段失败

x x x

目标阶段部分失败

x x x

已跳过目标阶段

x

目标阶段成功

x x

目标转换失败

x x x

已启动目标转换

x

目标转换成功

x

在 EventBridge Pipes 日志中包含执行数据

您可以为 EventBridge 指定,在其生成的记录中包含执行数据。执行数据包括表示事件批次有效负载的字段,以及发送到富集和目标的请求和来自它们的响应。

执行数据对于故障排除和调试很有用。payload 字段包含批次中每个事件的实际内容,使您可以将单个事件与特定的管道执行关联起来。

如果您选择包含执行数据,为管道指定的所有日志目标都会包含。

重要

这些字段可能包含敏感信息。在日志记录期间,EventBridge 不会尝试编辑这些字段的内容。

如果包含执行数据,EventBridge 会将以下字段添加到相关记录中:

  • payload

    表示管道正在处理的事件批次的内容。

    在可能已更新事件批次内容的步骤中,EventBridge 会在生成的记录中包含 payload 字段。此操作包括以下步骤:

    • EXECUTION_STARTED

    • ENRICHMENT_TRANSFORMATION_SUCCEEDED

    • ENRICHMENT_STAGE_SUCCEEDED

    • TARGET_TRANSFORMATION_SUCCEEDED

    • TARGET_STAGE_SUCCEEDED

  • awsRequest

    表示作为 JSON 字符串发送到富集或目标的请求。对于发送到 API 目标的请求,表示发送到该端点的 HTTP 请求。

    EventBridge 在富集和目标的最后步骤生成的记录中包含 awsRequest 字段,也就是说,在 EventBridge 针对指定的富集或目标服务,已执行或尝试执行请求之后。此操作包括以下步骤:

    • ENRICHMENT_INVOCATION_FAILED

    • ENRICHMENT_INVOCATION_SUCCEEDED

    • TARGET_INVOCATION_FAILED

    • TARGET_INVOCATION_PARTIALLY_FAILED

    • TARGET_INVOCATION_SUCCEEDED

  • awsResponse

    表示富集或目标以 JSON 格式返回的响应。对于发送到 API 目标的请求,表示从端点返回的 HTTP 响应。

    awsRequest 一样,EventBridge 在富集和目标的最后步骤生成的记录中包含 awsResponse 字段,也就是说,在 EventBridge 针对指定的富集或目标服务执行或尝试执行请求,并收到响应之后。此操作包括以下步骤:

    • ENRICHMENT_INVOCATION_FAILED

    • ENRICHMENT_INVOCATION_SUCCEEDED

    • TARGET_INVOCATION_FAILED

    • TARGET_INVOCATION_PARTIALLY_FAILED

    • TARGET_INVOCATION_SUCCEEDED

有关管道执行步骤的讨论,请参阅 EventBridge Pipes 执行步骤

截断 EventBridge Pipes 日志记录中的执行数据

如果您选择让 EventBridge 在管道的日志记录中包含执行数据,记录可能会超过 256 KB 的大小限制。为了防止这种情况,EventBridge 会按以下顺序自动截断执行数据字段。EventBridge 会完全截断每个字段,然后再继续截断下一字段。EventBridge 截断字段数据时只会从数据字符串末尾删除字符;不会尝试根据数据重要性进行截断,并且截断会使 JSON 格式失效。

  • payload

  • awsRequest

  • awsResponse

如果 EventBridge 确实截断了事件中的字段,truncatedFields 字段将包含被截断的数据字段列表。

EventBridge Pipes 日志记录中报告的错误

EventBridge 还会在表示故障状态的管道执行步骤中包含错误数据(如有)。这些步骤包括:

  • ExecutionThrottled

  • ExecutionTimeout

  • ExecutionFailed

  • ExecutionPartiallyFailed

  • EnrichmentTransformationFailed

  • EnrichmentInvocationFailed

  • EnrichmentStageFailed

  • TargetTransformationFailed

  • TargetInvocationFailed

  • TargetInvocationPartiallyFailed

  • TargetStageFailed

  • TargetStagePartiallyFailed