本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
您可以將 Apache Kafka 代理程式日誌交付至下列一或多個目的地類型:Amazon CloudWatch Logs、Amazon S3、Amazon Data Firehose。您也可以使用 記錄 Amazon MSK API 呼叫 AWS CloudTrail。
注意
代理程式日誌不適用於 Express 代理程式。
代理程式日誌
代理程式日誌可讓您針對 Apache Kafka 應用程式進行疑難排解,並分析與 MSK 叢集的通訊。您可以設定新的或現有的 MSK 叢集,將 INFO 層級代理程式日誌交付至下列一或多個類型的目的地資源:CloudWatch 日誌群組、S3 儲存貯體、Firehose 交付串流。然後,您可以透過 Firehose 將日誌資料從交付串流交付至 OpenSearch Service。您必須先建立目的地資源,才能設定叢集向其傳遞代理程式日誌。如果這些目的地資源尚未存在,Amazon MSK 不會為您建立它們。如需有關這三種目標資源類型以及如何建立這些資源的資訊,請參閱下列文件:
所需的許可
若要設定 Amazon MSK 代理程式日誌的目的地,您用於 Amazon MSK 動作的 IAM 身分必須具有 AWS 受管政策:AmazonMSKFullAccess 政策中所述的許可。
若要將代理程式日誌串流到 S3 儲存貯體,您也需要 s3:PutBucketPolicy
許可。如需有關 S3 儲存貯體政策的資訊,請參閱《Amazon S3 使用者指南》中的如何新增 S3 儲存貯體政策? 如需有關 IAM 政策的一般資訊,請參閱《IAM 使用者指南》的存取管理。
使用 SSE-KMS 儲存貯體所需的 KMS 金鑰政策
如果您使用受管金鑰 AWS KMS(SSE-KMS) 搭配客戶受管金鑰為 S3 儲存貯體啟用伺服器端加密,請將以下內容新增至 KMS 金鑰的金鑰政策,以便 Amazon MSK 可以將代理程式檔案寫入儲存貯體。
{
"Sid": "Allow Amazon MSK to use the key.",
"Effect": "Allow",
"Principal": {
"Service": [
"delivery.logs.amazonaws.com"
]
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
}
使用 設定代理程式日誌 AWS Management Console
如果您要建立新叢集,請在監控區段中尋找代理程式日誌交付標題。您可以指定想要 Amazon MSK 向其傳遞代理程式日誌的目標。
針對現有叢集,請從您的叢集清單中選擇叢集,然後選擇屬性索引標籤。向下捲動到日誌交付區段,然後選擇其編輯按鈕。您可以指定想要 Amazon MSK 向其傳遞代理程式日誌的目標。
使用 設定代理程式日誌 AWS CLI
當您使用 create-cluster
或 update-monitoring
命令時,可以選擇指定 logging-info
參數,並向其傳遞 JSON 結構,如以下範例所示。在此 JSON 中,所有三種目標類型都是選用的。
{
"BrokerLogs": {
"S3": {
"Bucket": "amzn-s3-demo-bucket",
"Prefix": "ExamplePrefix",
"Enabled": true
},
"Firehose": {
"DeliveryStream": "ExampleDeliveryStreamName",
"Enabled": true
},
"CloudWatchLogs": {
"Enabled": true,
"LogGroup": "ExampleLogGroupName"
}
}
}
使用 API 設定代理程式日誌
您可以指定要傳遞給 CreateCluster 或 UpdateMonitoring 操作之 JSON 的可選 loggingInfo
結構。
注意
根據預設,啟用代理程式日誌後,Amazon MSK 會記錄 INFO
層級日誌至指定的目的地。然而,Apache Kafka 2.4.X 及更高版本的使用者可以將代理程式日誌層級動態設定為任何 log4j 日誌層級DEBUG
或 TRACE
,我們建議您使用 Amazon S3 或 Firehose 作為日誌目的地。如果您使用 CloudWatch Logs 為日誌目的地,並且動態啟用 DEBUG
或 TRACE
層級日誌,Amazon MSK 可能會持續傳遞日誌樣本。這可能會大幅影響代理程式效能,只有在 INFO
日誌層級不夠詳細、無法判斷問題的根本原因時才應該使用方法。