

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

# 监控预置 Amazon MSK 集群
<a name="monitoring"></a>

Amazon MSK 可以通过多种方式帮助您监控预置 Amazon MSK 集群的状态。
+ 亚马逊 MSK 收集 Apache Kafka 指标并将其发送到亚马逊，供您 CloudWatch 查看。有关 Apache Kafka 指标（包括 Amazon MSK 提供的指标）的更多信息，请参阅 Apache Kafka 文档中的[监控](http://kafka.apache.org/documentation/#monitoring)。
+ 您也可以使用开源监控应用程序 Prometheus 来监控 MSK 集群。有关 Prometheus 的信息，请参阅 Prometheus 文档中的[概述](https://prometheus.io/docs/introduction/overview/)。要了解如何使用 Prometheus 监控您的预置 MSK 集群，请参阅[使用 Prometheus 监控预置 MSK 集群](open-monitoring.md)。
+ （仅限标准代理）当预置集群即将达到其存储容量限制时，Amazon MSK 自动向您发送存储容量警报，从而帮您监控磁盘存储容量。这些警报还就解决发现问题的最佳措施提供了建议。这有助于您在磁盘容量问题变得严重之前发现并快速解决它们。Amazon MSK 会自动将这些提醒发送到[亚马逊 MSK 控制台](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) EventBridge、 Health Dashboard亚马逊以及您 AWS 账户的电子邮件联系人。有关存储容量警报的更多信息，请参阅[使用 Amazon MSK 存储容量警报](cluster-alerts.md)。

**Topics**
+ [

# 使用查看亚马逊 MSK 指标 CloudWatch
](cloudwatch-metrics.md)
+ [

# 用于监控标准经纪商的 Amazon MSK 指标 CloudWatch
](metrics-details.md)
+ [

# 用于监控快递经纪商的 Amazon MSK 指标 CloudWatch
](metrics-details-express.md)
+ [

# 使用 Prometheus 监控预置 MSK 集群
](open-monitoring.md)
+ [

# 监控消费者延迟
](consumer-lag.md)
+ [

# 使用 Amazon MSK 存储容量警报
](cluster-alerts.md)

# 使用查看亚马逊 MSK 指标 CloudWatch
<a name="cloudwatch-metrics"></a>

您可以使用 CloudWatch 控制台、命令行或 CloudWatch API 监控 Amazon MSK 的指标。以下过程介绍如何使用这些不同的方式访问指标。

**使用 CloudWatch 控制台访问指标**

登录 AWS 管理控制台 并打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，选择**指标**。

1. 选择**所有指标**选项卡，然后选择 **AWS/Kafka**。

1. 要查看主题级别的指标，请选择 **Topic, Broker ID, Cluster Name (主题、代理 ID、集群名称)**；对于代理级别的指标，请选择 **Broker ID, Cluster Name (代理 ID、集群名称)**；对于集群级别的指标，请选择 **Cluster Name (集群名称)**。

1. （可选）在图表窗格中，选择统计数据和时间段，然后使用这些设置创建 CloudWatch 警报。

**要访问指标，请使用 AWS CLI**  
使用[列表指标和命令](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html)。[get-metric-statistics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-statistics.html)

**使用 CloudWatch CLI 访问指标**  
使用 [mon-list-metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/cli/cli-mon-list-metrics.html) 和 [mon-get-stats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/cli/cli-mon-get-stats.html) 命令。

**使用 CloudWatch API 访问指标**  
使用 [ListMetrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html) 和 [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html) 操作。

# 用于监控标准经纪商的 Amazon MSK 指标 CloudWatch
<a name="metrics-details"></a>

Amazon MSK 与亚马逊集成， CloudWatch 因此您可以收集、查看和分析您的 MSK 标准经纪商的 CloudWatch指标。系统会自动收集您为 MSK 预配置的集群配置的指标，并每隔 1 分钟推送 CloudWatch 一次。您可以将预置 MSK 集群的监控级别设置为以下级别之一：`DEFAULT`、`PER_BROKER`、`PER_TOPIC_PER_BROKER` 或 `PER_TOPIC_PER_PARTITION`。以下部分中的表显示了在每个监控级别开始提供的所有指标。

**注意**  
在 3.6.0 及更高版本中，一些用于 CloudWatch 监控的 Amazon MSK 指标的名称已更改。请使用新名称来监控这些指标。对于名称已更改的指标，下表显示了 3.6.0 及更高版本中使用的名称，随后是 2.8.2.tiered 版本中使用的名称。

`DEFAULT` 级别指标免费。[Amazon 定价页面中描述了其他指标的 CloudWatch定价](https://aws.amazon.com/cloudwatch/pricing/)。

## `DEFAULT` 级别监控
<a name="default-metrics"></a>

下表中描述的指标在 `DEFAULT` 监控级别可用。这些指标是免费的。


| Name | 可见时间 | Dimensions | 说明 | 
| --- | --- | --- | --- | 
| ActiveControllerCount | 在集群进入 ACTIVE 状态后。 | 集群名称 | 在任何给定时间，每个集群只能有一个控制器处于活动状态。 | 
| BurstBalance |  在集群进入 ACTIVE 状态后。  |  集群名称、代理 ID  |  输入-输出突增积分剩余余额用于集群中的 EBS 卷。用它来调查延迟或吞吐量下降的情况。 当卷的基准性能超过最大突增性能时，`BurstBalance` 不会对 EBS 卷进行报告。有关更多信息，请参阅 [I/O 积分和突增性能](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html#IOcredit)。  | 
| BytesInPerSec | 在创建主题后。 | 集群名称、代理 ID、主题 | 每秒从客户端接收的字节数。此指标适用于每个代理和每个主题。 | 
| BytesOutPerSec | 在创建主题后。 | 集群名称、代理 ID、主题 | 每秒发送到客户端的字节数。此指标适用于每个代理和每个主题。 | 
| ClientConnectionCount | 在集群进入 ACTIVE 状态后。 | 集群名称、代理 ID、客户端身份验证 | 经过身份验证的活跃客户端连接数量。 | 
| ConnectionCount | 在集群进入 ACTIVE 状态后。 |  集群名称，代理 ID  | 经过身份验证、未经过身份验证以及代理间的活跃连接数量。 | 
| CPUCreditBalance  |  在集群进入 ACTIVE 状态后。  |  集群名称，代理 ID  |  代理自启动后已累积获得的 CPU 积分数。在获得信用后，信用将在信用余额中累积；在花费信用后，将从信用余额中扣除信用。如果 CPU 积分余额用完，可能会对集群性能产生负面影响。您可以采取措施降低 CPU 负载。例如，您可以减少客户端请求的数量，或将代理类型更新为 M5 代理类型。  | 
| CpuIdle | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | CPU 空闲时间百分比。 | 
| CpuIoWait | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 待处理磁盘操作期间 CPU 空闲时间的百分比。 | 
| CpuSystem | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 内核空间中的 CPU 百分比。 | 
| CpuUser | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 用户空间中的 CPU 百分比。 | 
| GlobalPartitionCount | 在集群进入 ACTIVE 状态后。 | 集群名称 | 集群中所有主题的分区数量，不包括副本。由于GlobalPartitionCount不包括副本，因此这些PartitionCount值的总和可能高于 GlobalPartitionCount 主题的重复因子大于 1 的情况。 | 
| GlobalTopicCount | 在集群进入 ACTIVE 状态后。 | 集群名称 | 集群中所有代理的主题总数。 | 
| EstimatedMaxTimeLag\$1 | 在使用器组使用某个主题之后。 | 集群名称、使用器组、主题 | 预计耗尽 MaxOffsetLag 的时间（以秒为单位）。 | 
| KafkaAppLogsDiskUsed | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 用于应用程序日志的磁盘空间的百分比。 | 
| KafkaDataLogsDiskUsed（Cluster Name, Broker ID 维度） | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 用于数据日志的磁盘空间的百分比。 | 
| LeaderCount | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 每个代理的分区领导总数，不包括副本。 | 
| MaxOffsetLag\$1 | 在使用器组使用某个主题之后。 | 集群名称、使用器组、主题 | 主题中所有分区之间的最大偏移延迟。 | 
| MemoryBuffered | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的缓冲内存大小（以字节为单位）。 | 
| MemoryCached | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的缓存内存大小（以字节为单位）。 | 
| MemoryFree | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 可供代理使用的可用内存大小（以字节为单位）。 | 
| HeapMemoryAfterGC  |  在集群进入 ACTIVE 状态后。  |  集群名称，代理 ID  | 垃圾回收后使用的总堆内存百分比。 | 
| MemoryUsed | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理正在使用的内存大小（以字节为单位）。 | 
| MessagesInPerSec | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理每秒传入消息数。 | 
| NetworkRxDropped | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 丢弃的接收包的数量。 | 
| NetworkRxErrors | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的网络接收错误数。 | 
| NetworkRxPackets | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理收到的数据包的数量。 | 
| NetworkTxDropped | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 丢弃的传输包的数量。 | 
| NetworkTxErrors | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的网络传输错误的数量。 | 
| NetworkTxPackets | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理传输的数据包的数量。 | 
| OfflinePartitionsCount | 在集群进入 ACTIVE 状态后。 | 集群名称 | 集群中处于脱机状态的分区的总数。 | 
| PartitionCount | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 每个代理的主题分区总数，不包括副本。 | 
| ProduceTotalTimeMsMean | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 平均生成时间（以毫秒为单位）。 | 
| RequestBytesMean | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的请求字节的平均数量。 | 
| RequestTime | 在应用请求限制后。 | 集群名称，代理 ID | 代理网络和 I/O 线程处理请求所花费的平均时间（以毫秒为单位）。 | 
| RootDiskUsed | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理所使用的根磁盘的百分比。 | 
| RollingEstimatedTimeLagMax\$1 | 在使用器组使用某个主题之后。 | 集群名称、使用器组、主题 | 滚动最大时间估计值（以秒为单位），以消除主题中所有分区的分区偏移延迟。 | 
| SumOffsetLag\$1 | 在使用器组使用某个主题之后。 | 集群名称、使用器组、主题 | 主题中所有分区的聚合偏移延迟。 | 
| SwapFree | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 对代理可用的交换内存的大小（以字节为单位）。 | 
| SwapUsed  | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理正在使用的交换内存的大小（以字节为单位）。 | 
| TrafficShaping  |  在集群进入 ACTIVE 状态后。  |  集群名称，代理 ID  |  表示由于超出网络分配而形成（丢弃或排队）的数据包数量的高级指标。PER\$1BROKER 指标提供了更详细的信息。  | 
| UnderMinIsrPartitionCount | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的未完全管理分区的数目。 | 
| UnderReplicatedPartitions | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的未完全复制分区的数目。 | 
| UserPartitionExists | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 一个布尔指标，指示某个代理上是否存在用户拥有的分区。值为 1 表示代理上存在分区。 | 
| ZooKeeperRequestLatencyMsMean  | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 适用于 ZooKeeper基于群集。来自代理的 Apache ZooKeeper 请求的平均延迟（以毫秒为单位）。 | 
| ZooKeeperSessionState | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 适用于 ZooKeeper基于群集。经纪商 ZooKeeper 会话的连接状态可能是以下之一：NOT\$1CONNECTED：'0.0'，ASSOCIATING：'0.1'，正在连接：'0.5'，CONNECTEDREADONLY：'0.8'，已连接：'1.0'，已关闭：'5.0'，AUTH\$1FAILED：'10.0'。 | 

\$1 消费者滞后指标仅要求使用 ASCII 的消费者群体名称，并且有特定的排放要求。有关更多信息，请参阅 [监控消费者延迟](consumer-lag.md)。

## `PER_BROKER` 级别监控
<a name="broker-metrics"></a>

在将监控级别设置为 `PER_BROKER` 时，除了所有 `DEFAULT` 级别指标之外，您还将获得下表中描述的指标。您需要为下表中的指标付费，而 `DEFAULT` 级别指标仍免费。此表中的指标具有以下维度：集群名称、代理 ID。


| Name | 可见时间 | 说明 | 
| --- | --- | --- | 
| BwInAllowanceExceeded | 在集群进入 ACTIVE 状态后。 |  因入站聚合带宽超过代理的最大值而形成的数据包的数量。  | 
| BwOutAllowanceExceeded | 在集群进入 ACTIVE 状态后。 |  因出站聚合带宽超过代理的最大值而形成的数据包的数量。  | 
| ConntrackAllowanceExceeded  | 在集群进入 ACTIVE 状态后。 |  因连接跟踪超过代理的最大值而形成的数据包的数量。连接跟踪与安全组相关，安全组会跟踪建立的每个连接，以确保返回数据包按预期交付。  | 
| ConnectionCloseRate | 在集群进入 ACTIVE 状态后。 |  每个侦听器每秒关闭的连接数量。这个数字按每个侦听器聚合，并针对客户端侦听器进行筛选。  | 
| ConnectionCreationRate | 在集群进入 ACTIVE 状态后。 |  每个侦听器每秒建立的新连接数量。这个数字按每个侦听器聚合，并针对客户端侦听器进行筛选。  | 
| CpuCreditUsage | 在集群进入 ACTIVE 状态后。 |  代理花掉的 CPU 积分数。如果 CPU 积分余额用完，可能会对集群性能产生负面影响。您可以采取措施降低 CPU 负载。例如，您可以减少客户端请求的数量，或将代理类型更新为 M5 代理类型。  | 
| FetchConsumerLocalTimeMsMean | 在提供创建器/使用器后。 | 在领导处处理使用器请求所花费的平均时间（以毫秒为单位）。 | 
| FetchConsumerRequestQueueTimeMsMean | 在提供创建器/使用器后。 | 使用器请求在请求队列中等待的平均时间（以毫秒为单位）。 | 
| FetchConsumerResponseQueueTimeMsMean | 在提供创建器/使用器后。 | 使用器请求在响应队列中等待的平均时间（以毫秒为单位）。 | 
| FetchConsumerResponseSendTimeMsMean | 在提供创建器/使用器后。 | 使用器发送响应所花费的平均时间（以毫秒为单位）。 | 
| FetchConsumerTotalTimeMsMean | 在提供创建器/使用器后。 | 使用器从代理提取数据所花费的总平均时间（以毫秒为单位）。 | 
| FetchFollowerLocalTimeMsMean | 在提供创建器/使用器后。 | 在领导处处理跟踪器请求所花费的平均时间（以毫秒为单位）。 | 
| FetchFollowerRequestQueueTimeMsMean | 在提供创建器/使用器后。 | 跟踪器请求在请求队列中等待的平均时间（以毫秒为单位）。 | 
| FetchFollowerResponseQueueTimeMsMean | 在提供创建器/使用器后。 | 跟踪器请求在响应队列中等待的平均时间（以毫秒为单位）。 | 
| FetchFollowerResponseSendTimeMsMean | 在提供创建器/使用器后。 | 跟踪器发送响应所花费的平均时间（以毫秒为单位）。 | 
| FetchFollowerTotalTimeMsMean | 在提供创建器/使用器后。 | 跟踪器从代理提取数据所花费的总平均时间（以毫秒为单位）。 | 
| FetchMessageConversionsPerSec | 在创建主题后。 | 代理每秒提取消息转换的次数。 | 
| FetchThrottleByteRate | 在应用带宽限制后。 | 每秒的限制字节数。 | 
| FetchThrottleQueueSize | 在应用带宽限制后。 | 限制队列中的消息数。 | 
| FetchThrottleTime | 在应用带宽限制后。 | 平均提取限制时间（以毫秒为单位）。 | 
| IAMNumberOfConnectionRequests | 在集群进入 ACTIVE 状态后。 | 每秒 IAM 身份验证请求的数量。 | 
| IAMTooManyConnections | 在集群进入 ACTIVE 状态后。 | 尝试的连接数超过 100。0 表示连接数在限制范围内。如果 >0，则表明超出了节流限制，您需要减少连接数。 | 
| LinklocalAllowanceExceeded  | 在集群进入 ACTIVE 状态后。 |  由于到本地代理服务的流量的 PPS 超出网络接口的最大值而丢弃的数据包数量。这会影响流向 DNS 服务、实例元数据服务和 Amazon Time Sync Service 的流量。  | 
| NetworkProcessorAvgIdlePercent | 在集群进入 ACTIVE 状态后。 | 网络处理器处于空闲状态的时间的平均百分比。 | 
| PpsAllowanceExceeded | 在集群进入 ACTIVE 状态后。 |  因双向 PPS 超过代理的最大值而形成的数据包的数量。  | 
| ProduceLocalTimeMsMean | 在集群进入 ACTIVE 状态后。 | 在领导处处理请求所花费的平均时间（以毫秒为单位）。 | 
| ProduceMessageConversionsPerSec | 在创建主题后。 | 代理每秒生成的消息转换数。 | 
| ProduceMessageConversionsTimeMsMean | 在集群进入 ACTIVE 状态后。 | 消息格式转换所花费的平均时间（以毫秒为单位）。 | 
| ProduceRequestQueueTimeMsMean | 在集群进入 ACTIVE 状态后。 | 请求消息在队列中所花费的平均时间（以毫秒为单位）。 | 
| ProduceResponseQueueTimeMsMean | 在集群进入 ACTIVE 状态后。 | 响应消息在队列中所花费的平均时间（以毫秒为单位）。 | 
| ProduceResponseSendTimeMsMean | 在集群进入 ACTIVE 状态后。 | 发送响应消息所花费的平均时间（以毫秒为单位）。 | 
| ProduceThrottleByteRate | 在应用带宽限制后。 | 每秒的限制字节数。 | 
| ProduceThrottleQueueSize | 在应用带宽限制后。 | 限制队列中的消息数。 | 
| ProduceThrottleTime | 在应用带宽限制后。 | 平均生成限制时间（以毫秒为单位）。 | 
| ProduceTotalTimeMsMean | 在集群进入 ACTIVE 状态后。 | 平均生成时间（以毫秒为单位）。 | 
|  `RemoteFetchBytesPerSec (RemoteBytesInPerSec in v2.8.2.tiered)`  |  在提供生成器/使用器后。  |  为响应使用器提取而从分层存储传输的总字节数。此指标包括影响下游数据传输流量的所有主题分区。类别：流量和错误率。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。  | 
| RemoteCopyBytesPerSec (RemoteBytesOutPerSec in v2.8.2.tiered) |  在提供生成器/使用器后。  |  传输到分层存储的总字节数，包括来自日志段、索引和其他辅助文件的数据。此指标包括影响上游数据传输流量的所有主题分区。类别：流量和错误率。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。  | 
| RemoteLogManagerTasksAvgIdlePercent |  在集群进入 ACTIVE 状态后。  | 远程日志管理器闲置时间的平均百分比。远程日志管理器将数据从代理传输到分层存储。类别：内部活动。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。 | 
| RemoteLogReaderAvgIdlePercent |  在集群进入 ACTIVE 状态后。  | 远程日志读取器闲置时间的平均百分比。远程日志读取器将数据从远程存储传输到代理，以响应使用器提取。类别：内部活动。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。 | 
| RemoteLogReaderTaskQueueSize |  在集群进入 ACTIVE 状态后。  | 负责从分层存储中读取并等待安排的任务数量。类别：内部活动。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。 | 
| RemoteFetchErrorsPerSec (RemoteReadErrorPerSec in v2.8.2.tiered) |  在集群进入 ACTIVE 状态后。  | 响应读取请求的总错误率，指定代理将这些请求发送到分层存储，以检索数据来响应使用器提取。此指标包括影响下游数据传输流量的所有主题分区。类别：流量和错误率。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。 | 
| RemoteFetchRequestsPerSec (RemoteReadRequestsPerSec in v2.8.2.tiered) |  在集群进入 ACTIVE 状态后。  | 指定代理发送到分层存储以检索数据来响应使用器提取的读取请求的总数。此指标包括影响下游数据传输流量的所有主题分区。类别：流量和错误率。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。 | 
| RemoteCopyErrorsPerSec (RemoteWriteErrorPerSec in v2.8.2.tiered) |  在集群进入 ACTIVE 状态后。  | 响应写入请求的总错误率，指定代理将这些请求发送到分层存储以向上游传输数据。此指标包括影响上游数据传输流量的所有主题分区。类别：流量和错误率。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。 | 
| RemoteLogSizeBytes | 在集群进入 ACTIVE 状态后。 |  存储在远程层上的字节数。 该指标适用于 Amazon MSK 上 Apache Kafka 版本 3.7.x 及更高版本的分层存储集群。  | 
| ReplicationBytesInPerSec | 在创建主题后。 | 每秒从其他代理接收的字节数。 | 
| ReplicationBytesOutPerSec | 在创建主题后。 | 每秒发送到其他代理的字节数。 | 
| RequestExemptFromThrottleTime | 在应用请求限制后。 | 代理网络和 I/O 线程处理免受限制的请求所花费的平均时间（以毫秒为单位）。 | 
| RequestHandlerAvgIdlePercent | 在集群进入 ACTIVE 状态后。 | 请求处理程序线程处于空闲状态的时间的平均百分比。 | 
| RequestThrottleQueueSize | 在应用请求限制后。 | 限制队列中的消息数。 | 
| RequestThrottleTime | 在应用请求限制后。 | 平均请求限制时间（以毫秒为单位）。 | 
| TcpConnections | 在集群进入 ACTIVE 状态后。 |  显示设置了 SYN 标志的传入和传出 TCP 段的数量。  | 
| RemoteCopyLagBytes (TotalTierBytesLag in v2.8.2.tiered) | 在创建主题后。 | 在代理上符合分层条件但尚未传输到分层存储的数据的总字节数。此指标显示了上游数据传输的效率。随着延迟增加，分层存储中无法持续存在的数据量也随之增加。类别：归档延迟。这不是一个 KIP-405 指标。 | 
| TrafficBytes | 在集群进入 ACTIVE 状态后。 |  以总字节数显示客户端（生成器和使用器）与代理之间的网络流量。不报告代理之间的流量。  | 
| VolumeQueueLength | 在集群进入 ACTIVE 状态后。 |  指定时间段内等待完成的读取和写入操作请求的数量。  | 
|  VolumeReadBytes  | 在集群进入 ACTIVE 状态后。 |  在指定时间段内读取的字节数。  | 
| VolumeReadOps  | 在集群进入 ACTIVE 状态后。 |  在指定时间段内读取的操作数。  | 
| VolumeTotalReadTime  | 在集群进入 ACTIVE 状态后。 |  在指定时间段内完成所有读取操作耗费的总秒数。  | 
| VolumeTotalWriteTime  | 在集群进入 ACTIVE 状态后。 |  在指定时间段内完成所有写入操作耗费的总秒数。  | 
| VolumeWriteBytes  | 在集群进入 ACTIVE 状态后。 |  在指定时间段内写入的字节数。  | 
| VolumeWriteOps  | 在集群进入 ACTIVE 状态后。 |  在指定时间段内写入操作的数量。  | 

## `PER_TOPIC_PER_BROKER` 级别监控
<a name="broker-topic-metrics"></a>

在将监控级别设置为 `PER_TOPIC_PER_BROKER` 时，除了 `PER_BROKER` 和 DEFAULT 级别的所有指标之外，您还将获得下表中描述的指标。仅 `DEFAULT` 级别指标是免费的。此表中的指标具有以下维度：集群名称、代理商 ID、主题。

**重要**  
对于使用 Apache Kafka 2.4.1 或更新版本的 Amazon MSK 集群，下表中的指标仅在其值首次变为非零后才会显示。例如，要查看 `BytesInPerSec`，一个或多个创建器必须先向集群发送数据。


| Name | 可见时间 | 说明 | 
| --- | --- | --- | 
| FetchMessageConversionsPerSec | 在创建主题后。 | 每秒转换的已提取消息的数量。 | 
| MessagesInPerSec | 在创建主题后。 | 每秒接收的消息的数量。 | 
| ProduceMessageConversionsPerSec | 在创建主题后。 | 已生成消息的每秒转换次数。 | 
| RemoteFetchBytesPerSec (RemoteBytesInPerSec in v2.8.2.tiered) |  创建主题后，以及生成/使用主题时。  |  为响应使用器提取指定主题和代理而从分层存储传输的字节数。此指标包括影响指定代理上下游数据传输流量的所有主题分区。类别：流量和错误率。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。  | 
| RemoteCopyBytesPerSec (RemoteBytesOutPerSec in v2.8.2.tiered) | 创建主题后，以及生成/使用主题时。 |  为指定主题和代理传输到分层存储的字节数。此指标包括影响指定代理上上游数据传输流量的所有主题分区。类别：流量和错误率。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。  | 
| RemoteFetchErrorsPerSec (RemoteReadErrorPerSec in v2.8.2.tiered) | 创建主题后，以及生成/使用主题时。 | 响应读取请求的错误率，指定代理将这些请求发送到分层存储，以检索数据来响应使用器对指定主题的提取。此指标包括影响指定代理上下游数据传输流量的所有主题分区。类别：流量和错误率。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。 | 
| RemoteFetchRequestsPerSec (RemoteReadRequestsPerSec in v2.8.2.tiered) | 创建主题后，以及生成/使用主题时。 | 指定代理发送到分层存储以检索数据来响应使用器对指定主题的提取的读取请求数。此指标包括影响指定代理上下游数据传输流量的所有主题分区。类别：流量和错误率。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。 | 
| RemoteCopyErrorsPerSec (RemoteWriteErrorPerSec in v2.8.2.tiered) | 创建主题后，以及生成/使用主题时。 | 响应写入请求的错误率，指定代理将这些请求发送到分层存储以向上游传输数据。此指标包括影响指定代理上上游数据传输流量的所有主题分区。类别：流量和错误率。这是一个 [KIP-405](https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage) 指标。 | 
| RemoteLogSizeBytes | 在创建主题后。 |  存储在远程层上的字节数。 该指标适用于 Amazon MSK 上 Apache Kafka 版本 3.7.x 及更高版本的分层存储集群。  | 

## `PER_TOPIC_PER_PARTITION` 级别监控
<a name="topic-partition-metrics"></a>

在将监控级别设置为 `PER_TOPIC_PER_PARTITION` 时，除了 `PER_TOPIC_PER_BROKER`、`PER_BROKER` 和 DEFAULT 级别的所有指标之外，您还将获得下表中所述的指标。仅 `DEFAULT` 级别指标是免费的。此表中的指标具有以下维度：使用器组、主题、分区。


| Name | 可见时间 | 说明 | 
| --- | --- | --- | 
| EstimatedTimeLag\$1 | 在使用器组使用某个主题之后。 | 预计耗尽分区偏移延迟的时间（以秒为单位）。 | 
| OffsetLag\$1 | 在使用器组使用某个主题之后。 | 分区级别使用器在偏移量方面的延迟。 | 
| RollingEstimatedTimeLag\$1 | 在使用器组使用某个主题之后。 | 滚动时间估计（以秒为单位），以消除分区偏移延迟。 | 

\$1 消费者滞后指标仅要求使用 ASCII 的消费者群体名称，并且有特定的排放要求。有关更多信息，请参阅 [监控消费者延迟](consumer-lag.md)。

# 了解预置 MSK 集群状态
<a name="msk-cluster-states"></a>

下表显示了预置 MSK 集群的可能状态并描述了这些状态的含义。除非另有说明，否则预置 MSK 集群状态适用于标准代理和快速代理类型。该表还描述了当预置 MSK 集群处于其中一种状态时，您可以执行和不能执行的操作。要了解集群的状态，可以访问 AWS 管理控制台。您也可以使用 [describe-cluster-v2 命令或 [DescribeClusterV2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters-clusterarn.html#DescribeClusterV2)](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster-v2.html) 操作来描述已配置的集群。集群的描述包括其状态。


****  

| 预置 MSK 集群状态 | 含义和可行的操作 | 
| --- | --- | 
| ACTIVE |  您可以生成和使用数据。您还可以在集群上执行 Amazon MSK API 和 AWS CLI 操作。  | 
| CREATING |  Amazon MSK 正在设置预置集群。您必须等待集群达到 ACTIVE 状态，然后才能使用它来生成或使用数据，或者对其执行 Amazon MSK API 或 AWS CLI 操作。  | 
| DELETING | 正在删除预置集群。您不能用它来生成或使用数据。您也无法对其执行 Amazon MSK API 或 AWS CLI 操作。 | 
| FAILED | 预置集群创建或删除过程失败。您不能用集群来生成或使用数据。您可以删除集群，但无法对其执行 Amazon MSK API 或 AWS CLI 更新操作。 | 
| HEALING |  Amazon MSK 正在运行内部操作，例如更换运行不正常的代理。例如，代理可能没有响应。您仍可以用预置集群来生成或使用数据。但是，在集群恢复到活动状态之前，您无法对其执行 Amazon MSK API 或 AWS CLI 更新操作。  | 
| MAINTENANCE | （仅限标准代理）Amazon MSK 正在对集群执行例行维护操作。此类维护操作包括安全修补。您仍可以用集群来生成或使用数据。但是，在集群恢复到活动状态之前，您无法对其执行 Amazon MSK AP AWS I 或 CLI 更新操作。在快速代理上进行维护期间，集群状态保持 ACTIVE 状态。请参阅[在预置 MSK 集群上进行修补](patching-impact.md)。 | 
| REBOOTING\$1BROKER | Amazon MSK 正在重启代理。您仍可以用预置集群来生成或使用数据。但是，在集群恢复到活动状态之前，您无法对其执行 Amazon MSK API 或 AWS CLI 更新操作。 | 
| UPDATING | 用户启动的 Amazon MSK API 或 AWS CLI 操作正在更新预配置集群。您仍可以用预置集群来生成或使用数据。但是，在集群恢复到活动状态之前，您无法对其执行任何其他 Amazon MSK API 或 AWS CLI 更新操作。 | 

# 用于监控快递经纪商的 Amazon MSK 指标 CloudWatch
<a name="metrics-details-express"></a>

Amazon MSK 与之集成， CloudWatch 因此您可以收集、查看和分析您的 MSK Express 经纪商的 CloudWatch指标。系统会自动收集您为 MSK 预配置的集群配置的指标，并每隔 1 分钟推送 CloudWatch 一次。您可以将预置 MSK 集群的监控级别设置为以下级别之一：`DEFAULT`、`PER_BROKER`、`PER_TOPIC_PER_BROKER` 或 `PER_TOPIC_PER_PARTITION`。以下部分中的表显示了在每个监控级别开始提供的指标。

`DEFAULT` 级别指标免费。[Amazon 定价页面中描述了其他指标的 CloudWatch定价](https://aws.amazon.com/cloudwatch/pricing/)。

## 快速代理的 `DEFAULT` 级别监控
<a name="express-default-metrics"></a>

下表中描述的指标在 `DEFAULT` 监控级别使用免费。


| Name | 可见时间 | Dimensions | 说明 | 
| --- | --- | --- | --- | 
| ActiveControllerCount | 在集群进入 ACTIVE 状态后。 | 集群名称 | 在任何给定时间，每个集群只能有一个控制器处于活动状态。 | 
| BytesInPerSec | 在创建主题后。 | 集群名称、代理 ID、主题 | 每秒从客户端接收的字节数。此指标适用于每个代理和每个主题。 | 
| BytesOutPerSec | 在创建主题后。 | 集群名称、代理 ID、主题 | 每秒发送到客户端的字节数。此指标适用于每个代理和每个主题。 | 
| ClientConnectionCount | 在集群进入 ACTIVE 状态后。 | 集群名称、代理 ID、客户端身份验证 | 经过身份验证的活跃客户端连接数量。 | 
| ConnectionCount | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 经过身份验证、未经过身份验证以及代理间的活跃连接数量。 | 
| CpuIdle | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | CPU 空闲时间百分比。 | 
| CpuSystem | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 内核空间中的 CPU 百分比。 | 
| CpuUser | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 用户空间中的 CPU 百分比。 | 
| GlobalPartitionCount | 在集群进入 ACTIVE 状态后。 | 集群名称 | 集群中所有主题的分区数量，不包括副本。由于 `GlobalPartitionCount` 不包括副本，如果主题的复制因子大于 `1`，则 `PartitionCount` 值的总和可能高于 `GlobalPartitionCount`。 | 
| GlobalTopicCount | 在集群进入 ACTIVE 状态后。 | 集群名称 | 集群中所有代理的主题总数。 | 
| EstimatedMaxTimeLag\$1 | 在使用器组使用某个主题之后。 | 使用器组、主题 | 预计耗尽 `MaxOffsetLag` 的时间（以秒为单位）。 | 
| LeaderCount | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 每个代理的分区领导总数，不包括副本。 | 
| MaxOffsetLag\$1 | 在使用器组使用某个主题之后。 | 使用器组、主题 | 主题中所有分区之间的最大偏移延迟。 | 
| MemoryBuffered | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的缓冲内存大小（以字节为单位）。 | 
| MemoryCached | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的缓存内存大小（以字节为单位）。 | 
| MemoryFree | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 可供代理使用的可用内存大小（以字节为单位）。 | 
| MemoryUsed | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理正在使用的内存大小（以字节为单位）。 | 
| MessagesInPerSec | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理每秒传入消息数。 | 
| NetworkRxDropped | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 丢弃的接收包的数量。 | 
| NetworkRxErrors | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的网络接收错误数。 | 
| NetworkRxPackets | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理收到的数据包的数量。 | 
| NetworkTxDropped | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 丢弃的传输包的数量。 | 
| NetworkTxErrors | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的网络传输错误的数量。 | 
| NetworkTxPackets | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理传输的数据包的数量。 | 
| PartitionCount | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 每个代理的主题分区总数，不包括副本。 | 
| ProduceTotalTimeMsMean | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 平均生成时间（以毫秒为单位）。 | 
| RequestBytesMean | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 代理的请求字节的平均数量。 | 
| RequestTime | 在应用请求限制后。 | 集群名称，代理 ID | 在代理网络和 I/O 线程中处理请求所花费的平均时间（以毫秒为单位）。 | 
| RollingEstimatedTimeLagMax\$1 | 在使用器组使用某个主题之后。 | 使用器组、主题 | 滚动最大时间估计值（以秒为单位），以消除主题中所有分区的分区偏移延迟。 | 
| StorageUsed | 在集群进入 ACTIVE 状态后。 | 集群名称 | 集群中所有分区使用的总存储空间，不包括副本。 | 
| SumOffsetLag\$1 | 在使用器组使用某个主题之后。 | 使用器组、主题 | 主题中所有分区的聚合偏移延迟。 | 
| UserPartitionExists | 在集群进入 ACTIVE 状态后。 | 集群名称，代理 ID | 布尔指标，指示某个代理上是否存在用户拥有的分区。值为 1 表示代理上存在分区。 | 

\$1 消费者滞后指标仅要求使用 ASCII 的消费者群体名称，并且有特定的排放要求。有关更多信息，请参阅 [监控消费者延迟](consumer-lag.md)。

## 快速代理的 `PER_BROKER` 级别监控
<a name="express-per-broker-metrics"></a>

在将监控级别设置为 `PER_BROKER` 时，除了所有 `DEFAULT` 级别指标之外，您还将获得下表中描述的指标。您需要为下表中的指标付费，而 `DEFAULT` 级别指标仍免费。此表中的指标具有以下维度：集群名称、代理 ID。


| Name | 可见时间 | 说明 | 
| --- | --- | --- | 
| ConnectionCloseRate | 在集群进入 ACTIVE 状态后。 | 每个侦听器每秒关闭的连接数量。这个数字按每个侦听器聚合，并针对客户端侦听器进行筛选。 | 
| ConnectionCreationRate | 在集群进入 ACTIVE 状态后。 | 每个侦听器每秒建立的新连接数量。这个数字按每个侦听器聚合，并针对客户端侦听器进行筛选。 | 
| FetchConsumerLocalTimeMsMean | 在提供创建器/使用器后。 | 在领导处处理使用器请求所花费的平均时间（以毫秒为单位）。 | 
| FetchConsumerRequestQueueTimeMsMean | 在提供创建器/使用器后。 | 使用器请求在请求队列中等待的平均时间（以毫秒为单位）。 | 
| FetchConsumerResponseQueueTimeMsMean | 在提供创建器/使用器后。 | 使用器请求在响应队列中等待的平均时间（以毫秒为单位）。 | 
| FetchConsumerResponseSendTimeMsMean | 在提供创建器/使用器后。 | 使用器发送响应所花费的平均时间（以毫秒为单位）。 | 
| FetchConsumerTotalTimeMsMean | 在提供创建器/使用器后。 | 使用器从代理提取数据所花费的总平均时间（以毫秒为单位）。 | 
| FetchFollowerLocalTimeMsMean | 在提供创建器/使用器后。 | 在领导处处理跟踪器请求所花费的平均时间（以毫秒为单位）。 | 
| FetchFollowerRequestQueueTimeMsMean | 在提供创建器/使用器后。 | 跟踪器请求在请求队列中等待的平均时间（以毫秒为单位）。 | 
| FetchFollowerResponseQueueTimeMsMean | 在提供创建器/使用器后。 | 跟踪器请求在响应队列中等待的平均时间（以毫秒为单位）。 | 
| FetchFollowerResponseSendTimeMsMean | 在提供创建器/使用器后。 | 跟踪器发送响应所花费的平均时间（以毫秒为单位）。 | 
| FetchFollowerTotalTimeMsMean | 在提供创建器/使用器后。 | 跟踪器从代理提取数据所花费的总平均时间（以毫秒为单位）。 | 
| FetchThrottleByteRate | 在应用带宽限制后。 | 每秒的限制字节数。 | 
| FetchThrottleQueueSize | 在应用带宽限制后。 | 限制队列中的消息数。 | 
| FetchThrottleTime | 在应用带宽限制后。 | 平均提取限制时间（以毫秒为单位）。 | 
| IAMNumberOfConnectionRequests | 在集群进入 ACTIVE 状态后。 | 每秒 IAM 身份验证请求的数量。 | 
| IAMTooManyConnections | 在集群进入 ACTIVE 状态后。 | 尝试的连接数超过 100。`0` 表示连接数在限制范围内。如果 `>0`，则表明超出了节流限制，您需要减少连接数。 | 
| NetworkProcessorAvgIdlePercent | 在集群进入 ACTIVE 状态后。 | 网络处理器处于空闲状态的时间的平均百分比。 | 
| ProduceLocalTimeMsMean | 在集群进入 ACTIVE 状态后。 | 在领导处处理请求所花费的平均时间（以毫秒为单位）。 | 
| ProduceRequestQueueTimeMsMean | 在集群进入 ACTIVE 状态后。 | 请求消息在队列中所花费的平均时间（以毫秒为单位）。 | 
| ProduceResponseQueueTimeMsMean | 在集群进入 ACTIVE 状态后。 | 响应消息在队列中所花费的平均时间（以毫秒为单位）。 | 
| ProduceResponseSendTimeMsMean | 在集群进入 ACTIVE 状态后。 | 发送响应消息所花费的平均时间（以毫秒为单位）。 | 
| ProduceThrottleByteRate | 在应用带宽限制后。 | 每秒的限制字节数。 | 
| ProduceThrottleQueueSize | 在应用带宽限制后。 | 限制队列中的消息数。 | 
| ProduceThrottleTime | 在应用带宽限制后。 | 平均生成限制时间（以毫秒为单位）。 | 
| ProduceTotalTimeMsMean | 在集群进入 ACTIVE 状态后。 | 平均生成时间（以毫秒为单位）。 | 
| ReplicationBytesInPerSec | 在创建主题后。 | 每秒从其他代理接收的字节数。 | 
| ReplicationBytesOutPerSec | 在创建主题后。 | 每秒发送到其他代理的字节数。 | 
| RequestExemptFromThrottleTime | 在应用请求限制后。 | 在代理网络和 I/O 线程中处理不受限制的请求所花费的平均时间（以毫秒为单位）。 | 
| RequestHandlerAvgIdlePercent | 在集群进入 ACTIVE 状态后。 | 请求处理程序线程处于空闲状态的时间的平均百分比。 | 
| RequestThrottleQueueSize | 在应用请求限制后。 | 限制队列中的消息数。 | 
| RequestThrottleTime | 在应用请求限制后。 | 平均请求限制时间（以毫秒为单位）。 | 
| TcpConnections | 在集群进入 ACTIVE 状态后。 | 显示设置了 SYN 标志的传入和传出 TCP 段的数量。 | 
| TrafficBytes | 在集群进入 ACTIVE 状态后。 | 以总字节数显示客户端（生成器和使用器）与代理之间的网络流量。不报告代理之间的流量。 | 

## 快速代理的 `PER_TOPIC_PER_PARTITION` 级别监控
<a name="express-per-topic-per-partition-metrics"></a>

在将监控级别设置为 `PER_TOPIC_PER_PARTITION` 时，除了 `PER_TOPIC_PER_BROKER`、`PER_BROKER` 和 `DEFAULT` 级别的所有指标之外，您还将获得下表中所述的指标。仅 `DEFAULT` 级别指标是免费的。此表中的指标具有以下维度：使用器组、主题、分区。


| Name | 可见时间 | 说明 | 
| --- | --- | --- | 
| EstimatedTimeLag\$1 | 在使用器组使用某个主题之后。 | 预计耗尽分区偏移延迟的时间（以秒为单位）。 | 
| OffsetLag\$1 | 在使用器组使用某个主题之后。 | 分区级别使用器在偏移量方面的延迟。 | 
| RollingEstimatedTimeLag\$1 | 在使用器组使用某个主题之后。 | 滚动时间估计（以秒为单位），以消除分区偏移延迟。 | 

\$1 消费者滞后指标仅要求使用 ASCII 的消费者群体名称，并且有特定的排放要求。有关更多信息，请参阅 [监控消费者延迟](consumer-lag.md)。

## 快速代理的 `PER_TOPIC_PER_BROKER` 级别监控
<a name="express-per-topic-per-broker-metrics"></a>

在将监控级别设置为 `PER_TOPIC_PER_BROKER` 时，除了 `PER_BROKER` 和 `DEFAULT` 级别的所有指标之外，您还将获得下表中描述的指标。仅 `DEFAULT` 级别指标是免费的。此表中的指标具有以下维度：集群名称、代理商 ID、主题。

**重要**  
下表中的指标仅在其值首次变为非零后才会显示。例如，要查看 BytesInPerSec，一个或多个生产者必须先向集群发送数据。


| Name | 可见时间 | 说明 | 
| --- | --- | --- | 
| MessagesInPerSec | 在创建主题后。 | 每秒接收的消息的数量。 | 

# 使用 Prometheus 监控预置 MSK 集群
<a name="open-monitoring"></a>

您可以使用 Prometheus 监控预置 MSK 集群，Prometheus 是一种用于时间序列指标数据的开源监控系统。您可以使用 Prometheus 的远程写入功能，将这些数据发布到 Amazon Managed Service for Prometheus。您还可以使用与 Prometheus 格式的指标兼容的工具或与 Amazon MSK Open Monitoring 集成的工具，比如 [Datadog](https://docs.datadoghq.com/integrations/amazon_msk/)、[Lenses](https://docs.lenses.io/latest/deployment/configuration/agent/automation/kafka/aws-msk)、[New Relic](https://docs.newrelic.com/docs/integrations/amazon-integrations/aws-integrations-list/aws-managed-kafka-msk-integration) 和 [Sumo logic](https://help.sumologic.com/03Send-Data/Collect-from-Other-Data-Sources/Amazon_MSK_Prometheus_metrics_collection)。开源监控系统可免费使用，但跨可用区传输数据需要付费。

有关 Prometheus 的信息，请参阅 [Prometheus 文档](https://prometheus.io/docs)。

有关使用 Prometheus 的信息，请参阅[使用 Amazon Managed Service for Prometheus 和 Amazon Managed Grafana，增强对 Amazon MSK 的运营洞察](https://aws.amazon.com/blogs//big-data/enhance-operational-insights-for-amazon-msk-using-amazon-managed-service-for-prometheus-and-amazon-managed-grafana/)。

**注意**  
KRaft 元数据模式和 MSK Express 代理不能同时启用开放监控和公共访问。

# 在新预置 MSK 集群上启用开放监控
<a name="enable-open-monitoring-at-creation"></a>

本过程介绍如何使用 AWS 管理控制台、或 Amazon MSK API 在新 MSK 集群上启用开放式监控。 AWS CLI

**使用 AWS 管理控制台**

1. 登录并在[https://console.aws.amazon.com/msk/家中打开 Amazon MSK 控制台？ AWS 管理控制台 region=us](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/)-east-1\$1/home/。

1. 在 **Monitoring (监控)** 部分中，选中 **Enable open monitoring with Prometheus (启用 Prometheus 开源监控系统)** 旁边的复选框。

1. 在页面上的各部分中提供所需的信息，并查看所有可用的选项。

1. 选择**创建集群**。

**使用 AWS CLI**
+ 调用 [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/kafka/create-cluster.html) 命令并指定其 `open-monitoring` 选项。启用 `JmxExporter`、`NodeExporter` 或两者。如果指定了 `open-monitoring`，则不能同时禁用这两个导出器。

**使用 API**
+ 调用该[CreateCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster)操作并指定`OpenMonitoring`。启用 `jmxExporter`、`nodeExporter` 或两者。如果指定了 `OpenMonitoring`，则不能同时禁用这两个导出器。

# 在现有预置 MSK 集群上启用开放监控
<a name="enable-open-monitoring-after-creation"></a>

要启用开源监控系统，请确保预置 MSK 集群处于 `ACTIVE` 状态。

**使用 AWS 管理控制台**

1. 登录并在[https://console.aws.amazon.com/msk/家中打开 Amazon MSK 控制台？ AWS 管理控制台 region=us](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/)-east-1\$1/home/。

1. 选择要更新的集群的名称。这会将您引导至该集群的详细信息页面。

1. 在**属性**选项卡上，向下滚动以找到**监控**部分。

1. 选择**编辑**。

1. 选中 **Enable open monitoring with Prometheus (启用 Prometheus 开源监控系统)** 旁边的复选框。

1. 选择**保存更改**。

**使用 AWS CLI**
+ 调用 [update-monitoring](https://docs.aws.amazon.com/cli/latest/reference/kafka/update-monitoring.html) 命令并指定其 `open-monitoring` 选项。启用 `JmxExporter`、`NodeExporter` 或两者。如果指定了 `open-monitoring`，则不能同时禁用这两个导出器。

**使用 API**
+ 调用该[UpdateMonitoring](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-monitoring.html#UpdateMonitoring)操作并指定`OpenMonitoring`。启用 `jmxExporter`、`nodeExporter` 或两者。如果指定了 `OpenMonitoring`，则不能同时禁用这两个导出器。

# 在 Amazon EC2 实例上设置 Prometheus 主机
<a name="set-up-prometheus-host"></a>

此过程介绍了如何使用 prometheus.yml 文件设置 Prometheus 主机。

1. 从 [https://prometheus.io/download/#prometheus](https://prometheus.io/download/#prometheus) 将 Prometheus 服务器下载到您的 Amazon EC2 实例上。

1. 将下载的文件解压缩到某个目录并转到该目录。

1. 使用以下内容创建名为 `prometheus.yml` 的文件。

   ```
   # file: prometheus.yml
   # my global config
   global:
     scrape_interval:     60s
   
   # A scrape configuration containing exactly one endpoint to scrape:
   # Here it's Prometheus itself.
   scrape_configs:
     # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
     - job_name: 'prometheus'
       static_configs:
       # 9090 is the prometheus server port
       - targets: ['localhost:9090']
     - job_name: 'broker'
       file_sd_configs:
       - files:
         - 'targets.json'
   ```

1. 使用该[ListNodes](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-nodes.html#ListNodes)操作获取集群的代理列表。

1. 利用以下 JSON 创建名为 `targets.json` 的文件。将*broker\$1dns\$11**broker\$1dns\$12*、和其余的代理 DNS 名称替换为您在上一步中为经纪商获取的 DNS 名称。包括您在上一步中获得的所有代理。Amazon MSK 对 JMX Exporter 使用端口 11001，对 Node Exporter 使用端口 11002。

------
#### [ ZooKeeper mode targets.json ]

   ```
   [
     {
       "labels": {
         "job": "jmx"
       },
       "targets": [
         "broker_dns_1:11001",
         "broker_dns_2:11001",
         .
         .
         .
         "broker_dns_N:11001"
       ]
     },
     {
       "labels": {
         "job": "node"
       },
       "targets": [
         "broker_dns_1:11002",
         "broker_dns_2:11002",
         .
         .
         .
         "broker_dns_N:11002"
       ]
     }
   ]
   ```

------
#### [ KRaft mode targets.json ]

   ```
   [
     {
       "labels": {
         "job": "jmx"
       },
       "targets": [
         "broker_dns_1:11001",
         "broker_dns_2:11001",
         .
         .
         .
         "broker_dns_N:11001",
         "controller_dns_1:11001",
         "controller_dns_2:11001",
         "controller_dns_3:11001"
       ]
     },
     {
       "labels": {
         "job": "node"
       },
       "targets": [
         "broker_dns_1:11002",
         "broker_dns_2:11002",
         .
         .
         .
         "broker_dns_N:11002"
       ]
     }
   ]
   ```

------
**注意**  
要从 KRaft 控制器中抓取 JMX 指标，请在 JSON 文件中添加控制器 DNS 名称作为目标。例如：`controller_dns_1:11001`，将 `controller_dns_1` 替换为实际的控制器 DNS 名称。

1. 要在您的 Amazon EC2 实例上启动 Prometheus 服务器，请在您解压缩 Prometheus 文件并保存了 `prometheus.yml` 和 `targets.json` 的目录中运行以下命令。

   ```
   ./prometheus
   ```

1. 查找您在上一步中在其中运行 Prometheus 的 Amazon EC2 实例的 IPv4 公有 IP 地址。您在以下步骤中需要使用此公有 IP 地址。

1. 要访问 Prometheus 网页用户界面，请打开可以访问您的 Amazon EC2 实例的浏览器，然后转`Prometheus-Instance-Public-IP:9090`到您在上一步中获得的公有 IP 地址*Prometheus-Instance-Public-IP*在哪里。

# 使用 Prometheus 指标
<a name="prometheus-metrics"></a>

由 Apache Kafka 发送给 JMX 的所有指标都可通过 Prometheus 的开源监控系统访问。有关 Apache Kafka 指标的信息，请参阅 Apache Kafka 文档中的[监控](https://kafka.apache.org/documentation/#monitoring)。除了 Apache Kafka 指标外，消费者延迟指标还可以在端口 11001 上以 JMX 名称获得。 MBean `kafka.consumer.group:type=ConsumerLagMetrics`您也可以使用 Prometheus Node Exporter 来获取代理端口 11002 的 CPU 和磁盘指标。

# 将 Prometheus 指标存储在 Amazon Managed Service for Prometheus 中
<a name="managed-service-prometheus"></a>

Amazon Managed Service for Prometheus 是一项与 Prometheus 兼容的监控和警报服务，可用于监控 Amazon MSK 集群。这是一项完全托管的服务，可自动扩缩指标的提取、存储、查询和警报。它还与 AWS 安全服务集成，使您可以快速、安全地访问数据。您可以使用开源 ProMQL 查询语言来查询指标并发出警报。

有关更多信息，请参阅[开始使用 Amazon Managed Service Managed Service Prometheus](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-getting-started.html)。

# 监控消费者延迟
<a name="consumer-lag"></a>

通过监控使用器延迟，您可以识别速度缓慢或卡住的使用器，这些使用器没有跟上主题中可用的最新数据。必要时，您可以采取补救措施，例如扩展或重启这些使用器。要监控消费者延迟，您可以使用亚马逊 CloudWatch 或通过 Prometheus 开放监控。

使用器延迟指标可以量化写入主题的最新数据与应用程序读取的数据之间的差异。Amazon MSK 提供了以下消费者延迟指标，您可以通过亚马逊 CloudWatch 或通过 Prometheus 的开放监控获得这些指标：、、、和。`EstimatedMaxTimeLag` `EstimatedTimeLag` `MaxOffsetLag` `OffsetLag` `SumOffsetLag`有关这些指标的信息，请参阅[用于监控标准经纪商的 Amazon MSK 指标 CloudWatch](metrics-details.md)。

Amazon MSK 支持采用 Apache Kafka 2.2.1 或更高版本的集群的使用器延迟指标。在使用 Kafka 和 CloudWatch 指标时，请考虑以下几点：
+ 使用者延迟指标仅在使用者组处于 STABLE 或 EMPTY 状态时发出。成功完成重新平衡后，消费者组处于 STABLE 状态，确保分区在消费者之间均匀分布。
+ 以下情况不存在使用者延迟指标：
  + 如果使用者组不稳定。
  + 使用者组的名称包含冒号（:）。
  + 您尚未为使用者组设置使用者偏移量。
+ 消费者组名称用作中消费者滞后指标的维度 CloudWatch。虽然 Kafka 支持在使用者组名称中使用 UTF-8 字符，但[维度](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html)值仅 CloudWatch 支持 ASCII 字符。如果您在使用者组名称中使用非 ASCII 字符，则 CloudWatch 会删除使用者延迟指标。为确保正确捕获消费者延迟指标 CloudWatch，您必须在使用者组名称中仅使用 ASCII 字符。

# 使用 Amazon MSK 存储容量警报
<a name="cluster-alerts"></a>

在 Amazon MSK 预配置集群上，可以选择集群的主存储容量。如果耗尽了预配置集群中代理的存储容量，可能会影响其生成和使用数据的能力，从而造成代价高昂的停机。Amazon MSK 提供的 CloudWatch指标可帮助您监控集群的存储容量。但是，为了便于您检测和解决存储容量问题，Amazon MSK 会自动向您发送动态集群存储容量警报。存储容量警报中包含有关采取短期和长期措施管理集群存储容量的建议。在 [Amazon MSK 控制台](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/)中，可以使用警报中的快速链接立即采取建议的操作。

MSK 存储容量警报有两种类型：主动警报和补救警报。
+ 主动（“需要操作”）存储容量警报会提醒您注意集群可能存在的存储问题。当 MSK 集群中的代理使用了 60% 或 80% 以上的磁盘存储容量时，您将收到有关受影响代理的主动警报。
+ 当 MSK 集群中的一个代理磁盘存储容量用完时，补救（“需要采取关键操作”）存储容量警报要求您采取补救措施，修复严重的集群问题。

Amazon MSK 会自动将这些警报发送到[亚马逊 MSK 控制台](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/)、Healt [AWS h Das](https://aws.amazon.com/premiumsupport/technology/aws-health/) hboard EventBridge、[Amazon](https://aws.amazon.com/pm/eventbridge/) 以及您 AWS 账户的电子邮件联系人。你也可以 EventBridge将[亚马逊配置为向](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-api-destination-partners.html) Slack 或 New Relic 和 Datadog 等工具发送这些警报。

所有 MSK 预配置集群默认启用存储容量警报，而且无法关闭。所有提供 MSK 的区域均支持此功能。

## 监控存储容量警报
<a name="cluster-alerts-monitoring"></a>

您可以通过以下几种方式查看存储容量警报：
+ 前往 [Amazon MSK 控制台](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/)。存储容量警报将在集群警报窗格中显示 90 天。警报中包含解决磁盘存储容量问题的建议和单击链接操作。
+ 使用[ListClusters](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#ListClusters)、[ListClustersV2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters.html#ListClustersV2) 或 [DescribeClusterV2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters-clusterarn.html#DescribeClusterV2) APIs 查看集`CustomerActionStatus`群的所有警报。[DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster)
+ 前往 [AWS Health Dashboard](https://aws.amazon.com/premiumsupport/technology/aws-health/) 查看来自 MSK 和其他 AWS 服务的警报。
+ 设置 [AWS Health API](https://docs.aws.amazon.com/health/latest/ug/health-api.html) 和 [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-api-destination-partners.html)，将警报通知路由 EventBridge到第三方平台，例如 Datadog 和 Sl NewRelic ack。