一、Kafka 監控工具介紹
目前還沒有一款公認比較優秀的 Kafka 監控工具,各有各的好,我們可以針對自己需要去選擇,但是如果你是 Kafka 叢集運維操作人員,還是推薦先用 Kafka Manager 來做監控。
1.Kafka Manager
- 雅虎公司開源的免費監控架構
- Scala 編寫的
- 國内外最受歡迎的、社群非常活躍
- 功能非常齊全且 UI 界面可執行一些簡單的叢集管理操作
2.Burrow
- 2017 年開源的免費監控架構
- Go 編寫的
- 專門監控消費者資訊
- 部署不友善、社群不太活躍
- 無 UI 界面,不友善運維操作
3.Kafka Monitor
- 用于 Kafka 叢集系統性測試
- Kafka 社群團隊人員編寫的免費監控架構,品質有保障
- 社群不太活躍
4.Kafka Offset Monitor
- 免費的監控架構
- 監控消費者位移
- UI 界面非常簡潔、美觀漂亮
- 國内受歡迎、現在社群不活躍了
5.Kafka Eagle
- 中國人開源的免費監控架構
- Java 編寫
- 部署友善、社群活躍也不高、維護的人少
- UI 界面很簡潔、美觀,可執行一些簡單的叢集管理操作、還有監控告警
6.Confluent Control Center
- 商業收費
- 功能最齊全
- 專業
二、安裝和部署
1、環境準備
centos 7、oracle jdk-1.8.45、scala-2.11.8、kafka-manager-2.0.0.0(支援 kafka-2.2.0)
2、安裝
2.1 下載下傳&解壓
由于官方未提供編譯好的二進制包,是以需要使用者自己編譯。但是,不用擔心,因為已經有大佬編譯好了。
二進制包(已經編譯好)https://blog.wolfogre.com/posts/kafka-manager-download/
$ cd /opt/soft
$ wget https://github.com/wolfogre/kafka-manager-docker/releases/download/2.0.0.0/kafka-manager-2.0.0.0.zip
$ unzip kafka-manager-2.0.0.0.zip
2.2 配置
修改配置:conf/application.conf ,需要修改的地方如下
- play.http.session.maxAge="365d"
- kafka-manager.zkhosts="zkhost1:2181,zkhost2:2181"
- basicAuthentication.enabled=true
- basicAuthentication.username="admin"
- basicAuthentication.password="input_your_password"
2.3 啟動
指定配置檔案位置和啟動端口号,預設為9000
./bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=6666 >> logs/kafka-manager.logs &
執行 start 指令後,檢查 kafka-manager 是否已經啟動。
如果已經啟動,先使用 IE 浏覽器(其他浏覽器也可以)通路。
http://172.16.5.128:6666
【可選項】也可以自己在 kafka-manager/bin 下建立重新開機的腳本:private-restart.sh
############################################################
#
# Notice: start the kafka-manager server, if the server is started ,we don't start else do.
#
############################################################
# 1 kafka dir
kafka_home=/opt/soft/kafka-manager/
kafka_http_port=6666
kafka_log=${kafka_home}/logs/kafka-manager.logs
kafka_restart_log=${kafka_home}/logs/kafka-manager-restart.logs
# 2 get the pid of kafka-manager process
pid_kafka_manager=`ps -ef |grep kafka-manager|grep http.port=6666|awk '{print $2}'`
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ----- kafka manager is alive , the pid is [${pid_kafka_manager}] . -----">>${kafka_restart_log}
# 3 judgement the pid alive or not
if [ ! -n "$pid_kafka_manager" ]
then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ----- kafka manager is died out ,we will restart it . -----" >> ${kafka_restart_log}
${kafka_home}/bin/kafka-manager -Dconfig.file=${kafka_home}/conf/application.conf -Dhttp.port=${kafka_http_port} >> ${kafka_log} &
new_pid_kafka_manager=`ps -ef |grep kafka-manager|grep http.port=7778|awk '{print $2}'`
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ----- kafka manager is alive all blood , the pid is [${new_pid_kafka_manager}] . -----">>${kafka_restart_log}
fi
*/5 * * * * sh /opt/soft/kafka-manager/bin/private-restart.sh
三、使用
- 添加 kafka 叢集
- 建立、删除和添加 kafka topic 的 partitions
- 檢視 topic list
- 檢視 consume topic 的延遲狀态
- 檢視 kafka group 的 topic