1. 程式人生 > >Kafka Eagle安裝詳情及問題解答

Kafka Eagle安裝詳情及問題解答

1.概述

最近有很多同學給筆者留言,說在安裝Kafka Eagle的時候,會遇到一些問題,請教如何解決?今天筆者就在這裡總結一下安裝步驟,和一些安裝的注意事項,以及解決方式。

2.內容

在安裝Kafka Eagle之前,可能新接觸的同學對Kafka Eagle不太瞭解,那我們現在簡要介紹一下Kafka Eagle。

原始碼地址:https://github.com/smartloli/kafka-eagle (感興趣的同學可以關注一波)

2.1 Kafka Eagle是什麼?

Kafka Eagle是一款用於監控和管理Apache Kafka的完全開源系統,目前託管在Github,由筆者和一些開源愛好者共同維護。它提供了完善的管理頁面,很方面的去管理和視覺化Kafka叢集的一些資訊,例如Broker詳情、效能指標趨勢、Topic集合、消費者資訊等。

同時,相容若干Kafka版本,例如0.8,0.9,...,以及截止到2019-12-16最新發布的2.4.0版本。

2.2 Kafka Eagle包含哪些功能?

Kafka Eagle監控管理系統,提供了一個視覺化頁面,使用者可以擁有不同的角色,例如管理員、開發者、遊客等。不同的角色對應不同的使用許可權。在知道了Kafka Eagle的作用之後,那麼它包含哪些功能呢?核心功能如下所示:

 

 2.2.1 資料面板

 

 負責展示Kafka叢集的Broker數、Topic數、Consumer數、以及Topic LogSize Top10和Topic Capacity Top10資料。

 

 2.2.2 主題

該模組包含主題建立、主題管理、主題預覽、KSQL查詢主題、主題資料寫入、主題屬性配置等。

 

 2.2.3 消費者組

該模組包含監控不同消費者組中的Topic被消費的詳情,例如LogSize、Offsets、以及Lag等。同時,支援檢視Lag的歷史趨勢圖。

 

 2.2.4 叢集管理

該模組包含Kafka叢集和Zookeeper叢集的詳情展示,例如Kafka的IP和埠、版本號、啟動時間、Zookeeper的Leader和Follower。同時,還支援多Kafka叢集切換,以及Zookeeper Client資料檢視等功能。

 

2.2.5 指標監控

該模組包含監控Kafka叢集和Zookeeper叢集的核心指標,包含Kafka的訊息傳送趨勢、訊息大小接收與傳送趨勢、Zookeeper的連線數趨勢等。同時,還支援檢視Broker的瞬時指標資料。

 

2.2.6 告警

該模組包含告警叢集異常和消費者應用Lag異常。同時,支援多種IM告警方式,例如郵件、釘釘、微信、Webhook等。

 

2.2.7 系統管理

該模組包含使用者管理,例如建立使用者、使用者授權、資源管理等。

 

2.2.8 資料大屏

該模組包含展示消費者和生產者當日及最近7天趨勢、Kafka叢集讀寫速度、Kafka叢集歷史總記錄等。

 

3.Kafka Eagle如何安裝?

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]

4.總結

總的來說,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 Eagle感興趣,可以關注一波。後續,在Github上筆者也會公佈每個版本的開發計劃,修復大家在issues上面提的需求和問題,將Kafka Eagle建設的更加完善、易用。

Kafka Eagle原始碼地址:https://github.com/smartloli/kafka-eagle

5.結束語

這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行討論或傳送郵件給我,我會盡我所能為您解答,與君共勉!

另外,博主出書了《Kafka並不難學》和《Hadoop大資料探勘從入門到進階實戰》,喜歡的朋友或同學, 可以在公告欄那裡點選購買連結購買博主的書進行學習,在此感謝大家的支援。關注下面公眾號,根據提示,可免費獲取書籍的教學視訊。&n