天天看點

使用kafka-eagle監控Kafka

# 監控kafka叢集,開啟監控趨勢圖使用
# 有一個問題,需要在kafka-server-start.sh檔案中配置端口,有如下三種辦法
# 第一種:複制并修改kafka目錄,比如kafka-1,kafka-2,kafka-3,然後再每個目錄下修改kafka-server-start.sh檔案
# 第二種:在啟動腳本start.sh中添加指定端口
# 第三種:多複制幾個kafka-server-start.sh檔案,然後進行修改,最後在start.sh中修改一下

# 以下三種方法任選其一即可

# 第一種方式辦法,相應行修改成如下形式,注意端口号不同
# 使用的是不同目錄下的不同kafka-server-start.sh檔案
# start.sh檔案也需要做相應的修改
# kafka-1/bin/kafka-server-start.sh
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
   # export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
    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="9997"
fi
# kafka-2/bin/kafka-server-start.sh
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
   # export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
    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="9998"
fi
# kafka-3/bin/kafka-server-start.sh
if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
   # export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
    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"
fi

# start.sh
	#!/bin/bash
	bash kafka-1/bin/kafka-server-start.sh -daemon config/server-1.properties
	bash kafka-2/bin/kafka-server-start.sh -daemon config/server-2.properties
	bash kafka-3/bin/kafka-server-start.sh -daemon config/server-3.properties

# 第二種方法
# 使用的用一個目錄下的同一個檔案,隻是在每個指令前指定端口号
vim start.sh
	#!/bin/bash

	JMX_PORT=9997 bash bin/kafka-server-start.sh -daemon config/server-1.properties
	JMX_PORT=9998 bash bin/kafka-server-start.sh -daemon config/server-2.properties
	JMX_PORT=9999 bash bin/kafka-server-start.sh -daemon config/server-3.properties

# 第三種方法
# 使用的是同一個目錄下的不同kafka-server-start檔案
# start.sh檔案也需要做相應的修改
cp kafka-server-start.sh kafka-server-start-1.sh
cp kafka-server-start.sh kafka-server-start-2.sh
cp kafka-server-start.sh kafka-server-start-3.sh

vim kafka-server-start-1.sh
	if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
	   # export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
	    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="9997"
	fi
vim kafka-server-start-2.sh
	if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
	   # export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
	    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="9998"
	fi
vim kafka-server-start-3.sh
	if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
	   # export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
	    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"
	fi

vim start.sh 
	#!/bin/bash

	bash bin/kafka-server-start-1.sh -daemon config/server-1.properties
	bash bin/kafka-server-start-2.sh -daemon config/server-2.properties
	bash bin/kafka-server-start-3.sh -daemon config/server-3.properties

vim stop.sh
	#!/bin/bash

	bash bin/kafka-server-stop.sh

           
cd /usr/local/src
wget https://github.com/smartloli/kafka-eagle-bin/archive/v1.3.9.tar.gz

# 多次解壓縮後得到kafka-eagle-web-1.3.9目錄,然後把該目錄複制到/usr/local目錄下

cd /usr/local/kafka-eagle-web-1.3.9/conf
vim system-config.properties
	kafka.eagle.zk.cluster.alias=cluster1
	cluster1.zk.list=localhost:2181,localhost:2182,localhost:2183
	kafka.eagle.metrics.charts=true # 開啟監控趨勢圖,需要開啟Kafka系統的JMX端口,設定該端口在$KAFKA_HOME/bin/kafka-server-start.sh腳本中
	kafka.eagle.sql.fix.error=true # 開啟錯誤日志資訊
	# 其餘保持預設,資料庫使用sqlite,注意路徑需要事先建立好或修改成目前目錄
	# 資料庫也可以更換成MySQL
	kafka.eagle.url=jdbc:sqlite:/usr/local/kafka-eagle-web-1.3.9/db/ke.db

# 注意
# kafka.eagle.zk.cluster.alias的值需要跟下面的這個cluster1.zk.list小數點第一個保持一緻,比如都是cluster1,否則擷取不到資料

# 添加環境變量
vim /etc/profile.d/kafka_eagle.sh
	#!/bin/bash

	export KE_HOME=/usr/local/kafka-eagle-web-1.3.9
	export PATH=$PATH:$KE_HOME/bin
source /etc/profile.d/kafka_eagle.sh


# 指令相關
bash bin/ke.sh start|stop|status|stats|restart

