kafka集群监控
- 一、Kafka Offset Monitor介绍
- 安装部署Kafka Offset Monitor
- 安装部署kafka-mamager工具
Kafka集群监控工具有很多,这里我们只介绍针对Kafka的监控。
一、Kafka Offset Monitor介绍
在生产环境中需要集群高可用,所以需要对kafka集群进行监控。Kafka Offset Monitor可以监控Kafka集群以下几项:
(1)Kafka集群当前存活的broker集合
(2)Kafka集群当前存活的topic集合
(3)消费者列表
(4)Kafka集群当前consumer按组消费的offset lag数(即当前topic当前分区目前有多少消息积压而没有被即使消费)
安装部署Kafka Offset Monitor
(1)下载安装
到github上下载对应jar包,下载链接地址
https://github.com/quantifind/KafkaOffsetMonitor/releases
下载后直接上传到kafka所在服务器即可
(2)启动Kafka Offset Monitor
java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \
com.quantifind.kafka.offsetapp.OffsetGetterWeb \
--zk 192.168.12.150:2181,192.168.12.151:2181,192.168.12.152:2181 \
--port 8086 \
--refresh 10.seconds \
--retain 7.days \
1>kafka.offset.monitor.logs.stdout.log 2>kafka.offset.monitor.logs.stderr.log &
也可指定内存参数
java -Xms128M -Xmx256M -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m -cp KafkaOffsetMonitor-assembly-0.2.0.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --zk 192.168.12.150:2181,192.168.12.151:2181,192.168.12.152:2181 --port 8086 --refresh 10.seconds --retain 7.days 1>kafka.offset.monitor.logs.stdout.log 2>kafka.offset.monitor.logs.stderr.log &
其中--zk指定zookeeper列表,--port指定使用的监控端口,--refresh指定刷新的时间间隔10秒,--retain表示驻留的时间为7点,标准日志输出到kakfa.offset.monitor.logs.stdout.log文件,错误输出到kafka.offset.monitor.logs.stderr.log并且最后的&表示后台运行!
运行结果:
在jar所在目录生成以上配置的两个日志输出文件
使用jps查看后台运行进程
经过测试0.2的版本的KafkaOffsetMonitor消费者组无法获取到,偏移量也无法获取到,可能只能兼容0.8之前版本的kafka(这里我用的是kafka2.11-2.2.0版本),将对应包移植到kafka的libs目录下,下载其他版本测试结果日下:
测试
(1)只能看到KafkaOffsetMonitor的消费者组,不能看到自己启动的消费程序的消费组信息
java -cp KafkaOffsetMonitor-assembly-0.3.0-SNAPSHOT.jar \
com.quantifind.kafka.offsetapp.OffsetGetterWeb \
--zk 192.168.12.150:2181,192.168.12.151:2181,192.168.12.152:2181 \
--port 8086 --refresh 10.seconds \
--retain 7.days \
1>kafka.offset.monitor.logs.stdout.log 2>kafka.offset.monitor.logs.stderr.log
(2)一个消费者组都看不到
java -cp KafkaOffsetMonitor-assembly-0.3.0-SNAPSHOT.jar \
com.quantifind.kafka.offsetapp.OffsetGetterWeb \
--offsetStorage kafka \
--zk 192.168.12.150:2181,192.168.12.151:2181,192.168.12.152:2181 \
--port 8086 --refresh 10.seconds \
--retain 7.days \
1>kafka.offset.monitor.logs.stdout.log 2>kafka.offset.monitor.logs.stderr.log &
(3)同(1)结果
java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m \
-cp KafkaOffsetMonitor-assembly-0.4.6-SNAPSHOT.jar \
com.quantifind.kafka.offsetapp.OffsetGetterWeb \
--offsetStorage kafka \
--kafkaBrokers localhost:9092 \
--kafkaSecurityProtocol PLAINTEXT \
--zk localhost:2181 \
--port 8787 \
--refresh 10.seconds \
--retain 7.days 1>stderr.log \
--dbName offsetapp_kafka
注意参数
offsetStorage:有效的选项是"zookeeper",“kafka”,“storm”。0.9版本以后,offset存储的位置在kafka
以上测试结果表明在新版本中该用具不能使用阿西吧~
查看集群信息
该工具操作性不多,且无法使用,所以建议使用如下工具kafka manager,用于管理多个集群!
安装部署kafka-mamager工具
这里选择的是yahoo 的kafka-mamager工具,先下载二进制包kafka-manager-1.3.3.7.zip
安装解压
cd /opt unzip kafka-manager-1.3.3.7.zip mv kafka-manager-1.3.3.7 kafka-manager
编辑配置文件
cd /opt/kafka-manager/conf/
vim application.conf
添加内容
kafka-manager.zkhosts="kafka1:2181,kafka2:2181,kafka3:2181"
启动kafka-manager
chmod 777 /opt/kafka-manager/bin/kafka-manager
nohup /opt/kafka-manager/bin/kafka-manager &
启动之后当前目录会有一个nohup.out控制台输出日志
注意
kafka-manager 默认的端口是9000,可通过
*-Dhttp.port,指定端口; *
-Dconfig.file=conf/application.conf指定配置文件
如下所示
nohup ./kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8080
查看启动情况
jps
访问地址
http://192.168.12.60:9000/
添加族参数
Add Cluster
添加参数配置如下
然后保存,最后添加如下
点击进去,然后就可以通过web页面查看集群所有信息了