最近有不少同窗給筆者留言,說在安裝Kafka Eagle的時候,會遇到一些問題,請教如何解決?今天筆者就在這裏總結一下安裝步驟,和一些安裝的注意事項,以及解決方式。html
在安裝Kafka Eagle以前,可能新接觸的同窗對Kafka Eagle不太瞭解,那咱們如今簡要介紹一下Kafka Eagle。mysql
Kafka Eagle是一款用於監控和管理Apache Kafka的徹底開源系統,目前託管在Github,由筆者和一些開源愛好者共同維護。它提供了完善的管理頁面,很方面的去管理和可視化Kafka集羣的一些信息,例如Broker詳情、性能指標趨勢、Topic集合、消費者信息等。git
同時,兼容若干Kafka版本,例如0.8,0.9,...,以及截止到2019-12-16最新發布的2.4.0版本。github
Kafka Eagle監控管理系統,提供了一個可視化頁面,使用者能夠擁有不一樣的角色,例如管理員、開發者、遊客等。不一樣的角色對應不一樣的使用權限。在知道了Kafka Eagle的做用以後,那麼它包含哪些功能呢?核心功能以下所示:web
負責展現Kafka集羣的Broker數、Topic數、Consumer數、以及Topic LogSize Top10和Topic Capacity Top10數據。sql
該模塊包含主題建立、主題管理、主題預覽、KSQL查詢主題、主題數據寫入、主題屬性配置等。數據庫
該模塊包含監控不一樣消費者組中的Topic被消費的詳情,例如LogSize、Offsets、以及Lag等。同時,支持查看Lag的歷史趨勢圖。apache
該模塊包含Kafka集羣和Zookeeper集羣的詳情展現,例如Kafka的IP和端口、版本號、啓動時間、Zookeeper的Leader和Follower。同時,還支持多Kafka集羣切換,以及Zookeeper Client數據查看等功能。bash
該模塊包含監控Kafka集羣和Zookeeper集羣的核心指標,包含Kafka的消息發送趨勢、消息大小接收與發送趨勢、Zookeeper的鏈接數趨勢等。同時,還支持查看Broker的瞬時指標數據。服務器
該模塊包含告警集羣異常和消費者應用Lag異常。同時,支持多種IM告警方式,例如郵件、釘釘、微信、Webhook等。
該模塊包含用戶管理,例如建立用戶、用戶受權、資源管理等。
該模塊包含展現消費者和生產者當日及最近7天趨勢、Kafka集羣讀寫速度、Kafka集羣歷史總記錄等。
Kafka Eagle安裝部署很是方便,能夠從官網下載最新版本進行安裝,或者從Github下載最新的Release源代碼進行編譯安裝。
例如,從官網下載Kafka Eagle安裝包,按以下命令操做便可:
# 解壓安裝包
tar -zxvf kafka-eagle-v1.4.2-bin.tar.gz
而後,是配置環境變量,這裏須要注意的是,KE_HOME和JAVA_HOME均需在環境變量文件中進行配置(建議在~/.bash_profile文件中進行設置好,不然,可能在啓動的時候拋出環境變量找不到的錯誤),配置內容以下:
# 配置JAVA_HOME和KE_HOME: vi ~/.bash_profile export JAVA_HOME=/hadoop/jdk8 export KE_HOME=/hadoop/kafka-eagle export PATH=$PATH:$JAVA_HOME/bin:$KE_HOME/bin
接下來是配置Kafka Eagle的系統文件,這裏須要注意一些事項,配置內容以下:
###################################### # 設置Kafka多集羣,這裏只須要設置Zookeeper, # 系統會自動識別Kafka Broker ###################################### kafka.eagle.zk.cluster.alias=cluster1 cluster1.zk.list=127.0.0.1:2181 cluster2.zk.list=127.0.0.1:2181/plain cluster3.zk.list=127.0.0.1:2181/scram cluster4.zk.list=vmn4:2181 ###################################### # 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 cluster2.kafka.eagle.offset.storage=kafka #cluster3.kafka.eagle.offset.storage=kafka cluster4.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:/Users/dengjie/webserver/hadoop/sqlite/ke.db #kafka.eagle.username=root #kafka.eagle.password=root
最後是啓動,執行命令以下:
# 啓動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提供了簡單、易用的頁面,部署方便。同時,提供很是詳細的操做手冊,根據官網提供的操做手冊來安裝Kafka Eagle,通常均可以正常使用。另外,有時候可能會在日誌中發現一些鏈接超時或是空指針異常,對於這類問題,首先須要檢測Kafka集羣的各個Broker節點JMX_PORT是否開啓(這個Kafka默認是不開啓),而後就是空指針異常問題,這類問題一般發生在Kafka集羣配置了ACL,這就須要認真檢測Kafka Eagle配置文件中ACL信息是否正確(好比設置的用戶名和密碼是否正確,以及用戶是否擁有訪問Topic的權限等)
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並不難學》和《Hadoop大數據挖掘從入門到進階實戰》,喜歡的朋友或同窗, 能夠在公告欄那裏點擊購買連接購買博主的書進行學習,在此感謝你們的支持。關注下面公衆號,根據提示,可免費獲取書籍的教學視頻。