# 啟動
bash bin/ke.sh start
	*******************************************************************
	* Kafka Eagle system monitor port successful... 
	*******************************************************************
	[2019-09-20 12:10:32] INFO: Status Code[0]
	[2019-09-20 12:10:32] INFO: [Job done!]
	Welcome to
	    __ __    ___     ____    __ __    ___            ______    ___    ______    __     ______
	   / //_/   /   |   / __/   / //_/   /   |          / ____/   /   |  / ____/   / /    / ____/
	  / ,<     / /| |  / /_    / ,<     / /| |         / __/     / /| | / / __    / /    / __/   
	 / /| |   / ___ | / __/   / /| |   / ___ |        / /___    / ___ |/ /_/ /   / /___ / /___   
	/_/ |_|  /_/  |_|/_/     /_/ |_|  /_/  |_|       /_____/   /_/  |_|\____/   /_____//_____/   
	                                                                                             

	Version 1.3.9
	*******************************************************************
	* Kafka Eagle Service has started success.
	* Welcome, Now you can visit 'http://127.0.0.1:8048/ke'
	* Account:admin ,Password:123456
	*******************************************************************
	* <Usage> ke.sh [start|status|stop|restart|stats] </Usage>
	* <Usage> https://www.kafka-eagle.org/ </Usage>
	*******************************************************************

# 浏覽器通路,防火牆放行該端口,後期改用Nginx代理
位址:192.168.0.187:8048/ke
賬号:admin,密碼:123456


# 在kafka eagle平台使用KSQL查詢資料

# 左側導航

# 1.先在Topic-List中檢視到Topic Name和Partition Indexes的值
# ID	Topic Name	Partition Indexes	Partition Numbers	Created	Modify	Operate
# 1	canal_manager	[0]	1	2019-09-20 17:27:15	2019-09-20 17:27:15	

# 2. 在Topic-KSQL中輸入查詢語句
# select * from "canal_manager" where "partition" in (0) limit 1
# 下方會顯示查詢所用時間和查詢後的結果

# 在如下目錄的檔案中可以檢視具體的異常資訊,一般都會提示具體的錯誤
# tail -n 30 kafka-eagle-web-1.3.9/logs/ke_console.out
           
# 配置檔案詳細說明
######################################
# 配置多個Kafka叢集所對應的Zookeeper
######################################
kafka.eagle.zk.cluster.alias=cluster1,cluster2
cluster1.zk.list=dn1:2181,dn2:2181,dn3:2181
cluster2.zk.list=tdn1:2181,tdn2:2181,tdn3:2181

######################################
# 設定Zookeeper線程數
######################################
kafka.zk.limit.size=25

######################################
# 設定Kafka Eagle浏覽器通路端口
######################################
kafka.eagle.webui.port=8048

######################################
# 如果你的offsets存儲在Kafka中,這裡就配置
# 屬性值為kafka,如果是在Zookeeper中,可以
# 注釋該屬性。一般情況下,Offsets的也和你消
# 費者API有關系,如果你使用的Kafka版本為0.10.x
# 以後的版本,但是,你的消費API使用的是0.8.2.x
# 時的API,此時消費者依然是在Zookeeper中
######################################
cluster1.kafka.eagle.offset.storage=kafka
######################################
# 如果你的叢集一個是新版本(0.10.x以上),
# 一個是老版本(0.8或0.9),可以這樣設定,
# 如果都是新版本,那麼可以将值都設定成kafka
######################################
cluster2.kafka.eagle.offset.storage=zookeeper

######################################
# 是否啟動監控圖表,預設是不啟動的
######################################
kafka.eagle.metrics.charts=false

######################################
# 在使用Kafka SQL查詢主題時,如果遇到錯誤,
# 可以嘗試開啟這個屬性,預設情況下,不開啟
######################################
kafka.eagle.sql.fix.error=false

######################################
# 郵件伺服器設定,用來告警
######################################
kafka.eagle.mail.enable=false
kafka.eagle.mail.sa=
kafka.eagle.mail.username=
kafka.eagle.mail.password=
kafka.eagle.mail.server.host=
kafka.eagle.mail.server.port=

######################################
# 設定告警使用者,多個使用者以英文逗号分隔
######################################
[email protected]


######################################
# 超級管理者删除主題的Token
######################################
kafka.eagle.topic.token=keadmin

######################################
# 如果啟動Kafka SASL協定,開啟該屬性
######################################
kafka.eagle.sasl.enable=false
kafka.eagle.sasl.protocol=SASL_PLAINTEXT
kafka.eagle.sasl.mechanism=PLAIN

######################################
# Kafka Eagle預設存儲在Sqlite中,如果要使用
# MySQL可以替換驅動、使用者名、密碼、連接配接位址
######################################
#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/workspace/kafka-egale/db/ke.db
kafka.eagle.username=root
kafka.eagle.password=root