Kafka 事件來源映射記錄 - AWS Lambda

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

Kafka 事件來源映射記錄

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

此功能僅適用於 Kafka 事件來源映射,以及佈建模式

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

記錄的運作方式

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

事件來源映射會與您的 Lambda 函數重複使用相同的日誌目的地。請確定 Lambda 函數的執行角色具有必要的記錄許可。

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

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

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

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

設定 記錄

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

設定記錄 (主控台)

設定記錄 (主控台)
  1. 開啟 Lambda 主控台中的函數頁面

  2. 選擇您的函數名稱。

  3. 執行以下任意一項:

    • 若要新增新的 Kafka 觸發條件,請在函數概觀下,選擇新增觸發條件

    • 若要修改現有的 Kafka 觸發條件,請選擇觸發條件,然後選擇編輯

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

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

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

設定記錄 (AWS CLI)

使用 記錄建立事件來源映射

下列範例會使用記錄組態建立 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"}'

更新記錄組態

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

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

Kafka 事件來源映射系統日誌的記錄格式

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

WARN 日誌記錄

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 日誌記錄

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 日誌記錄

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 } }