本文介紹如何使用Prometheus監控阿里雲kafka及自建Kafka。
自建Prometheus觀測Kafka的痛點
使用自建Prometheus觀測Kafka,可能面臨的典型問題有以下幾點:
-
由於安全、組織管理等因素,您的業務通常部署在多個相互隔離的VPC,因此這需要您在多個VPC內都重複、獨立部署Prometheus,導致部署和營運成本較高。
-
每套完整的自建監控系統都需要安裝並配置Prometheus、Grafana、AlertManager等,其過程複雜、實施周期長。
-
開源Kafka JMX Agent在某些情境下佔用CPU高,對自建Kafka業務有一定幹擾。
-
對於阿里雲訊息佇列Kafka(簡稱阿里雲Kafka),自建Prometheus無法監控到,導致無法實現一站式、全域視角的監控建設。
-
對於部署在ECS上的自建Kafka,自建Prometheus缺少與阿里雲ECS快速整合的服務發現(ServiceDiscovery)機制,因此無法根據ECS標籤來靈活定義抓取Targets。如果自行實作類別似功能,則需要您使用Golang語言開發代碼調用阿里雲ECS POP介面,以整合開源Prometheus代碼,然後通過編譯打包後部署,這種方式實現門檻高、過程複雜、且版本升級困難。
-
常用開源Grafana大盤無法結合Kafka的原理與最佳實務進行深入定製。
-
缺少Kafka警示項目範本,需要您自行配置警示規則,導致消耗的工作量較大,且技術實現困難。
自建Prometheus與可觀測監控 Prometheus 版對比
Kafka監控情境下,自建Prometheus與可觀測監控 Prometheus 版的詳細對比如下:
|
對比項 |
自建Prometheus |
可觀測監控 Prometheus 版 |
|
部署、維護成本 |
多個VPC內,需要您自購ECS部署Prometheus、Grafana、AlertManager,營運成本高。 |
可觀測監控 Prometheus 版、Grafana及警示中心的一體化、全託管、免營運、開箱即用。 |
|
可用性、效能、資料容量 |
高可用能力不足、效能低、資料容量規模小。 |
高可用、高效能、巨量資料容量。 |
|
Exporter效能 |
開源Kafka JMX Agent在某些情境下佔用CPU高,對Kafka業務有一定幹擾。 |
可觀測監控 Prometheus 版持續對Kafka JMX Agent進行效能最佳化,增強其效能和穩定性。 |
|
服務發現 |
ECS環境下,通過開源Static_Configs、三方註冊中心等方式採集服務發現,使用不便,且維護成本高 |
除相容開源SD外,還內建了aliyun_sd_configs,方便您使用ECS標籤進行目標ECS匹配,達到與Kubernetes情境的LabelSelector一致體驗,極大簡化服務發現的配置和維護複雜度。 |
|
Grafana大盤 |
開源Grafana Kafka大盤通常較單一,大多隻是直接展示採集的Metric,缺少結合Kafka原理和最佳實務進行深入最佳化。 |
提供Kafka專業大盤模板,方便您快速、精準掌握Kafka全鏈路運行情況,並定位排查問題 |
|
警示規則 |
缺少Kafka警示指標模板,需要使用者自行研究、配置警示規則。 |
根據Kafka監控實踐,提供專業、靈活的警示指標模板,您可以白屏化配置各警示規則。 |
|
一站式、全域視角 |
由於可能存在多套Prometheus,而且自建Prometheus無法監控到阿里雲Kafka,因此無法實現一站式、全域視角的監控體系。 |
全託管的可觀測監控 Prometheus 版,同時阿里雲Kafka預設整合了可觀測監控 Prometheus 版,天然實現了一站式、全域視角的監控體系。 |
使用Prometheus監控阿里雲Kafka
阿里雲Kafka目前已預設整合了可觀測監控 Prometheus 版,主要監控的指標有:
-
執行個體、Group、Topic各級的流量指標。
-
Group和Topic的訊息堆積指標。
-
執行個體磁碟使用率指標。
-
Group的Rebalance指標。
查看阿里雲Kafka監控大盤
阿里雲Kafka提供了執行個體、Group和Topic三個監控大盤。通過這三個大盤,您可以及時清晰地掌握Kafka訊息的生產和消費情況,並快速定位使用阿里雲Kafka過程中遇到的問題。
阿里雲Kafka執行個體監控大盤
登入雲訊息佇列 Kafka 版控制台,在左側導覽列,單擊实例列表。
-
單擊目標執行個體名稱,在左側導覽列單擊Prometheus監控,可查看阿里雲Kafka執行個體監控大盤。

