全部產品
Search
文件中心

:如何使用Prometheus監控Kafka

更新時間:Dec 27, 2024

本文介紹如何使用Prometheus監控阿里雲kafka及自建Kafka。

自建Prometheus觀測Kafka的痛點

使用自建Prometheus觀測Kafka,可能面臨的典型問題有以下幾點:

  1. 由於安全、組織管理等因素,您的業務通常部署在多個相互隔離的VPC,因此這需要您在多個VPC內都重複、獨立部署Prometheus,導致部署和營運成本較高。

  2. 每套完整的自建監控系統都需要安裝並配置Prometheus、Grafana、AlertManager等,其過程複雜、實施周期長。

  3. 開源Kafka JMX Agent在某些情境下佔用CPU高,對自建Kafka業務有一定幹擾。

  4. 對於阿里雲訊息佇列Kafka(簡稱阿里雲Kafka),自建Prometheus無法監控到,導致無法實現一站式、全域視角的監控建設。

  5. 對於部署在ECS上的自建Kafka,自建Prometheus缺少與阿里雲ECS快速整合的服務發現(ServiceDiscovery)機制,因此無法根據ECS標籤來靈活定義抓取Targets。如果自行實作類別似功能,則需要您使用Golang語言開發代碼調用阿里雲ECS POP介面,以整合開源Prometheus代碼,然後通過編譯打包後部署,這種方式實現門檻高、過程複雜、且版本升級困難。

  6. 常用開源Grafana大盤無法結合Kafka的原理與最佳實務進行深入定製。

  7. 缺少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執行個體監控大盤

  1. 登入雲訊息佇列 Kafka 版控制台,在左側導覽列,單擊实例列表

  2. 單擊目標執行個體名稱,在左側導覽列單擊Prometheus監控,可查看阿里雲Kafka執行個體監控大盤。

    ej

阿里雲Kafka消費組監控大盤

  1. 登入雲訊息佇列 Kafka 版控制台,在左側導覽列,單擊实例列表

  2. 單擊目標執行個體名稱,在左側導覽列單擊Group管理,然後單擊目標Group ID超連結,並單擊Prometheus監控頁簽,可查看阿里雲Kafka消費組監控大盤。

    ei

阿里雲Kafka Topic監控大盤

  1. 登入雲訊息佇列 Kafka 版控制台,在左側導覽列,單擊实例列表

  2. 單擊目標執行個體名稱,在左側導覽列單擊Topic管理,然後單擊目標Topic名稱超連結,並單擊Prometheus監控頁簽,可查看阿里雲Kafka Topic監控大盤。

    dl

使用可觀測監控 Prometheus 版配置阿里雲Kafka警示

  1. 登入Prometheus控制台

  2. 在左側導覽列單擊執行個體列表,進入可觀測監控 Prometheus 版的執行個體列表頁面。

  3. 單擊目標Prometheus執行個體名稱,進入整合中心頁面。
  4. 單擊已安裝地區的訊息佇列Kafka卡片,並在彈出的面板中單擊警示頁簽,查看阿里雲Kafka的Prometheus警示。目前可觀測監控 Prometheus 版提供執行個體、Group和Topic相關的關鍵警示指標,您還可以根據業務需求新增警示規則。建立Prometheus警示規則的具體操作,請參見Prometheus警示規則

    ft

使用Prometheus監控自建Kafka

除了阿里雲Kafka外,可觀測監控 Prometheus 版同時提供了自建Kafka的監控接入能力,支援Container Service(包含ACK、ASK、註冊叢集等)和ECS這兩個環境類型的Kafka監控。Kafka監控可以收集Broker數量、Topic分區、訊息組Lag等基礎指標,同時Kafka服務端無需您進行任何配置或重啟操作。

與阿里雲Kafka的監控情境不同,自建Kafka時,您不僅需要關注使用Kafka的例行指標外,還需要關注營運Kafka的內部指標。

部署自建Kafka的基礎監控

  1. 登入Prometheus控制台

  2. 在左側導覽列單擊接入中心,然後在右側頁面單擊Kafka卡片。20240912141821.jpg

  3. 按照介面提示配置接入參數,然後單擊確定。下文對主要參數進行說明。

    Container Service環境

    參數

    說明

    Pod 選擇標籤

    部署JMX Agent時,為Pod配置的標籤和標籤值,可觀測監控 Prometheus 版通過此標籤進行服務發現(Service Discovery)。詳細資料,請參見如何部署和配置Kafka JMX Agent

    Metric 採集間隔

    監控資料擷取時間間隔。

    1.jpg

    ECS(VPC)

    參數

    說明

    Kafka 叢集名稱

    每次接入需使用不同的叢集名稱,以防止指標重複採集,導致大盤展示錯誤。

    服務地址

    填寫Kafka Broker的串連地址,可以使用Kafka Broker的IP或DNS地址。多個Broker地址之間使用英文半形逗號或分號來分隔。

    開啟 SASL

    選擇Kafka服務端是否使用SASL。

    開啟 TLS

    選擇Kafka服務端是否使用TLS。

    Metric 採集間隔(單位/秒)

    監控資料擷取時間間隔。

    2.jpg

查看自建Kafka的基礎監控大盤

  1. 登入Prometheus控制台

  2. 在左側導覽列單擊執行個體列表,進入可觀測監控 Prometheus 版的執行個體列表頁面。

  3. 單擊目標Prometheus執行個體名稱,進入整合中心頁面。
  4. 單擊已安裝地區的Kafka卡片,在彈出的面板中單擊大盤頁簽,然後單擊大盤縮圖,即可查看對應Grafana大盤。

    Kafka監控大盤主要展示以下幾點,如下圖所示:vr

    • Kafka Broker數量。

    • 每個Topic的分區數。

    • 每個Topic的訊息入/出/堆積數量。

    • 每個Topic的ISR(In-Sync Replicas)數量。

配置自建Kafka的基礎監控警示

可觀測監控 Prometheus 版控制台的整合中心頁面單擊已安裝地區的Kafka卡片,並在彈出的面板中單擊警示頁簽,查看Kafka的Prometheus警示。

可觀測監控 Prometheus 版提供4個關鍵警示指標(有效Broker數量減少(3分鐘)、存在Under Replicated分區、分區數量過多、Consumer Topic訊息堆積),您還可以根據業務需求新增警示規則。建立Prometheus警示規則的具體操作,請參見Prometheus警示規則