View a markdown version of this page

Amazon MSK 日志记录 - Amazon Managed Streaming for Apache Kafka

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

Amazon MSK 日志记录

亚马逊 MSK 支持标准和快捷经纪人上的经纪人和授权者日志。您可以将这些日志传输到以下一种或多种目标类型:亚马逊 CloudWatch 日志、亚马逊 S3、亚马逊数据 Firehose。您也可以使用记录亚马逊 MSK API 调用 AWS CloudTrail。

在配置集群以向其传送日志之前,必须创建目标资源。如果尚不存在这些目标资源,Amazon MSK 也不会为您创建。有关这三种类型的目标资源以及如何创建这些资源的信息,请参阅以下文档:

代理日志

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

使用配置代理日志 AWS CLI

使用 create-clusterupdate-monitoring 命令时,您可以选择指定 logging-info 参数并将类似如下的 JSON 结构传递给该参数。在此 JSON 中,所有三种目标类型都是可选的。

注意

要设置日志传输,必须在 Firehose 流上将 LogDeliveryEnabled 标签设置为 true。为 CloudWatch 日志 AWS 创建的服务相关角色使用此标签为所有 Firehose 交付流授予权限。如果移除此标签,服务相关角色将无法向 Firehose 流传送日志。要查看显示服务相关角色所包含权限的 IAM 策略示例,请参阅亚马逊 CloudWatch 用户指南中用于获取资源权限的 IAM 角色。

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

使用 API 配置代理日志

您可以在传递给CreateClusterUpdateMonitoring操作的 JSON 中指定可选loggingInfo结构。

注意

默认情况下,启用代理日志记录后,Amazon MSK 会将 INFO 级别日志记录到指定目标。但是,对于标准和快捷经纪商,Apache Kafka 2.4.X及更高版本的用户可以将代理日志级别动态设置为任何 log4j日志级别。有关动态设置代理日志级别的信息,请参阅 KIP-412:扩展 Admin API 以支持动态应用程序日志级别。如果您将日志级别动态设置为 DEBUGTRACE,我们建议使用 Amazon S3 或 Firehose 作为日志目标。如果您使用 CloudWatch 日志作为日志目标并动态启用DEBUGTRACE级别日志记录,Amazon MSK 可能会持续提供日志样本。这可能会对代理性能带来显著影响,因此只有在 INFO 日志级别不够详细,无法确定问题的根本原因时才应使用。

授权方日志

授权者日志捕获您的 MSK 集群做出的授权决策。您可以使用这些日志来监控客户端访问模式并解决授权问题。您可以配置 MSK 集群以将授权者日志传送到以下一种或多种类型的目标资源: CloudWatch 日志组、S3 存储桶、Firehose 传输流。

使用配置授权者日志 AWS CLI

使用 create-clusterupdate-monitoring 命令时,您可以选择指定 logging-info 参数并将类似如下的 JSON 结构传递给该参数。在此 JSON 中,所有三种目标类型都是可选的。

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

使用 API 配置授权者日志

您可以在传递给CreateClusterUpdateMonitoring操作的 JSON 中指定可选loggingInfo结构。

所需的权限

要为亚马逊 MSK 日志配置目的地,您用于亚马逊 MSK 操作的 IAM 身份必须具有策略中描述的AWS 管理策略: AmazonMSKFullAccess权限。

要将日志流式传输到 S3 存储桶,您还需要s3:PutBucketPolicy权限。有关 S3 存储桶策略的信息,请参阅《Amazon S3 用户指南》中的如何添加 S3 存储桶策略?。有关 IAM 策略的一般信息,请参阅《IAM 用户指南》中的访问管理

用于存储 SSE-KMS 桶的必需 KMS 密钥策略

如果您使用带有客户 AWS KMS管理密钥的-managed keys (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 管理控制台

如果您正在创建新集群,请在 “监控” 部分中查找 “代理日志传输” 或 “授权者日志传输” 标题。您可以指定希望 Amazon MSK 将日志传送到的目的地。

对于现有集群,请从集群列表中选择集群,然后选择属性选项卡。向下滚动到日志传送部分,然后选择其编辑按钮。您可以指定希望 Amazon MSK 将日志传送到的目的地。