为 Amazon EventBridge 事件总线配置日志
您可以配置 EventBridge,使其发送详细说明事件总线如何处理事件的日志,以帮助进行故障排除和调试。
您可以选择以下 AWS 服务作为日志目标,EventBridge 会向这些目标发送指定事件总线的日志:
Amazon CloudWatch Logs
EventBridge 将日志传送到指定的 CloudWatch Logs 日志组。
使用 CloudWatch Logs,可将所有系统、应用程序和 AWS 服务中的日志集中在高度可扩展的单个服务中。有关更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的使用日志组和日志流。
Amazon Data 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 中上传、下载和使用对象。
事件总线如何进行日志记录
EventBridge 为以下内容生成日志:
-
任何与事件总线上的规则相匹配的 AWS 服务事件
-
通过以下方法传送的任何事件(无论事件是否成功摄取或与任何规则相匹配):
EventBridge 不会记录仅匹配托管规则的事件。
发送到每个选定日志目标的日志数据是相同的。
您可以通过以下方式自定义 EventBridge 发送到选定目标的日志:
您可以指定日志级别,该级别决定了 EventBridge 向选定目标发送日志的步骤。有关更多信息,请参阅 指定事件总线日志级别。
-
您可以指定 EventBridge 在相关时是否包含更精细的信息,包括:
事件详细信息
目标输入信息
目标请求信息
有关更多信息,请参阅 在事件总线日志中包含详细数据。
日志传送注意事项
配置事件总线的日志记录时,请记住以下注意事项:
事件总线日志记录会以最大努力进行传送。针对已正确配置了日志记录的事件总线的大多数请求会导致传送一条日志记录。因此不能保证事件总线日志记录的完整性和即时性。
在某些情况下,事件总线日志记录的传送过程本身会生成事件并发送到 EventBridge,这可能导致日志记录传送中断。因此,EventBridge 不会记录以下事件:
当使用客户自主管理型密钥加密的日志记录传送到日志目标时,生成的 AWS KMS
Decrypt和GenerateDataKey事件。事件总线日志传送过程中,Firehose 中生成的
PutRecordBatch事件。
-
对于 S3 日志目标,不建议指定启用了 EventBridge 事件通知功能的目标存储桶,因为这可能会导致日志传送中断。
日志加密
发送日志时,EventBridge 会使用为事件总线指定的 KMS 密钥对每条日志记录的 detail 和 error 部分进行加密。记录一经传送,就会被解密,然后使用为日志目标指定的 KMS 密钥重新加密。
有关更多信息,请参阅 对事件总线日志进行加密。
指定事件总线日志记录权限
要启用事件总线的日志记录功能,您必须授予 EventBridge 从该总线发送日志的权限。向事件总线添加授予 AllowVendedLogDeliveryForResource 权限的策略。
有关更多信息,请参阅《CloudWatch Logs 用户指南》中的服务特定的权限。
指定事件总线日志级别
您可以指定由 EventBridge 记录到选定日志目标的事件处理步骤类型。
从以下详细级别中选择要包含在日志中的内容。日志级别适用于为事件总线指定的所有日志目标。每个日志级别都包含之前日志级别的步骤。
-
关闭 – EventBridge 不发送任何日志。这是默认值。
-
错误 – EventBridge 发送事件处理和目标传达过程中产生的错误相关日志。
-
信息 – EventBridge 发送错误相关日志以及事件处理过程中执行的主要步骤。
-
跟踪 – EventBridge 发送事件处理所有步骤中生成的任何日志。
下表列出了每个日志级别包含的事件处理步骤。
| 步骤 | 跟踪 | 信息 | 错误 | 关闭 |
|---|---|---|---|---|
|
事件摄取 |
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 指定,在其生成的日志中包含更精细的信息。这些数据对于故障排除和调试很有用。如果您选择此选项,EventBridge 会将此数据包含在所有指定日志目标的相关记录中。
详细信息包含以下字段:
event_detail:事件本身的详细信息。target_input:EventBridge 向目标发送的请求。target_properties:
截断事件总线日志中的数据
由于日志目标限制,EventBridge 将日志记录限制为 1 MB。如果日志记录超过此限制,EventBridge 将按以下顺序移除以下字段,从而截断该记录:
-
target_input -
target_properties -
target_response_body
如有必要,EventBridge 会从以下日志记录类型中移除 event_detail 字段:
EVENT_RECEIVEDEVENT_INGESTEDEVENT_INGESTED_FAILEDRULE_MATCH_STARTED
如果需要截断,EventBridge 会移除整个字段。
如果 EventBridge 确实截断了事件中的字段,dropped_fields 字段将包含被移除的数据字段列表。
事件总线日志中报告的错误
EventBridge 还会在表示故障状态的步骤中包含错误数据(如有)。这些步骤包括:
EVENT_INGEST_FAILUREINVOCATION_THROTTLE_STARTINVOCATION_ATTEMPT_THROTTLEINVOCATION_ATTEMPT_RETRYABLE_FAILUREINVOCATION_ATTEMPT_PERMANENT_FAILUREINVOCATION_FAILUREINVOCATION_DLQ