阿里雲Kafka消費組監控大盤
登入雲訊息佇列 Kafka 版控制台,在左側導覽列,單擊实例列表。
-
單擊目標執行個體名稱,在左側導覽列單擊Group管理,然後單擊目標Group ID超連結,並單擊Prometheus監控頁簽,可查看阿里雲Kafka消費組監控大盤。
在 Prometheus監控 面板中,可通過 instanceId、consumerGroup、topic 過濾器篩選監控資料,查看 消費堆積總量 和 消費堆積量(Topic層級) 折線圖。還可單擊 開源Grafana面板 或 匯入Grafana面板 進行擴充操作。
阿里雲Kafka Topic監控大盤
登入雲訊息佇列 Kafka 版控制台,在左側導覽列,單擊实例列表。
-
單擊目標執行個體名稱,在左側導覽列單擊Topic管理,然後單擊目標Topic名稱超連結,並單擊Prometheus監控頁簽,可查看阿里雲Kafka Topic監控大盤。
該監控大盤展示 topic訊息生產流量(bytes/s)、topic訊息消費流量(bytes/s) 和 topic訊息生產條數(個/秒) 三個指標的折線圖,支援通過 topic 下拉式清單切換目標 Topic,並可單擊 匯入Grafana專家版 將大盤匯入 Grafana 查看。
使用可觀測監控 Prometheus 版配置阿里雲Kafka警示
在左側導覽列選擇,進入可觀測監控 Prometheus 版的執行個體列表頁面。
- 單擊目標Prometheus執行個體名稱,進入整合中心頁面。
-
單擊已安裝地區的訊息佇列Kafka卡片,並在彈出的面板中單擊警示頁簽,查看阿里雲Kafka的Prometheus警示。目前可觀測監控 Prometheus 版提供執行個體、Group和Topic相關的關鍵警示指標,您還可以根據業務需求新增警示規則。建立Prometheus警示規則的具體操作,請參見建立Prometheus警示規則。
預設警示規則包括 Topic訊息生產條數、Topic訊息消費量、訊息堆積量、Group未消費此Topic訊息數、執行個體磁碟使用率、執行個體訊息生產量等。對於每條警示規則,您可以執行 編輯、停止 或 刪除 操作,也可以查看 警示事件歷史。
使用Prometheus監控自建Kafka
除了阿里雲Kafka外,可觀測監控 Prometheus 版同時提供了自建Kafka的監控接入能力,支援Container Service(包含ACK、ASK、註冊叢集等)和ECS這兩個環境類型的Kafka監控。Kafka監控可以收集Broker數量、Topic分區、訊息組Lag等基礎指標,同時Kafka服務端無需您進行任何配置或重啟操作。
與阿里雲Kafka的監控情境不同,自建Kafka時,您不僅需要關注使用Kafka的例行指標外,還需要關注營運Kafka的內部指標。
部署自建Kafka的基礎監控
-
在左側導覽列單擊接入中心,然後在右側頁面單擊Kafka卡片。
-
按照介面提示配置接入參數,然後單擊確定。下文對主要參數進行說明。
Container Service環境
參數
說明
Pod 選擇標籤
部署JMX Agent時,為Pod配置的標籤和標籤值,可觀測監控 Prometheus 版通過此標籤進行服務發現(Service Discovery)。詳細資料,請參見如何部署和配置Kafka JMX Agent。
Metric 採集間隔
監控資料擷取時間間隔。
選擇所屬環境類型為Container Service環境,在選擇Container Service叢集下拉框中選擇目的地組群,填寫接入名稱(同一接入環境中需唯一)。該組件目前處於實驗性階段,對 Kafka JVM 版本具有有限的相容性,請謹慎試用。完成所有配置後,單擊確定。
ECS(VPC)
參數
說明
Kafka 叢集名稱
每次接入需使用不同的叢集名稱,以防止指標重複採集,導致大盤展示錯誤。
服務地址
填寫Kafka Broker的串連地址,可以使用Kafka Broker的IP或DNS地址。多個Broker地址之間使用英文半形逗號或分號來分隔。
開啟 SASL
選擇Kafka服務端是否使用SASL。
開啟 TLS
選擇Kafka服務端是否使用TLS。
Metric 採集間隔(單位/秒)
監控資料擷取時間間隔。
配置資訊中還包含接入名稱(非必填,需保持唯一)、網路連通性測試連結(用於驗證服務地址可達性)以及自訂標籤欄位(可通過加號添加多組索引值對)。填寫完成後單擊確定。
查看自建Kafka的基礎監控大盤
在左側導覽列選擇,進入可觀測監控 Prometheus 版的執行個體列表頁面。
- 單擊目標Prometheus執行個體名稱,進入整合中心頁面。
-
單擊已安裝地區的Kafka卡片,在彈出的面板中單擊大盤頁簽,然後單擊大盤縮圖,即可查看對應Grafana大盤。
Kafka監控大盤主要展示以下幾點,如下圖所示:

-
Kafka Broker數量。
-
每個Topic的分區數。
-
每個Topic的訊息入/出/堆積數量。
-
每個Topic的ISR(In-Sync Replicas)數量。
-
配置自建Kafka的基礎監控警示
在可觀測監控 Prometheus 版控制台的整合中心頁面單擊已安裝地區的Kafka卡片,並在彈出的面板中單擊警示頁簽,查看Kafka的Prometheus警示。
可觀測監控 Prometheus 版提供4個關鍵警示指標(有效Broker數量減少(3分鐘)、存在Under Replicated分區、分區數量過多、Consumer Topic訊息堆積),您還可以根據業務需求新增警示規則。建立Prometheus警示規則的具體操作,請參見建立Prometheus警示規則。警示頁簽展示Kafka相關的Prometheus警示規則列表,預設包含有效Broker數量減少、存在Under Replicated分區、分區數量過多、Consumer Topic訊息堆積4條警示規則,均為靜態閾值檢測類型、預設警示分組、P1等級、運行中狀態。您可以對警示規則執行編輯、停止、刪除及查看警示事件歷史等操作,也可以單擊右上方建立Prometheus警示規則新增規則。