

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

# 记录 Amazon Pi EventBridge pes 的性能
<a name="eb-pipes-logs"></a>

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

您可以选择以下 AWS 服务作为 Pip EventBridge es 将记录传送到的*日志目的地*：
+ CloudWatch 日志

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

  使用 CloudWatch 日志将您使用的所有系统、应用程序和 AWS 服务的日志集中到一个高度可扩展的服务中。有关更多信息，请参阅 *Amazon 日志用户指南中的使用日志组和 CloudWatch 日志*[流](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。
+ Firehose 流日志

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

  Amazon Data Firehose 是一项完全托管的服务，用于将实时流数据传送到目的地，例如某些 AWS 服务以及受支持的第三方服务提供商拥有的任何自定义 HTTP 终端节点或 HTTP 终端节点。有关更多信息，请参阅《Amazon Data Firehose User Guide》**中的 [Creating an Amazon Data Firehose delivery stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)。
+ Amazon S3 日志

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

  Amazon S3 是一项对象存储服务，提供行业领先的可扩展性、数据可用性、安全性和性能。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的[在 Amazon S3 中上传、下载和使用对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-downloading-objects.html)。

## Amazon Pi EventBridge pes 日志的工作原理
<a name="eb-pipes-logs-overview"></a>

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

可以在管道源和目标上配置事件批次的大小。有关更多信息，请参阅 [Amazon Pip EventBridge es 批处理和并发](eb-pipes-batching-concurrency.md)。

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

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

您可以通过以下方式自定义 EventBridge 发送到所选日志目标的记录：
+ 您可以指定*日志级别，该级别*决定了 EventBridge 将记录发送到所选日志目标的执行步骤。有关更多信息，请参阅 [指定 EventBridge 管道日志级别](#eb-pipes-logs-level)。
+ 您可以指定 Pip EventBridge es 是否在相关的执行步骤的记录中包含执行数据。这些数据包括：
  + 事件批次的有效负载
  + 发送到 AWS 浓缩服务或目标服务的请求
  +  AWS 浓缩服务或目标服务返回的响应

  有关更多信息，请参阅 [在 Pip EventBridge es 日志中包含执行数据](#eb-pipes-logs-execution-data)。

## 指定 EventBridge 管道日志级别
<a name="eb-pipes-logs-level"></a>

您可以指定将记录 EventBridge 发送到所选日志目标的执行步骤的类型。

从以下详情级别中进行选择，将其包含在日志记录中。日志级别适用于为管道指定的所有日志目标。每个日志级别都包含之前日志级别的执行步骤。
+ **OFF** — EventBridge 不向任何指定的日志目标发送任何记录。这是默认设置。
+ **ERROR**- EventBridge 将与管道执行期间生成的错误相关的所有记录发送到指定的日志目的地。
+ **INFO** — EventBridge 将与错误相关的所有记录以及管道执行期间执行的选择其他步骤发送到指定的日志目的地。
+ **TRACE** — EventBridge 将管道执行中任何步骤中生成的所有记录发送到指定的日志目的地。

在 EventBridge 控制台中， CloudWatch 默认选择日志作为日志目标，`ERROR`日志级别也是如此。因此，默认情况下，Pip EventBridge es 会创建一个新的 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 |  |  |  | 

## 在 Pip EventBridge es 日志中包含执行数据
<a name="eb-pipes-logs-execution-data"></a>

您可以为指定 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 管道执行步骤](eb-pipes-logs-execution-steps.md)。

### 截断 Pipes 日志记录中的 EventBridge 执行数据
<a name="eb-pipes-logs-execution-data-truncation"></a>

如果您选择在管道的日志记录中 EventBridge 包含执行数据，则记录可能会超过 256 KB 的大小限制。为防止出现这种情况，请按以下顺序 EventBridge自动截断执行数据字段。 EventBridge 在继续截断下一个字段之前，会完全截断每个字段。 EventBridge 只需从数据字符串末尾删除字符即可截断字段数据；不会尝试根据数据重要性进行截断，截断会使 JSON 格式失效。
+ `payload`
+ `awsRequest`
+ `awsResponse`

 EventBridge 如果在事件中截断字段，则该`truncatedFields`字段将包含被截断的数据字段的列表。

## Pip EventBridge es 日志记录中的错误报告
<a name="eb-pipes-logs-errors"></a>

EventBridge 还包括表示故障状态的管道执行步骤中的错误数据（如果有）。这些步骤包括：
+ `ExecutionThrottled`
+ `ExecutionTimeout`
+ `ExecutionFailed`
+ `ExecutionPartiallyFailed`
+ `EnrichmentTransformationFailed`
+ `EnrichmentInvocationFailed`
+ `EnrichmentStageFailed`
+ `TargetTransformationFailed`
+ `TargetInvocationFailed`
+ `TargetInvocationPartiallyFailed`
+ `TargetStageFailed`
+ `TargetStagePartiallyFailed`

# EventBridge 管道执行步骤
<a name="eb-pipes-logs-execution-steps"></a>

了解管道执行步骤的流程，可以帮助您使用日志对管道的性能进行故障排除或调试。

管道*执行*是管道接收并传递到富集或目标的一个事件或一批事件。如果启用，则会在处理事件批处理时为其执行的每个执行步骤 EventBridge 生成一条日志记录。

整体来看，执行包含两个*阶段* 或一系列步骤：富集和目标。每个阶段都由转换和调用步骤组成。

成功执行管道的主要步骤遵循以下流程：
+ 管道执行开始。
+ 如果您为事件指定了富集，执行将进入富集阶段。如果您未指定富集，执行将进入目标阶段。

  在富集阶段，管道会执行您指定的任何转换，然后调用富集。
+ 在目标阶段，管道会执行您指定的任何转换，然后调用目标。

  如果您未指定转换或目标，执行会跳过目标阶段。
+ 管道执行成功完成。

下图演示了这个流程。分支路径以虚线表示。

![\[一种管道执行，包括扩充阶段和目标阶段，其中均含转换和调用步骤。\]](http://docs.aws.amazon.com/zh_cn/eventbridge/latest/userguide/images/pipes-logging-overview_eventbridge_architecture.svg)


下图展示了管道执行流程的详细视图，包含所有可能的执行步骤。同样，分支路径以虚线表示。

有关管道执行步骤的完整列表，请参阅[指定 EventBridge 管道日志级别](eb-pipes-logs.md#eb-pipes-logs-level)。

![\[管道执行流程，包括所有阶段和步骤以及所有可能的结果。\]](http://docs.aws.amazon.com/zh_cn/eventbridge/latest/userguide/images/pipes-logging-detailed_eventbridge_architecture.svg)


请注意，目标调用可能会导致批次部分失败。有关更多信息，请参阅 [批处理行为](eb-pipes-batching-concurrency.md#pipes-batching)。

# EventBridge 管道日志架构参考
<a name="eb-pipes-logs-schema"></a>

以下参考详细介绍了 Pip EventBridge es 日志记录的架构。

每条日志记录代表一个管道执行步骤，如果已将管道源和目标配置为批处理，最多可包含 10,000 个事件。

有关更多信息，请参阅 [记录 Amazon Pi EventBridge pes 的性能](eb-pipes-logs.md)。

```
{
    "executionId": "guid",
    "timestamp": "date_time",
    "messageType": "execution_step",
    "resourceArn": "arn:aws:pipes:region:account:pipe/pipe-name",
    "logLevel": "TRACE | INFO | ERROR",
    "payload": "{}",
    "awsRequest": "{}"
    "awsResponse":"{}"
    "truncatedFields": ["awsRequest","awsResponse","payload"],
    "error": {
        "httpStatusCode": code,
        "message": "error_message",
        "details": "",
        "awsService": "service_name",
        "requestId": "service_request_id"
    }
}
```

**executionId**  <a name="pipe-log-schema-execution-id"></a>
管道执行的 ID。  
管道执行是管道接收并传递到富集或目标的一个事件或一批事件。有关更多信息，请参阅 [Amazon Pi EventBridge pes 日志的工作原理](eb-pipes-logs.md#eb-pipes-logs-overview)。

**timestamp**  <a name="pipe-log-schema-timestamp"></a>
发出日志事件的日期和时间。  
单位：毫秒

**messageType**  <a name="pipe-log-schema-message-type"></a>
生成记录的管道执行步骤。  
有关管道执行步骤的更多信息，请参阅 [EventBridge 管道执行步骤](eb-pipes-logs-execution-steps.md)。

**resourceArn**  <a name="pipe-log-schema-resource-arn"></a>
管道的 Amazon 资源名称 (ARN)。

**logLevel**  <a name="pipe-log-schema-loglevel"></a>
为管道日志指定的详情级别。  
*有效值*：`ERROR` \$1 `INFO` \$1 `TRACE`  
有关更多信息，请参阅 [指定 EventBridge 管道日志级别](eb-pipes-logs.md#eb-pipes-logs-level)。

**payload**  <a name="pipe-log-schema-payload"></a>
管道正在处理的事件批次的内容。  
EventBridge 仅当您已指定在该管道的日志中包含执行数据时，才包含此字段。有关更多信息，请参阅 [在 Pip EventBridge es 日志中包含执行数据](eb-pipes-logs.md#eb-pipes-logs-execution-data)。  
这些字段可能包含敏感信息。 EventBridge 在记录期间不尝试编辑这些字段的内容。
有关更多信息，请参阅 [在 Pip EventBridge es 日志中包含执行数据](eb-pipes-logs.md#eb-pipes-logs-execution-data)。

**awsRequest**  <a name="pipe-log-schema-aws-request"></a>
发送到富集或目标服务的 JSON 格式的请求 对于发送到 API 目标的请求，表示发送到该端点的 HTTP 请求。  
EventBridge 仅当您已指定在该管道的日志中包含执行数据时，才包含此字段。有关更多信息，请参阅 [在 Pip EventBridge es 日志中包含执行数据](eb-pipes-logs.md#eb-pipes-logs-execution-data)。  
这些字段可能包含敏感信息。 EventBridge 在记录期间不尝试编辑这些字段的内容。
有关更多信息，请参阅 [在 Pip EventBridge es 日志中包含执行数据](eb-pipes-logs.md#eb-pipes-logs-execution-data)。

**awsResponse**  <a name="pipe-log-schema-aws-response"></a>
富集或目标以 JSON 格式返回的响应。对于发送到 API 目标的请求，表示从端点返回的 HTTP 响应，不是 API 目标服务本身返回的响应  
EventBridge 仅当您已指定在该管道的日志中包含执行数据时，才包含此字段。有关更多信息，请参阅 [在 Pip EventBridge es 日志中包含执行数据](eb-pipes-logs.md#eb-pipes-logs-execution-data)。  
这些字段可能包含敏感信息。 EventBridge 在记录期间不尝试编辑这些字段的内容。
有关更多信息，请参阅 [在 Pip EventBridge es 日志中包含执行数据](eb-pipes-logs.md#eb-pipes-logs-execution-data)。

**truncatedFields**  <a name="pipe-log-schema-truncated-fields"></a>
为了使记录保持在 256 KB 大小限制以下，所有执行数据字段的列表都 EventBridge 已被截断。  
如果 EventBridge 不必截断任何执行数据字段，则此字段存在，但是。`null`  
有关更多信息，请参阅 [截断 Pipes 日志记录中的 EventBridge 执行数据](eb-pipes-logs.md#eb-pipes-logs-execution-data-truncation)。

**错误**  <a name="pipe-log-schema-error"></a>
包含在此管道执行步骤中生成的任何错误的相关信息。  
如果在此管道执行步骤中未生成错误，该字段仍存在，但为 `null`。    
**httpStatusCode**  <a name="pipe-log-schema-http-status-code"></a>
调用的服务返回的 HTTP 状态代码。  
**message**  <a name="pipe-log-schema-message"></a>
调用的服务返回的错误消息。  
**详细信息**  <a name="pipe-log-schema-details"></a>
调用的服务返回的任何详细错误信息。  
**awsService**  <a name="pipe-log-schema-aws-service"></a>
被调用服务的名称。  
**requestId**  <a name="pipe-log-schema-request-id"></a>
来自被调用服务的此请求的 ID。

# 使用亚马逊日志记录和监控亚马逊 EventBridge CloudWatch 管道
<a name="eb-pipes-monitoring"></a>

您可以使用记录 EventBridge 管道调用， CloudTrail 并使用指标监控管道的运行状况。 CloudWatch 

## CloudWatch 指标
<a name="pipes-monitoring-cloudwatch"></a>

EventBridge Pipes CloudWatch 每分钟向 Amazon 发送从管道执行被限制到成功调用目标的所有指标。


| 指标 | 说明 | Dimensions | 单位 | 
| --- | --- | --- | --- | 
|  `Concurrency`  |  管道的并发执行数。  | AwsAccountId | 无 | 
| `Duration` |  管道执行所花费的时长。  | PipeName | 毫秒 | 
|  `EventCount`  |  管道已处理的事件数。  | PipeName | 无 | 
|  `EventSize`  |  调用管道的事件的有效负载的大小。  | PipeName | 字节 | 
|  `ExecutionThrottled`  |  管道执行被限制的次数。  如果没有限制执行，此值将为 `0`。   | AwsAccountId, PipeName | 无 | 
|  `ExecutionTimeout`  |  在完成执行之前，管道中有多少次执行超时。  如果没有执行超时，此值将为 `0`。   | PipeName | 无 | 
|  `ExecutionFailed`  |  管道中有多少次执行失败。  如果没有执行失败，此值将为 `0`。   | PipeName | 无 | 
|  `ExecutionPartiallyFailed`  |  管道中有多少次执行部分失败。  如果没有执行部分失败，此值将为 `0`。   | PipeName | 无 | 
|  `EnrichmentStageDuration`  |  富集阶段花了多长时间完成。  | PipeName | 毫秒 | 
|  `EnrichmentStageFailed`  |  管道的富集阶段有多少次执行失败。  如果没有执行失败，此值将为 `0`。   | PipeName | 无 | 
| `Invocations` |  调用总数。  | AwsAccountId, PipeName | 无 | 
|  `TargetStageDuration`  |  目标阶段花了多长时间完成。  | PipeName | 毫秒 | 
|  `TargetStageFailed`  |  管道的目标阶段有多少次执行失败。  如果没有执行失败，此值将为 `0`。   | PipeName | 无 | 
| `TargetStagePartiallyFailed` | 管道的目标阶段有多少次执行部分失败。  如果没有目标阶段执行部分失败，此值将为 `0`。   | PipeName | 无 | 
| `TargetStageSkipped` | 管道目标阶段跳过的执行次数（例如，由于富集返回的有效负载为空）。  | PipeName | 计数 | 

## CloudWatch 指标的维度
<a name="pipes-monitoring-cloudwatch-dimensions"></a>

CloudWatch 指标具有*维*度或可排序的属性，如下所示。


|  维度  |  说明  | 
| --- | --- | 
|  AwsAccountId  |  按账户 ID 筛选可用指标。  | 
|  PipeName  |  按管道名称筛选可用指标。  | 