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并且最后的&表示后台运行!

运行结果:

Python监控kafka消费 kafka topic监控_Python监控kafka消费


在jar所在目录生成以上配置的两个日志输出文件

Python监控kafka消费 kafka topic监控_kafka_02


使用jps查看后台运行进程

Python监控kafka消费 kafka topic监控_Python监控kafka消费_03


经过测试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

以上测试结果表明在新版本中该用具不能使用阿西吧~

查看集群信息

Python监控kafka消费 kafka topic监控_kafka_04


该工具操作性不多,且无法使用,所以建议使用如下工具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

Python监控kafka消费 kafka topic监控_jar_05


编辑配置文件

cd /opt/kafka-manager/conf/
vim application.conf

添加内容

kafka-manager.zkhosts="kafka1:2181,kafka2:2181,kafka3:2181"

Python监控kafka消费 kafka topic监控_java_06


启动kafka-manager

chmod 777 /opt/kafka-manager/bin/kafka-manager
nohup /opt/kafka-manager/bin/kafka-manager &

Python监控kafka消费 kafka topic监控_java_07


Python监控kafka消费 kafka topic监控_Python监控kafka消费_08


启动之后当前目录会有一个nohup.out控制台输出日志

注意
kafka-manager 默认的端口是9000,可通过
*-Dhttp.port,指定端口; *
-Dconfig.file=conf/application.conf指定配置文件
如下所示

nohup ./kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8080

查看启动情况

jps

Python监控kafka消费 kafka topic监控_kafka_09


访问地址

http://192.168.12.60:9000/ 添加族参数

Add Cluster

Python监控kafka消费 kafka topic监控_kafka_10


添加参数配置如下

Python监控kafka消费 kafka topic监控_jar_11


然后保存,最后添加如下

Python监控kafka消费 kafka topic监控_jar_12


点击进去,然后就可以通过web页面查看集群所有信息了

Python监控kafka消费 kafka topic监控_Python监控kafka消费_13