

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Kafka 事件來源映射記錄
<a name="esm-logging"></a>

您可以設定 Kafka 事件來源映射的系統層級記錄，以啟用和篩選 Lambda 事件輪詢器傳送至 CloudWatch 的系統日誌。

此功能僅適用於 Kafka 事件來源映射，以及[佈建模式](https://docs.aws.amazon.com/lambda/latest/dg/kafka-scaling-modes.html#kafka-provisioned-mode)。

對於使用記錄組態的事件來源映射，您也可以立即從主控台 **Lambda** > **其他資源** > **事件來源映射**頁面的**監控**索引標籤中，從預先建置的日誌查詢檢查系統日誌。

## 記錄的運作方式
<a name="esm-logging-overview"></a>

當您在事件來源映射中設定日誌層級的記錄組態時，Lambda 事件輪詢器會傳送對應的日誌 （事件來源映射系統日誌）。

事件來源映射會與您的 Lambda 函數重複使用相同的[日誌目的地](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-logs.html#configuring-log-destinations)。請確定 Lambda 函數的執行角色具有必要的記錄許可。

事件來源映射將擁有自己的日誌串流，其中日期和事件來源映射 UUID 作為日誌串流名稱，例如 `2020/01/01/12345678-1234-1234-1234-12345678901`。

對於事件來源映射系統日誌，您可以選擇下列日誌層級。


| 日誌層級 | Usage | 
| --- | --- | 
| DEBUG (大多數詳細資訊) | 事件來源處理進度的詳細資訊 | 
| INFO | 有關事件來源映射正常操作的訊息 | 
| WARN (最少詳細資訊) | 有關可能導致意外行為之潛在警告和錯誤的訊息 | 

當您選取日誌層級時，Lambda 事件輪詢器會在該層級和更低層級傳送日誌。例如，如果您將事件來源映射系統日誌層級設定為 INFO，事件輪詢器不會在 DEBUG 層級傳送日誌輸出。

## 設定 記錄
<a name="esm-logging-configure"></a>

您可以在建立或更新 Kafka 事件來源映射時設定記錄設定。

### 設定記錄 （主控台）
<a name="esm-logging-console"></a>

**設定記錄 （主控台）**

1. 開啟 Lambda 主控台中的[函數頁面](https://console.aws.amazon.com/lambda/home#/functions)。

1. 選擇您的函數名稱。

1. 執行以下任意一項：
   + 若要新增新的 Kafka 觸發條件，請在**函數概觀**下，選擇**新增觸發條件**。
   + 若要修改現有的 Kafka 觸發條件，請選擇觸發條件，然後選擇**編輯**。

1. 在**事件輪詢器組態**下，針對**佈建模式**，啟用**設定**核取方塊。此時會顯示**日誌層級**設定。

1.  按一下**日誌層級**下拉式清單，並選取事件來源映射的層級。

1. 選擇底部的**新增**或**儲存**，以建立或更新事件來源映射。

### 設定記錄 (AWS CLI)
<a name="esm-logging-cli"></a>

#### 使用 記錄建立事件來源映射
<a name="esm-logging-cli-create"></a>

下列範例會使用記錄組態建立 Amazon MSK 事件來源映射：

```
aws lambda create-event-source-mapping \
  --function-name my-kafka-function \
  --topics AWSKafkaTopic \
  --event-source-arn arn:aws:kafka:us-east-1:123456789012:cluster/my-cluster/abc123 \
  --starting-position LATEST \
  --provisioned-poller-config MinimumPollers=1,MaximumPollers=3 \
  --logging-config '{"SystemLogLevel":"DEBUG"}'
```

對於自我管理的 Kafka，請使用相同的語法：

```
aws lambda create-event-source-mapping \
  --function-name my-kafka-function \
  --topics AWSKafkaTopic \
  --self-managed-event-source '{"Endpoints":{"KAFKA_BOOTSTRAP_SERVERS":["abc.xyz.com:9092"]}}' \
  --starting-position LATEST \
  --provisioned-poller-config MinimumPollers=1,MaximumPollers=3 \
  --logging-config '{"SystemLogLevel":"DEBUG"}'
```

#### 更新記錄組態
<a name="esm-logging-cli-update"></a>

使用 `update-event-source-mapping`命令來新增或修改記錄組態：

```
aws lambda update-event-source-mapping \
  --uuid 12345678-1234-1234-1234-123456789012 \
  --logging-config '{"SystemLogLevel":"WARN"}'
```

## Kafka 事件來源映射系統日誌的記錄格式
<a name="esm-logging-record-format"></a>

當 Lambda 事件輪詢器傳送日誌時，每個日誌項目都包含一般事件來源映射中繼資料，以及事件特定內容。

### WARN 日誌記錄
<a name="esm-logging-warn-record"></a>

WARN 記錄包含來自事件輪詢器的錯誤或警告，並在事件發生時發出。例如：

```
{
    "eventType": "ESM_PROCESSING_EVENT",
    "timestamp": 1546347650000,
    "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:12345678-1234-1234-1234-123456789012",
    "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/tests-cluster/87654321-4321-4321-4321-876543221-s1",
    "eventProcessorId": "12345678-1234-1234-1234-123456789012/0",
    "logLevel": "WARN",
    "error": {
        "errorMessage": "Timeout expired while fetching topic metadata",
        "errorCode": "org.apache.kafka.common.errors.TimeoutException"
    }
}
```

### INFO 日誌記錄
<a name="esm-logging-info-record"></a>

INFO 記錄包含每個事件輪詢器中的 Kafka 取用者用戶端組態，並在建立或變更取用者時發出。例如：

```
{
    "eventType": "POLLER_STATUS_EVENT",
    "timestamp": 1546347660000,
    "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:12345678-1234-1234-1234-123456789012",
    "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/tests-cluster/87654321-4321-4321-4321-876543221-s1",
    "eventProcessorId": "12345678-1234-1234-1234-123456789012/0",
    "logLevel": "INFO",
    "kafkaEventSourceConnection": {
        "brokerEndpoints": "boot-abcd1234.c2.kafka-serverless.us-east-1.amazonaws.com:9098",
        "consumerId": "12345678-1234-1234-1234-123456789012-0",
        "topics": [
            "test"
        ],
        "consumerGroupId": "12345678-1234-1234-1234-123456789012",
        "securityProtocol": "SASL_SSL",
        "saslMechanism": "AWS_MSK_IAM",
        "totalPartitionCount": 2,
        "assignedPartitionCount": 2,
        "partitionsAssignmentGeneration": 5,
        "assignedPartitions": [
            "test-0",
            "test-1"
        ],
        "networkConfig": {
            "ipAddresses": [
                "10.100.141.1"
            ],
            "subnetCidrBlock": "10.100.128.0/20",
            "securityGroups": [
                "sg-abcdefabcdefabcdef"
            ]
        }
    }
}
```

### DEBUG 日誌記錄
<a name="esm-logging-debug-record"></a>

DEBUG 日誌包含事件來源映射處理中的 Kafka 偏移相關資訊，並且每分鐘發出偏移資訊。例如：

```
{
    "eventType": "KAFKA_STATUS_EVENT",
    "timestamp": 1546347670000,
    "resourceArn": "arn:aws:lambda:us-east-1:123456789012:event-source-mapping:12345678-1234-1234-1234-123456789012",
    "eventSourceArn": "arn:aws:kafka:us-east-1:123456789012:cluster/tests-cluster/87654321-4321-4321-4321-876543221-s1",
    "eventProcessorId": "12345678-1234-1234-1234-123456789012/0",
    "logLevel": "DEBUG",
    "kafkaPartitionOffsets": {
        "partition": "test-1",
        "endOffset": 5004,
        "consumedOffset": 5003,
        "processedOffset": 5003,
        "committedOffset": 5004
    }
}
```