为 Amazon EventBridge 事件总线配置日志 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

为 Amazon EventBridge 事件总线配置日志

您可以配置 EventBridge 为发送详细说明事件总线如何处理事件的日志,以帮助进行故障排除和调试。

您可以选择以下 Amazon 服务作为日志目的地,将指定事件总线的日志 EventBridge 传送到这些目的地:

  • Amazon CloudWatch 日志

    EventBridge 将日志传送到指定的 CloudWatch 日志日志组。

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

  • Amazon Data Firehose

    EventBridge 将日志传送到 Firehose 传输流。

    Amazon Data Firehose 是一项完全托管的服务,用于将实时流数据传送到目的地,例如某些 Amazon 服务以及受支持的第三方服务提供商拥有的任何自定义 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 中上传、下载和使用对象

事件总线的日志工作原理

EventBridge 生成以下内容的日志:

EventBridge 不记录仅与托管规则匹配的事件。

发送到每个选定日志目标的日志数据相同。

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

  • 您可以指定日志级别,该级别决定了向所选目标 EventBridge发送日志的步骤。有关更多信息,请参阅 指定事件总线日志级别

  • 您可以指定在相关时是否 EventBridge 包含更精细的信息,包括:

    • 事件详细信息

    • 目标输入信息

    • 目标请求信息

    有关更多信息,请参阅 在事件总线日志中包含详细数据

日志传送注意事项

在为事件总线配置日志记录时,请记住以下注意事项:

  • 事件总线日志记录是尽最大努力提供的。大多数对事件总线进行正确配置以进行日志记录的请求都会生成传送的日志记录。不能保证事件总线记录的完整性和及时性。

  • 在某些情况下,传送事件总线日志记录本身会生成事件,然后将其发送到 EventBridge,这可能会导致日志记录传输中断。因此, EventBridge 不记录以下事件:

    • Amazon KMS Decrypt以及使用客户托管密钥加密的日志记录传送到日志目标时生成GenerateDataKey的事件。

    • PutRecordBatchFirehose 中的事件,由事件总线日志的传送生成。

  • 对于 S3 日志目标,不建议指定 EventBridge启用事件通知的目标存储桶,因为这可能会导致日志传输中断。

记录加密

发送日志时, EventBridge 使用为事件总线指定的 KMS 密钥对每条日志记录的detailerror部分进行加密。记录一经传送,就会被解密,然后使用为日志目标指定的 KMS 密钥重新加密。

有关更多信息,请参阅 加密事件总线日志

指定事件总线日志记录权限

要启用来自事件总线的日志记录,必须授予从该总线发送日志的权限。 EventBridge 添加向事件总线授AllowVendedLogDeliveryForResource予权限的策略。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceLevelAccessForLogDelivery", "Effect": "Allow", "Action": [ "events:AllowVendedLogDeliveryForResource" ], "Resource": "arn:aws:events:region:account:event-bus/bus-name*" } ] }

有关更多信息,请参阅《CloudWatch 日志用户指南》中的服务特定权限

指定事件总线日志级别

您可以指定 EventBridge 记录到所选日志目标的事件处理步骤的类型。

从以下详细级别中进行选择,以包含在日志中。日志级别适用于为事件总线指定的所有日志目标。每个日志级别都包含先前日志级别的步骤。

  • OFF — EventBridge 不发送任何日志。这是默认值。

  • ERROR- EventBridge 发送与事件处理和目标交付期间生成的错误相关的所有日志。

  • 信息- EventBridge 发送与错误相关的所有日志,以及事件处理期间执行的主要步骤。

  • TRACE — EventBridge 发送在事件处理的所有步骤中生成的所有日志。

下表列出了每个日志级别中包含的事件处理步骤。

步骤 跟踪 信息 错误 关闭

已摄取的事件

x x

事件摄取失败

x x x

活动已收到

x

调用尝试已开始

x

调用尝试永久失败

x x x

调用尝试可重试失败

x x x

调用尝试成功

x

调用尝试已被限制

x x x

调用 DLQ

x x x

调用失败

x x x

调用已开始

x x

调用成功

x x

调用油门已启动

x x x

没有匹配的规则

x x

规则已匹配

x x

规则匹配已开始

x

在事件总线日志中包含详细数据

您可以为指定 EventBridge ,以便在其生成的日志中包含更精细的信息。这些数据可用于故障排除和调试。如果选择此选项,则会将此数据 EventBridge 包含在所有指定日志目标的相关记录中。

详细信息包括以下字段:

  • event_detail:活动本身的细节。

  • target_input:请求 EventBridge 发送到目标。

  • target_properties:

截断事件总线日志中的数据

由于日志目标限制,日志记录 EventBridge 限制在 1 MB 以内。如果日志记录超过此限制,则按以下顺序删除以下字段来 EventBridge 截断该记录:

  • target_input

  • target_properties

  • target_response_body

EventBridge 如有必要,将该event_detail字段从以下日志记录类型中删除:

  • EVENT_RECEIVED

  • EVENT_INGESTED

  • EVENT_INGESTED_FAILED

  • RULE_MATCH_STARTED

如果需要截断,则 EventBridge 删除整个字段。

EventBridge 如果在事件中截断字段,则该dropped_fields字段将包含已删除的数据字段的列表。

在事件总线日志中报告错误

EventBridge 在表示故障状态的步骤中还包括错误数据(如果有)。这些步骤包括:

  • EVENT_INGEST_FAILURE

  • INVOCATION_THROTTLE_START

  • INVOCATION_ATTEMPT_THROTTLE

  • INVOCATION_ATTEMPT_RETRYABLE_FAILURE

  • INVOCATION_ATTEMPT_PERMANENT_FAILURE

  • INVOCATION_FAILURE

  • INVOCATION_DLQ