

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

# Amazon MSK 日志记录
<a name="msk-logging"></a>

您可以将 Apache Kafka 代理日志传送到以下一种或多种目标类型：亚马逊日 CloudWatch 志、亚马逊 S3、Amazon Data Firehose。您也可以使用记录亚马逊 MSK API 调用。 AWS CloudTrail

**注意**  
MSK 标准和快递经纪商均提供经纪人日志。

## 代理日志
<a name="broker-logs"></a>

利用代理日志，您可以对 Apache Kafka 应用程序进行问题排查，并分析它们与 MSK 集群的通信。您可以将新的或现有 MSK 集群配置为将信息级别的代理日志传送到以下一种或多种目标资源： CloudWatch 日志组、S3 存储桶、Firehose 传输流。然后，您可以通过 Firehose 将传输流中的日志数据传送到 OpenSearch 服务。

在配置集群以向其传送代理日志之前，必须创建目标资源。如果尚不存在这些目标资源，Amazon MSK 也不会为您创建。有关这三种类型的目标资源以及如何创建这些资源的信息，请参阅以下文档：
+ [Amazon CloudWatch 日志](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 托管策略：Amazon A MSKFull ccess](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 流上将 `LogDeliveryEnabled` 标签设置为 `true`。为 CloudWatch 日志 AWS 创建的服务相关角色使用此标签来授予所有 Firehose 传输流的权限。如果移除此标签，服务相关角色将无法向 Firehose 流传送日志。要查看显示服务相关角色所包含权限的 IAM 策略示例，请参阅 [A *mazon 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>

您可以在 JSON 中指定传递给[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)操作的可选`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 日志作为日志目标，并且动态启用`DEBUG`或`TRACE`级别日志记录，Amazon MSK 可能会持续提供日志样本。这可能会对代理性能带来显著影响，因此只有在 `INFO` 日志级别不够详细，无法确定问题的根本原因时才应使用。