

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

# 監控 Amazon MSK 佈建叢集
<a name="monitoring"></a>

Amazon MSK 可透過多種方式協助您監控 Amazon MSK 佈建叢集的狀態。
+ Amazon MSK 會收集 Apache Kafka 指標，並將它們傳送到 Amazon CloudWatch 供您檢視。如需有關 Apache Kafka 指標的詳細資訊 (包括 Amazon MSK 呈現的指標)，請參閱 Apache Kafka 文件中的 [Monitoring](http://kafka.apache.org/documentation/#monitoring)。
+ 您也可以使用開放原始碼監控應用程式 Prometheus 監控您的 MSK 叢集。如需 Prometheus 的資訊，請參閱 Prometheus 文件中的 [Overview](https://prometheus.io/docs/introduction/overview/)。若要了解如何使用 Prometheus 監控 MSK 佈建叢集，請參閱 [使用 Prometheus 監控 MSK 佈建叢集](open-monitoring.md)。
+ （僅限標準代理程式） 當佈建叢集即將達到其儲存容量限制時，Amazon MSK 會自動傳送儲存容量提醒給您，協助您監控磁碟儲存容量。這些警示也會針對偵測到的問題提供最佳步驟建議。這可協助您識別並快速解決磁碟容量問題，以免其近一步嚴重化。Amazon MSK 會自動將這些提醒傳送至您 AWS 帳戶的 [Amazon MSK 主控台](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) Health 儀板表、Amazon EventBridge 和電子郵件聯絡人。如需儲存容量警示的資訊，請參閱 [使用 Amazon MSK 儲存容量提醒](cluster-alerts.md)。

**Topics**
+ [使用 CloudWatch 檢視 Amazon MSK 指標](cloudwatch-metrics.md)
+ [使用 CloudWatch 監控標準代理程式的 Amazon MSK 指標](metrics-details.md)
+ [使用 CloudWatch 監控 Express 代理程式的 Amazon MSK 指標](metrics-details-express.md)
+ [使用 Prometheus 監控 MSK 佈建叢集](open-monitoring.md)
+ [監控消費者延遲](consumer-lag.md)
+ [使用 Amazon MSK 儲存容量提醒](cluster-alerts.md)

# 使用 CloudWatch 檢視 Amazon MSK 指標
<a name="cloudwatch-metrics"></a>

您可以使用 CloudWatch 主控台、命令列或 CloudWatch API 來監控 Amazon MSK 指標。以下程序將說明如何使用這些不同的方法來存取指標。

**使用 CloudWatch 主控台檢視指標**

登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **指標**。

1. 選擇**所有指標**索引標籤，然後選擇 **AWS/Kafka**。

1. 若要檢視主題層級指標，請選擇 **Topic, Broker ID, Cluster Name (主題、代理程式 ID、叢集名稱)**；針對代理程式層級指標，請選擇 **Broker ID, Cluster (代理程式 ID、叢集名稱)**；對於叢集層級指標，請選擇 **Cluster Name (叢集名稱)**。

1. (選用) 在圖形窗格中，選取統計資料和時段，然後利用這些設定來建立 CloudWatch 警示。

**使用 存取指標 AWS CLI**  
使用 [list-metrics](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) 操作。

# 使用 CloudWatch 監控標準代理程式的 Amazon MSK 指標
<a name="metrics-details"></a>

Amazon MSK 與 Amazon CloudWatch 整合，因此您可以收集、檢視和分析 MSK Standard 代理程式的 CloudWatch 指標。您為 MSK 佈建叢集設定的指標會每隔 1 分鐘自動收集並推送至 CloudWatch。您可以將 MSK 佈建叢集的監控層級設定為下列其中一項：`DEFAULT`、`PER_TOPIC_PER_BROKER`、 `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` 監控層級取得。他們是免費的。


| 名稱 | 可見時 | 維度 | Description | 
| --- | --- | --- | --- | 
| ActiveControllerCount | 叢集到達 ACTIVE 狀態之後。 | 叢集名稱 | 每個叢集在任何時間應只能有一個控制器，處於作用中狀態。 | 
| BurstBalance |  叢集到達 ACTIVE 狀態之後。  |  叢集名稱，代理程式 ID  |  叢集中 EBS 磁碟區輸入輸出高載額度的餘額。用來調查延遲或輸送量降低的情況。 當磁碟區基準效能高於最大高載效能時，系統不會報告 EBS 磁碟區的 `BurstBalance`。如需詳細資訊，請參閱 [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 不包含複本，因此如果主題的複寫係數大於 1，則 PartitionCount 值的總和可能會高於 GlobalPartitionCount。 | 
| 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 | 代理程式在 minIsr 分割區下的數量。 | 
| 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'、CONNECTING: '0.5'、CONNECTEDREADONLY: '0.8'、CONNECTED: '1.0'、CLOSED: '5.0'、AUTH\$1FAILED: '10.0'。 | 

\$1 消費者延遲指標需要僅限 ASCII 的消費者群組名稱，並具有特定的排放需求。如需詳細資訊，請參閱[監控消費者延遲](consumer-lag.md)。

## `PER_BROKER` 層級監控
<a name="broker-metrics"></a>

將監控層級設定為時 `PER_BROKER`，除了所有 `DEFAULT` 層級指標以外，還會取得下列表格描述的指標。您為下列表格中的指標付費，而 `DEFAULT` 層級指標仍然是免費的。此表格中的指標包含下列維度：Cluster Name (叢集名稱)、Broker ID (代理程式 ID)。


| 名稱 | 可見時 | Description | 
| --- | --- | --- | 
| 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` 層級指標是免費的。此表格中的指標包含下列維度：Cluster Name (叢集名稱)、Broker ID (代理程式 ID)、Topic (主題)。

**重要**  
針對使用 Apache Kafka 2.4.1 或更新版本的 Amazon MSK 叢集，下表中的指標只會在其值首次變為非零值時才會出現。例如，如要查看 `BytesInPerSec`，一或多個生產者必須先將資料傳送到叢集。


| 名稱 | 可見時 | Description | 
| --- | --- | --- | 
| 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` 層級指標是免費的。此表格中的指標具有下列維度：取用者群組、主題、分區。


| 名稱 | 可見時 | Description | 
| --- | --- | --- | 
| 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](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kafka/describe-cluster-v2.html) 命令或 [DescribeClusterV2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters-clusterarn.html#DescribeClusterV2) 操作來描述佈建叢集。叢集的描述包括其狀態。


****  

| MSK 佈建叢集狀態 | 意義和可能行動 | 
| --- | --- | 
| ACTIVE |  您可以產生和取用資料。您也可以在叢集上執行 Amazon MSK API 和 AWS CLI 操作。  | 
| CREATING |  Amazon MSK 正在設定佈建叢集。您必須等待叢集達到 ACTIVE 狀態，才能使用它來產生或取用資料，或對其執行 Amazon MSK API 或 AWS CLI 操作。  | 
| DELETING | 正在刪除佈建叢集。您無法使用它來產生或取用資料。您也無法執行 Amazon MSK API 或其 AWS CLI 操作。 | 
| 失敗 | 佈建叢集建立或刪除程序失敗。您無法使用叢集來產生或取用資料。您可以刪除叢集，但無法對其執行 Amazon MSK API 或 AWS CLI 更新操作。 | 
| HEALING |  Amazon MSK 正在執行內部操作，例如取代運作狀態不良的代理程式。例如，代理程式可能沒有回應。您仍然可以使用佈建叢集來產生和使用資料。不過，您無法在叢集上執行 Amazon MSK API 或 AWS CLI 更新操作，直到它回到 ACTIVE 狀態為止。  | 
| MAINTENANCE | （僅限標準代理程式） Amazon MSK 正在叢集上執行例行維護操作。此類維護作業包括安全性修補。您仍可使用叢集來產生和使用資料。不過，您無法在叢集上執行 Amazon MSK API 或 AWS CLI 更新操作，直到它回到 ACTIVE 狀態為止。在 Express 代理程式維護期間，叢集狀態會保持 ACTIVE。請參閱 [在 MSK 佈建叢集上修補](patching-impact.md)。 | 
| REBOOTING\$1BROKER | Amazon MSK 正在重新啟動代理程式。您仍然可以使用佈建叢集來產生和使用資料。不過，您無法在叢集上執行 Amazon MSK API 或 AWS CLI 更新操作，直到它回到 ACTIVE 狀態為止。 | 
| UPDATING | 使用者啟動的 Amazon MSK API 或 AWS CLI 操作正在更新佈建叢集。您仍然可以使用佈建叢集來產生和使用資料。不過，您無法在叢集上執行任何其他 Amazon MSK API 或 AWS CLI 更新操作，直到它回到 ACTIVE 狀態為止。 | 

# 使用 CloudWatch 監控 Express 代理程式的 Amazon MSK 指標
<a name="metrics-details-express"></a>

Amazon MSK 與 CloudWatch 整合，因此您可以收集、檢視和分析 MSK Express 代理程式的 CloudWatch 指標。您為 MSK 佈建叢集設定的指標會每隔 1 分鐘自動收集並推送至 CloudWatch。您可以將 MSK 佈建叢集的監控層級設定為下列其中一項：`DEFAULT`、`PER_TOPIC_PER_BROKER`、 `PER_BROKER`或 `PER_TOPIC_PER_PARTITION`。以下各節中的資料表顯示從每個監控層級開始可用的指標。

`DEFAULT` 層級指標是免費的。其他指標的定價請參閱 [Amazon CloudWatch 定價](https://aws.amazon.com/cloudwatch/pricing/)頁面。

## `DEFAULT` Express 代理程式的關卡監控
<a name="express-default-metrics"></a>

下表所述的指標可在`DEFAULT`監控層級免費取得。


| 名稱 | 可見時 | 維度 | Description | 
| --- | --- | --- | --- | 
| 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`不包含複本，`PartitionCount`因此值的總和可能高於主題的`GlobalPartitionCount`複寫係數大於 `1`。 | 
| 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` Express 代理程式的關卡監控
<a name="express-per-broker-metrics"></a>

將監控層級設定為時 `PER_BROKER`，除了所有 `DEFAULT` 層級指標以外，還會取得下列表格描述的指標。您需為下表中的指標付費，而`DEFAULT`關卡指標仍然免費。此表格中的指標包含下列維度：Cluster Name (叢集名稱)、Broker ID (代理程式 ID)。


| 名稱 | 可見時 | Description | 
| --- | --- | --- | 
| 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` Express 代理程式的關卡監控
<a name="express-per-topic-per-partition-metrics"></a>

當您將監控層級設定為 時`PER_TOPIC_PER_PARTITION`，除了來自 `PER_TOPIC_PER_BROKER`、 `PER_BROKER`和 `DEFAULT`層級的所有指標之外，還會取得下表所述的指標。只有`DEFAULT`關卡指標是免費的。此表格中的指標具有下列維度：取用者群組、主題、分區。


| 名稱 | 可見時 | Description | 
| --- | --- | --- | 
| EstimatedTimeLag\$1 | 取用者群組取用一個主題之後。 | 耗盡分區偏移延遲的估計時間 (秒)。 | 
| OffsetLag\$1 | 取用者群組取用一個主題之後。 | 分區層級取用者延遲 (偏移量)。 | 
| RollingEstimatedTimeLag\$1 | 取用者群組取用一個主題之後。 | 滾動時間估計 （以秒為單位） 以耗盡分割區位移延遲。 | 

\$1 消費者延遲指標需要僅限 ASCII 的消費者群組名稱，並具有特定的排放需求。如需詳細資訊，請參閱[監控消費者延遲](consumer-lag.md)。

## `PER_TOPIC_PER_BROKER` Express 代理程式的關卡監控
<a name="express-per-topic-per-broker-metrics"></a>

當您將監控層級設定為 時`PER_TOPIC_PER_BROKER`，除了來自 `PER_BROKER`和 `DEFAULT`層級的所有指標之外，還會取得下表所述的指標。只有`DEFAULT`關卡指標是免費的。此表格中的指標包含下列維度：Cluster Name (叢集名稱)、Broker ID (代理程式 ID)、Topic (主題)。

**重要**  
下表中的指標只會在其值首次變成非零值後顯示。例如，若要查看 BytesInPerSec，一或多個生產者必須先將資料傳送至叢集。


| 名稱 | 可見時 | Description | 
| --- | --- | --- | 
| MessagesInPerSec | 建立主題之後。 | 每秒接收的訊息數量。 | 

# 使用 Prometheus 監控 MSK 佈建叢集
<a name="open-monitoring"></a>

您可以使用 Prometheus 監控 MSK 佈建的叢集，這是時間序列指標資料的開放原始碼監控系統。您可以使用 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 邏輯](https://help.sumologic.com/03Send-Data/Collect-from-Other-Data-Sources/Amazon_MSK_Prometheus_metrics_collection)。開放式監控提供免費使用，但是針對跨可用區域的資料傳輸則會產生費用。

如需 Prometheus 的資訊，請參閱 [Prometheus documentation](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 CLI AWS 管理主控台、 或 Amazon MSK API 在新的 MSK 叢集上啟用開放監控。

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

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) 開啟 Amazon MSK 主控台。

1. 在**監控**區段中，選取**使用 Prometheus 啟用開放式監控**旁邊的核取方塊。

1. 在頁面的所有區段內提供必要資訊，然後檢閱所有可用選項。

1. 選擇 **Create Cluster** (建立叢集)。

**使用 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. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) 開啟 Amazon MSK 主控台。

1. 選擇您要更新的叢集名稱。這會帶您前往包含叢集詳細資訊的頁面。

1. 在**屬性**標籤上，向下捲動並找到**監控**區段。

1. 選擇**編輯**。

1. 選取**使用 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 會將連接埠 11001 用於 JMX Exporter，將連接埠 11002 用於 Node Exporter。

------
#### [ 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 Web UI，請開啟可存取您 Amazon EC2 執行個體的瀏覽器，然後前往 `Prometheus-Instance-Public-IP:9090`，其中 *Prometheus-Instance-Public-IP* 是您在上一個步驟中取得的公有 IP 地址。

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

所有由 Apache Kafka 發到 JMX 的指標都可以透過 Prometheus，使用開放式監控存取。如需 Apache Kafka 指標的資訊，請參閱 Apache Kafka 文件中的 [Monitoring](https://kafka.apache.org/documentation/#monitoring)。除了 Apache Kafka 指標，、名為 `kafka.consumer.group:type=ConsumerLagMetrics` 的 JMX MBean 下的連接埠 11001 還會提供取用者延遲指標。您也可以使用 Prometheus Node Exporter，為您在端口 11002 的代理程式獲取 CPU 和磁盤指標。

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

Amazon Managed Service for Prometheus 是與 Prometheus 相容的監控和警示服務，可讓您用來監控 Amazon MSK 叢集。這是一項全受管服務，既可自動擴展指標的擷取、儲存、查詢和提醒，它還與 AWS 安全服務整合，讓您快速安全地存取資料。您可以使用開放原始碼 PromQL 查詢語言來查詢指標並根據指標發出提醒。

如需詳細資訊，請參閱《[Amazon Managed Service for Prometheus 入門](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-getting-started.html)》。

# 監控消費者延遲
<a name="consumer-lag"></a>

監控取用者延遲使您可以識別緩慢或停滯的取用者，他們無法跟上主題中可用的最新資料。必要時，您可以採取補救措施，例如擴展或重新啟動這些取用者。若要監控取用者延遲，您可以使用 Amazon CloudWatch 或透過 Prometheus 進行開放式監控。

取用者延遲指標可量化寫入主題的最新資料，與應用程式讀取的資料之間的差異。Amazon MSK 提供下列取用者延遲指標，您可以透過 Amazon CloudWatch 或以 Prometheus 進行開放式監控取得它們：`EstimatedMaxTimeLag`、`EstimatedTimeLag`、`MaxOffsetLag`、`OffsetLag` 和。`SumOffsetLag`如需這些指標的相關資訊，請參閱 [使用 CloudWatch 監控標準代理程式的 Amazon MSK 指標](metrics-details.md)。

Amazon MSK 支援針對採用 Apache Kafka 2.2.1 及更高版本的叢集使用取用者延遲指標。當您使用 Kafka 和 CloudWatch 指標時，請考慮下列幾點：
+ 只有當取用者群組處於 STABLE 或 EMPTY 狀態時，才會發出取用者延遲指標。成功完成重新平衡後，取用者群組是 STABLE，確保分割區平均分佈在取用者之間。
+ 在下列案例中，消費者延遲指標不存在：
  + 如果取用者群組不穩定。
  + 取用者群組的名稱包含冒號 (：)。
  + 您尚未設定取用者群組的取用者位移。
+ 取用者群組名稱會用作 CloudWatch 中取用者延遲指標的維度。雖然 Kafka 在取用者群組名稱中支援 UTF-8 字元，但 CloudWatch 僅支援[維度值](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Dimension.html)的 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 會自動將這些提醒傳送至您 AWS 帳戶的 [Amazon MSK 主控台](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/)、[AWS 運作狀態儀表板](https://aws.amazon.com/premiumsupport/technology/aws-health/)、[Amazon EventBridge](https://aws.amazon.com/pm/eventbridge/) 和電子郵件聯絡人。您也可以[設定 Amazon 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)、[DescribeCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn.html#DescribeCluster) 或 [DescribeClusterV2](https://docs.aws.amazon.com/MSK/2.0/APIReference/v2-clusters-clusterarn.html#DescribeClusterV2) API 來檢視叢集的 `CustomerActionStatus` 和所有警示。
+ 前往 [AWS Health 儀板表](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 EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-api-destination-partners.html)，將警示通知路由到第三方平台，例如 Datadog、NewRelic 和 Slack。