Kafka監控工具
官網 https://www.kafka-eagle.org/
是什么
Kafka Eagle是一款用於監控和管理Apache Kafka的完全開源系統,目前托管在Github,由筆者和一些開源愛好者共同維護。它提供了完善的管理頁面,很方面的去管理和可視化Kafka集群的一些信息,例如Broker詳情、性能指標趨勢、Topic集合、消費者信息等。
為什么要用
Kafka Eagle監控管理系統,提供了一個可視化頁面,使用者可以擁有不同的角色,例如管理員、開發者、游客等。不同的角色對應不同的使用權限。
1.展示Kafka集群的Broker數、Topic數、Consumer數、以及Topic LogSize Top10和Topic Capacity Top10數據。
2.主題創建、主題管理、主題預覽、KSQL查詢主題、主題數據寫入、主題屬性配置等
3.監控不同消費者組中的Topic被消費的詳情,例如LogSize、Offsets、以及Lag等。同時,支持查看Lag的歷史趨勢圖。
4.Kafka集群和Zookeeper集群的詳情展示,例如Kafka的IP和端口、版本號、啟動時間、Zookeeper的Leader和Follower。同時,還支持多Kafka集群切換,以及Zookeeper Client數據查看等功能。
5.監控Kafka集群和Zookeeper集群的核心指標,包含Kafka的消息發送趨勢、消息大小接收與發送趨勢、Zookeeper的連接數趨勢等。同時,還支持查看Broker的瞬時指標數據。
6.告警集群異常和消費者應用Lag異常。同時,支持多種IM告警方式,例如郵件、釘釘、微信、Webhook等。
7.包含用戶管理,例如創建用戶、用戶授權、資源管理等。
8.展示消費者和生產者當日及最近7天趨勢、Kafka集群讀寫速度、Kafka集群歷史總記錄等。
怎么用?
從官網下載linux安裝包
文件上傳並解壓
tar -zxvf xxxxxx
修改名稱
mv xxxx kafka-eagle
打開文件發現還有一個壓縮文件, tar -zxvf 該包 解壓到當前目錄並刪除tar包
配置環境變量
vi /etc/profile
# 這里我在測試環境進行配置的時候發現沒有權限,在etc下修改配置文件需要root權限,不過可以使用當前用戶的環境變量配置,還可以配置你想要的jdk版本的環境變量
vi ~/.bash_profile
# profile
export KE_HOME=/opt/ronnie/kafka/kafka-eagle/kafka-eagle-web-xxx
export PATH=$KE_HOME/bin:$PATH
修改config文件夾下system-config.properties文件進行配置
# 設置集群名和zookeeper集群列表
kafka.eagle.zk.cluster.alias=cluster1
cluster1.zk.list=xxx:2181,xxx2181,,,,,,
# Zookeeper線程池最大連接數
kafka.zk.limit.size=25
# Kafka Eagle的頁面訪問端口
kafka.eagle.webui.port=8048
# 存儲消費信息的類型,在0.9版本之前,消費
# 信息會默認存儲在Zookeeper中,所以存儲類型
# 設置zookeeper即可,如果是在0.10版本之后,
# 消費者信息默認存儲在Kafka中,所以存儲類型
# 設置為kafka。而且,在使用消費者API時,盡量
# 客戶端Kafka API版本和Kafka服務端的版本保持
# 一致性。
cluster1.kafka.eagle.offset.storage=kafka
# 開啟性能監控,數據默認保留30天
kafka.eagle.metrics.charts=true
kafka.eagle.metrics.retain=30
# KSQL查詢Topic數據默認是最新的5000條,如果
# 在使用KSQL查詢的過程中出現異常,可以將下面
# 的false屬性修改為true,Kafka Eagle會在
# 系統中自動修復錯誤。
kafka.eagle.sql.topic.records.max=5000
kafka.eagle.sql.fix.error=false
# 刪除Kafka Topic時需要輸入刪除密鑰,由
# 管理員執行
kafka.eagle.topic.token=keadmin
# 開啟Kafka ACL特性,例如SCRAM或者PLAIN,
# 一般生產環境會使用SCRAM來做ACL,應為SCRAM
# 可以動態創建和管理用戶
cluster1.kafka.eagle.sasl.enable=false
cluster1.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster1.kafka.eagle.sasl.mechanism=SCRAM-SHA-256
cluster1.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret";
cluster1.kafka.eagle.sasl.client.id=
cluster2.kafka.eagle.sasl.enable=true
cluster2.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster2.kafka.eagle.sasl.mechanism=PLAIN
cluster2.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";
cluster2.kafka.eagle.sasl.client.id=
# 存儲Kafka Eagle元數據信息的數據庫,目前支持
# MySQL和Sqlite,默認使用Sqlite進行存儲
kafka.eagle.driver=com.mysql.jdbc.Driver
kafka.eagle.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
kafka.eagle.username=root
kafka.eagle.password=123456
#kafka.eagle.driver=org.sqlite.JDBC
#kafka.eagle.url=jdbc:sqlite:xxxx/sqlite/ke.db
#kafka.eagle.username=root
#kafka.eagle.password=root
在設置數據庫的時候,就比如我的部署環境的數據庫是oracle,所以更推薦使用sqlite,輕量 好用 掉發少,一般linux系統自帶sqlite
查看環境下的sqlite信息 : sqlite3
選擇目錄,執行 sqlite3 database名稱 比如sqlite3 ke.db
此時就可以有一個ke.db的數據庫給我去進行eagle的安裝了 ,我這里用的默認的賬號密碼。
Kafka集群的各個Broker節點JMX_PORT開啟
vi kafka-server-start.sh
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
export KAFKA_HEAP_OPTS="-server -Xms8G -Xmx8G -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
# 開啟JMX_PORT端口,端口開啟后,Kafka Eagle系統會自動感知獲取
export JMX_PORT="9999"
# 注釋腳本中默認的信息
# export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi
最后就是啟動
# 啟動Kafka Eagle系統,執行如下命令:
ke.sh start
# 查看Kafka Eagle運行狀態
ke.sh status
# 停止Kafka Eagle
ke.sh stop
# 查看Kafka Eagle GC情況
ke.sh gc
# 查看Kafka Eagle服務器資源占用情況,例如TCP、句柄等
ke.sh stats
# 查看Kafka Eagle版本號
ke.sh version
# 查看Kafka Eagle服務器上JDK的編碼情況(如果JDK編碼不是UTF-8,可能會有異常出現,執行如下命令,根據提示來修復JDK編碼問題)
ke.sh jdk
# 查看Kafka Eagle中是否存在某個類(如果需要精確,類名前面可以加上包名)
ke.sh find [ClassName]
到此kafka-eagle就已經安裝成功了,不過感覺數據不夠實時,以后再試試其他的監控工具