Kafka監控系統Kafka Eagle

kafka集羣部署完成後需要有一個可視化web頁面,便於實時查看和觀測kafka集羣狀態,kafka本身並沒有提供可視化頁面,但市面上有很多開源的可視化工具,我們以其中的Kafka Eagle爲例,在安裝Kafka Eagle之前,至少需要安裝JDK、kafka、zookeeper的環境後,再進行後續操作。
本文的前置條件: Kafka 3.6.1 集羣安裝與部署

1.安裝Mysql

Kafka-Eagle 的安裝依賴於 MySQL,MySQL 主要用來存儲可視化展示的數據。
參考文章:Debian 安裝 Mysql

2.Kafka 環境準備

調整Kafka內存佔用等參數,暴露JMX

JMX(Java Management Extensions)是一個爲應用程序植入管理功能的框架。JMX是一套標準的代理和服務,使用戶能夠在任何Java應用程序中使用這些代理和服務實現管理。對外暴露數據,方便某些插件來監控和管理。

1.修改kafka-server-start.sh腳本

vi bin/kafka-server-start.sh

找到下面內容的片段

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi

替換爲如下內容

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-server -Xms2G -Xmx2G -XX:PermSize=128m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70"
    export JMX_PORT="9999"
    # export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
fi

注:需要爲每一個節點都修改,修改一個節點剩餘的節點拷貝過去即可。修改完成後重啓Kafka集羣

3.Kafka-Eagle 安裝

官網地址:https://www.kafka-eagle.org/
下載包並上傳到某一節點。[可能需要加速]

1.解壓包

tar -zxvf kafka-eagle-bin-3.0.1.tar.gz
cd kafka-eagle-bin-3.0.1/
mkdir /usr/efak-web
tar -zxvf efak-web-3.0.1-bin.tar.gz -C /usr/efak-web/

2.配置環境變量

在/etc/profile.d中配置

1.新建efak.sh

vi /etc/profile.d/efak.sh
# kafka EFAK_HOME
export KE_HOME=/usr/efak-web/efak-web-3.0.1
export PATH=$PATH:$KE_HOME/bin

2.授予文件執行權限

chmod u+x /etc/profile.d/efak.sh

3.刷新環境變量

source /etc/profile

3.修改配置文件

1.修改zookeeper相關

efak.zk.cluster.alias=cluster1
cluster1.zk.list=192.168.58.130:2181,192.168.58.131:2181,192.168.58.132:2181/kafka

2.修改zookeeper客戶端線程限制[可選]

kafka.zk.limit.size=32

3.修改kafka offset 保存位置

kafka or zk

cluster1.efak.offset.storage=kafka

4.配置 mysql 連接

efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://192.168.58.130:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=coreqi

5.配置kafka的JMX的地址,不然拿不到kafka的數據,如果是本機,可忽略

cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://192.168.58.130:9999/jmxrmi

完整配置文件如下

######################################
# multi zookeeper & kafka cluster list
# Settings prefixed with 'kafka.eagle.' will be deprecated, use 'efak.' instead
######################################
efak.zk.cluster.alias=cluster1
cluster1.zk.list=192.168.58.130:2181,192.168.58.131:2181,192.168.58.132:2181/kafka

######################################
# zookeeper enable acl
######################################
cluster1.zk.acl.enable=false
cluster1.zk.acl.schema=digest
cluster1.zk.acl.username=test
cluster1.zk.acl.password=test123

######################################
# broker size online list
######################################
cluster1.efak.broker.size=20

######################################
# zk client thread limit
######################################
kafka.zk.limit.size=32

######################################
# EFAK webui port
######################################
efak.webui.port=8048

######################################
# EFAK enable distributed
######################################
efak.distributed.enable=false
efak.cluster.mode.status=master
efak.worknode.master.host=localhost
efak.worknode.port=8085

######################################
# kafka jmx acl and ssl authenticate
######################################
cluster1.efak.jmx.acl=false
cluster1.efak.jmx.user=keadmin
cluster1.efak.jmx.password=keadmin123
cluster1.efak.jmx.ssl=false
cluster1.efak.jmx.truststore.location=/data/ssl/certificates/kafka.truststore
cluster1.efak.jmx.truststore.password=ke123456

######################################
# kafka offset storage
######################################
cluster1.efak.offset.storage=kafka

######################################
# kafka jmx uri
######################################
cluster1.efak.jmx.uri=service:jmx:rmi:///jndi/rmi://%s/jmxrmi

######################################
# kafka metrics, 15 days by default
######################################
efak.metrics.charts=true
efak.metrics.retain=15

######################################
# kafka sql topic records max
######################################
efak.sql.topic.records.max=5000
efak.sql.topic.preview.records.max=10

######################################
# delete kafka topic token
######################################
efak.topic.token=keadmin

######################################
# kafka sasl authenticate
######################################
cluster1.efak.sasl.enable=false
cluster1.efak.sasl.protocol=SASL_PLAINTEXT
cluster1.efak.sasl.mechanism=SCRAM-SHA-256
cluster1.efak.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="kafka" password="kafka-eagle";
cluster1.efak.sasl.client.id=
cluster1.efak.blacklist.topics=
cluster1.efak.sasl.cgroup.enable=false
cluster1.efak.sasl.cgroup.topics=
cluster2.efak.sasl.enable=false
cluster2.efak.sasl.protocol=SASL_PLAINTEXT
cluster2.efak.sasl.mechanism=PLAIN
cluster2.efak.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka-eagle";
cluster2.efak.sasl.client.id=
cluster2.efak.blacklist.topics=
cluster2.efak.sasl.cgroup.enable=false
cluster2.efak.sasl.cgroup.topics=

######################################
# kafka ssl authenticate
######################################
cluster3.efak.ssl.enable=false
cluster3.efak.ssl.protocol=SSL
cluster3.efak.ssl.truststore.location=
cluster3.efak.ssl.truststore.password=
cluster3.efak.ssl.keystore.location=
cluster3.efak.ssl.keystore.password=
cluster3.efak.ssl.key.password=
cluster3.efak.ssl.endpoint.identification.algorithm=https
cluster3.efak.blacklist.topics=
cluster3.efak.ssl.cgroup.enable=false
cluster3.efak.ssl.cgroup.topics=

######################################
# kafka sqlite jdbc driver address
######################################
#efak.driver=org.sqlite.JDBC
#efak.url=jdbc:sqlite:/hadoop/kafka-eagle/db/ke.db
#efak.username=root
#efak.password=www.kafka-eagle.org

######################################
# kafka mysql jdbc driver address
######################################
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://192.168.58.130:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=coreqi

4.啓動

啓動的前提條件是先啓動Zookeeper、Kafka

bin/ke.sh start

5.訪問

http://192.168.58.130:8048/
username: admin
password: 123456

5.停止

bin/ke.sh stop
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章