新聞中心
一文聊透如何監(jiān)控 Kafka 服務
作者:王江華 2023-05-11 08:16:13
云計算
Kafka 今天我們來講解幾款 Kafka 常用可視化監(jiān)控工具,主要有以下幾個 「JConsole」、「Kafka Manager」、「Kafka Offset Explorer」、「KafkaOffsetMonitor」、「LogiKM」。

創(chuàng)新互聯(lián)建站不只是一家網(wǎng)站建設的網(wǎng)絡公司;我們對營銷、技術、服務都有自己獨特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關注我們的網(wǎng)站建設、做網(wǎng)站質(zhì)量和服務品質(zhì),在得到用戶滿意的同時,也能得到同行業(yè)的專業(yè)認可,能夠為行業(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術創(chuàng)新,服務升級,滿足企業(yè)一站式營銷型網(wǎng)站建設需求,讓再小的高端網(wǎng)站設計也能產(chǎn)生價值!
大家好,我是 華仔, 又跟大家見面了。
對于 Kafka 來說,監(jiān)控始終是一個難題。目前,沒有一款免費監(jiān)控軟件能夠滿足大部分用戶需求,這些監(jiān)控軟件各有特色但都不夠全面。
今天我們來講解幾款 Kafka 常用可視化監(jiān)控工具,主要有以下幾個 「JConsole」、「Kafka Manager」、「Kafka Offset Explorer」、「KafkaOffsetMonitor」、「LogiKM」。
這里說明下,第一個「Jconsole」是基于 JMX 的可視化監(jiān)控管理工具,安裝好 JDK 之后,Java 就提供了 JConsole 客戶端工具,利用它可以監(jiān)控 Kafka 的各項指標。其他幾個都是專門用來 Kafka 集群管理與監(jiān)控的。
下面分別介紹下這幾款監(jiān)控工具的使用。
一、JConsole
這里先簡單的介紹一下 JMX,全稱:Java Manangement Extensions。JMX 可以管理、監(jiān)控正在運行中的 Java 程序,常用來管理「線程」、「內(nèi)存」、「日志Level」、「服務重啟」、「系統(tǒng)環(huán)境」等,由于 kafka 底層也是 基于 Java,所以也可以使用 JMX 標準來管理和監(jiān)控 Kafka。
JConsole 是一種基于 JMX 的可視化監(jiān)控和管理工具,從 Java 5 開始被引入, 用來監(jiān)控 VM,總體來說, 它是社區(qū)自帶的一個小工具,對于一般簡單的監(jiān)控場景,它還能應付,但是它畢竟功能有限,復雜的監(jiān)控整體解決方案,還是要依靠監(jiān)控框架。
- 修改 kakfa-server-start.sh 腳本的 JXM_PORT 配置,如下圖:
export JMX_PORT="9999"
- 這里我們直接在 windows 上啟動 JConsole,在 CMD 命令行中輸入 JConsole 并回車, 如下圖:
此時會調(diào)起 JConsole 的啟動界面。
當彈出 "安全連接失敗" 提示框,選擇 "不安全的連接" 按鈕, 進入 JConsole 監(jiān)控的主界面, 如下圖所示:
二、KafkaManager
Kafka Manager 是 yahoo 在 2015 年開源的一款 Kafka 監(jiān)控軟件,底層使用 Scala 語言編寫,用來管理和監(jiān)控 Kafka 集群。
這款軟件是眾多 Kafka 監(jiān)控軟件中的翹楚,無論是界面展示內(nèi)容的豐富程度,還是管理集群功能的全面性,Kafka Manager 都數(shù)一數(shù)二。
目前 Kafka Manager 已經(jīng)支持監(jiān)控新版本 Consumer,如果用戶在使用 Kafka Manager 時無法看到新版本的 Consumer Group 信息,那么就需要檢查一下是否使用了過舊版本的 Kafka Manager。
這個管理工具可以很容易地發(fā)現(xiàn)分布在集群中的哪些 topic 分布不均勻,或者是分區(qū)在整個集群分布不均勻的的情況。
它支持管理多個集群、選擇副本、副本重新分配以及創(chuàng)建 Topic。同時,這個管理工具也是一個非常好的可以快速瀏覽這個集群的工具,有如下功能:
- 管理多個kafka集群。
- 便捷的檢查kafka集群狀態(tài)(topics,brokers,備份分布情況,分區(qū)分布情況)。
- 選擇你要運行的副本。
- 基于當前分區(qū)狀況進行。
- 可以選擇topic配置并創(chuàng)建topic(0.8.1.1和0.8.2的配置不同)。
- 刪除topic(只支持0.8.2以上的版本并且要在broker配置中設置delete.topic.enable=true)。
- Topic list會指明哪些topic被刪除(在0.8.2以上版本適用)。
- 為已存在的topic增加分區(qū)。
- 為已存在的topic更新配置。
- 在多個topic上批量重分區(qū)。
- 在多個topic上批量重分區(qū)(可選partition broker位置)。
kafka-manager 項目地址:https://github.com/yahoo/kafka-manager
本文我們使用版本:kafka-manager-3.0.0.5.zip,項目已改名位 CMAK,其安裝和配置非常簡單,可以按照下面的步驟配置 Kafka Manager。
1、在啟動 Kafka 集群的命令腳本中,增加 JMX 的相關參數(shù),否則無法使用客戶端工具管理和監(jiān)控 Kafka 集群。這里我們以本地虛擬機為例。
2、修改 Kafka-run-class.sh 文件,找到 JMX settings 的配置位置,增加 JMX Server 的配置信息。
#此處可以改為自己的hostname
-Djava.rmi.server.hostname=LAPTOP-3B77RHGG3、修改 kakfa-server-start.sh 腳本的 JXM_PORT 配置,如下圖:
export JMX_PORT="9999"4、啟動 kafka。
bin/kafka-server-start.sh config/server.properties &5、下載 Kafka Manager,并解壓到 /home/wangjianghua/src/ 目錄下。
# github地址
https://github.com/yahoo/CMAK
# 下載版本 kafka-manager-3.0.0.5
wget https://github.com/yahoo/CMAK/releases/download/3.0.0.5/cmak-3.0.0.5.zip
# 解壓文件
unzip cmak-3.0.0.5.zip6、修改配置,進入 Kafka Manager 的 conf 目錄,修改 application.conf 文件。
# 這里是指定 zookeeper 集群的地址,如果有多個,逗號隔開
cmak.zkhosts="localhost:2181"7、啟動 Kafka Manager 。
# nohup 方式
nohup bin/cmak &
# 指定參數(shù)方式啟動 默認啟動端口 9000
nohup bin/cmak -Dconfig.file=conf/application.conf -Dhttp.port=9000 &8、啟動成功后,輸出如下日志信息。
我們使用 bin/cmak 這個命令來啟動,會使用默認配置文件和端口號9000。
啟動完畢后可以查看端口是否啟動,由于啟動過程需要一段時間,端口起來的時間可能會延后。
從日志中可以看出, Kafka Manager 將運行在 9000 端口上,使用ip地址:端口訪問測試。
可以看到,此時已經(jīng)啟動成功了。
如果報如下錯誤,請升級jdk版本到11。
1、測試 KafkaManager
(1)新建 Cluster
點擊【Cluster】>【Add Cluster】打開如下添加集群的配置界面:
輸入集群的名字(如Kafka-Cluster-1)和 Zookeeper 服務器地址(如localhost:2181),選擇最接近的Kafka版本(如2.7)
注意:如果沒有在 Kafka 中配置過 JMX_PORT,千萬不要選擇第一個復選框。Enable JMX Polling 如果選擇了該復選框,Kafka-manager 可能會無法啟動。
其他 broker 相關的配置可以根據(jù)自己需要進行配置,默認情況下,點擊【保存】時,會提示幾個默認值為1的配置錯誤,需要配置為>=2的值。提示如下:
新建完成后,運行界面如下:
(2)Topic List
(3)Broker
2、管理 KafkaManager
(1)創(chuàng)建 Topic
點擊【Topic】>【Create】可以方便的創(chuàng)建并配置主題。如下圖所示:
(2)查看 Topic
點擊【topic】下面的 topic 名稱,即可查看對應 topic 信息。
三、Kafka Offset Explorer
Kafka Tool 是用來管理和使用 Kafka 集群的圖形應用程序。提供了一種直觀的界面,讓用戶可以快速查看 Kafka 集群中的對象及集群主題中存儲的信息,關鍵功能如下:
- 快速查看所有 Kafka 集群,包括 Broker、主題、消費者等。
- 查看分區(qū)中消息的內(nèi)容并添加信息消息。
- 查看消費者偏移量。
- 支持 JSON 、XML 格式輸出。
- 添加和刪除主題以及其他管理功能。
- 支持自定義插件。
從 Kafka Tool 官網(wǎng)直接下載 Kafka Offset Explorer 2.3.2 版本,下載完成后,直接按照啟動即可。
添加一個 Kafka Cluster 集群并測試,直接連接測試如下:
單擊“是”進入 Kafka 集群的首頁。
通過上面圖示我們可以看到 Kafka 集群的 Broker 信息、 Topics 信息以及 Consumers 信息。
現(xiàn)在我們來創(chuàng)建一個 Topic。
1、 點擊 "Browers" 集群中的 "Topics" 節(jié)點,并在右邊的界面中單擊。
按鈕,或者右擊 "Topics" 節(jié)點2、 輸入 Topic 名稱、分區(qū)數(shù)、每個分區(qū)的副本數(shù),如下圖所示:3、 單擊 "Add" 按鈕,成功創(chuàng)建 Topic,如下圖所示:
4、現(xiàn)在我們來用該工具來接收 message2 上的消息數(shù)據(jù)。,選擇剛創(chuàng)建的主題 message2,并在右邊的窗口選擇 "Data" 選項卡,如下圖所示:
5、 啟動一個 Kafka Producer 命令行終端,發(fā)送一些消息,如下圖所示:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic message26、這里的數(shù)據(jù)格式默認是 "Byte Array",可以在 Properties 的設置中將其修改為 String,并單擊 "Update" 按鈕,如下圖所示:
7、再次回到 Data 頁面,此時數(shù)據(jù)將按照正確的格式展示,如下圖所示:
因為中間在終端打了好多回車,所以出來也是空白值。
四、KafkaOffsetMonitor
KafkaOffsetMonitor 是一款 Kafka 開源社區(qū)提供的基于 web 界面的管理平臺,可以用來實時監(jiān)控 Kafka 服務的消費組以及它們所在分區(qū)的 Offset,你可以通過瀏覽當前的消費者組,并且每個 Topic 的所有分區(qū)的消費情況都可以進行實時監(jiān)控。
它讓我們很直觀的知道,每個 Partition 的 Message 是否消費掉,有沒有阻塞情況等等。這個 Web 管理平臺保留的Partition、Offset 和它的 Consumer 的相關歷史數(shù)據(jù),我們可以通過瀏覽 Web 管理的相關模塊,清楚的知道最近一段時間的消費情況。
該Web管理平臺有以下功能:
- 對 Consumer 的消費監(jiān)控,并列出每個 Consumer 的 Offset 數(shù)據(jù)。
- 保護消費者組列表信息。
- 每個 Topic 的所有 Partition 列表包含:Topic、Pid、Offset、LogSize、Lag 以及 Owner 等等。
- 瀏覽查閱 Topic 的歷史消費信息。
它的安裝比較簡單,下載鏈接: 鏈接:https://pan.baidu.com/s/1Vfcfvci0g4YwSuYjcSpf0w?pwd=8484 提取碼:8484。
將其放到某個目錄下,然后在該目錄下執(zhí)行如下命令:
java -cp KafkaOffsetMonitor-assembly-0.3.0.jar \
com.quantifind.kafka.offsetapp.OffsetGetterWeb \
--offsetStorage kafka \
--zk localhost:2181 \
--port 8080 \
--refresh 10.seconds \
--retain 1.days這里簡單介紹下命令的含義:
- com.quantifind.kafka.offsetapp.OffsetGetterWeb 是運行的 web 監(jiān)控類。
- --zk 用來指定 zookeeper 的地址。
- --port 用來指定 web 運行的端口。
- --refresh 、--retain 用來指定頁面數(shù)據(jù)刷新的時間以及保留數(shù)據(jù)的時間。
打開瀏覽器訪問 8080 端口,就可以打開 KafkaOffsetMonitor 的首頁,如下圖所示:
然后選擇 "Topic List" 選項卡,就可以監(jiān)控某個 Topic 中的具體消費者消息,如下圖所示:
五、LogiKM
最后給大家推薦一款非常實用牛逼的監(jiān)控工具, 它是滴滴開源的號稱 "東半球最簡單易用的一站式云原生實時流數(shù)據(jù)平臺"。
可以點擊官方進行學習:https://knowstreaming.com。
開發(fā)文檔如下:https://doc.knowstreaming.com/product/1-brief-introduction。
當前名稱:一文聊透如何監(jiān)控Kafka服務
網(wǎng)頁URL:http://m.fisionsoft.com.cn/article/dghhegi.html


咨詢
建站咨詢
