

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

# Amazon MSK 記錄
<a name="msk-logging"></a>

您可以將 Apache Kafka 代理程式日誌交付至下列一或多個目的地類型：Amazon CloudWatch Logs、Amazon S3、Amazon Data Firehose。您也可以使用 記錄 Amazon MSK API 呼叫 AWS CloudTrail。

**注意**  
中介裝置日誌可在 MSK Standard 和 Express 中介裝置上使用。

## 代理程式日誌
<a name="broker-logs"></a>

代理程式日誌可讓您針對 Apache Kafka 應用程式進行疑難排解，並分析與 MSK 叢集的通訊。您可以設定新的或現有的 MSK 叢集，將 INFO 層級代理程式日誌交付至下列一或多個類型的目的地資源：CloudWatch 日誌群組、S3 儲存貯體、Firehose 交付串流。然後，您可以透過 Firehose 將日誌資料從交付串流交付至 OpenSearch Service。

您必須先建立目的地資源，才能設定叢集向其傳遞代理程式日誌。如果這些目的地資源尚未存在，Amazon MSK 不會為您建立它們。如需有關這三種目標資源類型以及如何建立這些資源的資訊，請參閱下列文件：
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)
+ [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html)
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html)

### 所需的許可
<a name="broker-logs-perms"></a>

若要設定 Amazon MSK 代理程式日誌的目的地，您用於 Amazon MSK 動作的 IAM 身分必須具有 [AWS 受管政策：AmazonMSKFullAccess](security-iam-awsmanpol-AmazonMSKFullAccess.md) 政策中所述的許可。

若要將代理程式日誌串流到 S3 儲存貯體，您也需要 `s3:PutBucketPolicy` 許可。如需有關 S3 儲存貯體政策的資訊，請參閱《Amazon S3 使用者指南》中的[如何新增 S3 儲存貯體政策？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/add-bucket-policy.html) 如需有關 IAM 政策的一般資訊，請參閱《IAM 使用者指南》的[存取管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)。

### 使用 SSE-KMS 儲存貯體所需的 KMS 金鑰政策
<a name="sse-kms-buckets"></a>

如果您使用受管金鑰 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 管理主控台
<a name="broker-logs-console"></a>

如果您要建立新叢集，請在**監控**區段中尋找**代理程式日誌交付**標題。您可以指定想要 Amazon MSK 向其傳遞代理程式日誌的目標。

針對現有叢集，請從您的叢集清單中選擇叢集，然後選擇**屬性**索引標籤。向下捲動到**日誌交付**區段，然後選擇其**編輯**按鈕。您可以指定想要 Amazon MSK 向其傳遞代理程式日誌的目標。

### 使用 設定代理程式日誌 AWS CLI
<a name="broker-logs-cli"></a>

當您使用 `create-cluster` 或 `update-monitoring` 命令時，可以選擇指定 `logging-info` 參數，並向其傳遞 JSON 結構，如以下範例所示。在此 JSON 中，所有三種目標類型都是選用的。

**注意**  
您必須在 Firehose 串流`true`上將`LogDeliveryEnabled`標籤設定為 ，才能設定日誌交付。為 CloudWatch 日誌 AWS 建立的服務連結角色使用此標籤授予所有 Firehose 交付串流的許可。如果您移除此標籤，服務連結角色將無法將日誌交付至 Firehose 串流。若要查看顯示服務連結角色包含許可的 IAM 政策範例，請參閱《*Amazon CloudWatch 使用者指南》中的*[用於資源許可的 IAM 角色](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-infrastructure-V2-Firehose.html)。

```
{
  "BrokerLogs": {
    "S3": {
      "Bucket": "amzn-s3-demo-bucket",
      "Prefix": "ExamplePrefix",
      "Enabled": true
    },
    "Firehose": {
      "DeliveryStream": "ExampleDeliveryStreamName",
      "Enabled": true
    },
    "CloudWatchLogs": {
      "Enabled": true,
      "LogGroup": "ExampleLogGroupName"
    }
  }
}
```

### 使用 API 設定代理程式日誌
<a name="broker-logs-api"></a>

您可以指定要傳遞給 [CreateCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster) 或 [UpdateMonitoring](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-monitoring.html#UpdateMonitoring) 操作之 JSON 的可選 `loggingInfo` 結構。

**注意**  
根據預設，啟用代理程式日誌後，Amazon MSK 會記錄 `INFO` 層級日誌至指定的目的地。不過，對於標準代理程式，Apache Kafka 2.4.X 和更新版本的使用者可以將代理程式日誌層級動態設定為任何 [log4j 日誌層級](https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html)。如需有關動態設定代理程式日誌層級的相關資訊，請參閱 [KIP-412: Extend Admin API to support dynamic application log levels](https://cwiki.apache.org/confluence/display/KAFKA/KIP-412%3A+Extend+Admin+API+to+support+dynamic+application+log+levels)。如果您動態將日誌層級設定為 `DEBUG`或 `TRACE`，我們建議您使用 Amazon S3 或 Firehose 作為日誌目的地。如果您使用 CloudWatch Logs 為日誌目的地，並且動態啟用 `DEBUG` 或 `TRACE` 層級日誌，Amazon MSK 可能會持續傳遞日誌樣本。這可能會大幅影響代理程式效能，只有在 `INFO` 日誌層級不夠詳細、無法判斷問題的根本原因時才應該使用方法。