前言
近期在公司项目需要到kafka,但发现却没有监控,且是安装docker的kafka,想查看消息是否积压还得进容器查看。于是整了个这,有点坎坷,不过满满的成就。
目前为止,国内外搜遍了,kafkaOffsetMonitor 都没发现有docker版本的kafka新版监控的镜像,算是个开山吧!
gitHub地址:https://github.com/chenchaoyun0/docker-kafka-offset-monitor
主流kafka监控
- Kafka Web Conslole
程序运行后,会定时去读取kafka集群分区的日志长度,读取完毕后,连接没有正常释放,一段时间后产生大量的socket连接,导致网络堵塞,所以不建议使用。
- Kafka Manager
这个我研究了很久,gitHub有两个项目很火,一个是yahoo开源的:https://github.com/yahoo/kafka-manager,
还有一个是:https://github.com/sheepkiller/kafka-manager-docker,这两款不知道是不是我安装的问题,消费组有时候读不到,看不到消费。在kafka-manager 上能对kafka做一些分区调整的操作,但想看消息消费的情况不是很方便
- KafkaOffsetMonitor
这款界面就比较简单了,但是也有坑,原作者只做到0.21就不继续做了,后来有人继续从上面fork开发,才支持了kafka的新版本,但也有坑,项目引用的js与一些图片,都是在线国外的!!不能连google和不能上网都GG,离开公司后回家偶然发现的。于是我把他们在线引用的资源全都下载下来,自己fork了一版,用的版本是KafkaOffsetMonitor-assembly-0.4.6,并制作了docker。地址:
https://github.com/chenchaoyun0/docker-kafka-offset-monitor。
源码: https://github.com/chenchaoyun0/kafka-offset-monitor。其实也就是多提了十来个样式文件
kafka新的版本offset存储在自己的一个topic,不像老版本是存在zookeeper里面,所以用KafkaOffsetMonitor2.x的版本监控会有问题,根本监控不到数据,所以最好在github上面下载最新的版本自己编译,注意jdk为1.8版本
搭建步骤
1. 构建本地docker 镜像
git clone https://github.com/chenchaoyun0/docker-kafka-offset-monitor.git
进入到目录,修改docker-build.sh 脚本,为你自己想要命名的镜像,执行docker build脚本
2. 执行build脚本
sh docker-build.sh
docker images
就会看到镜像构建完成
3. 编写docker-compose.yml,需要配置环境变量为自己的kafka和zookeeper地址
version: '2'
services:
kafka-offset-monitor:
image: 39.105.33.58:5000/kafka-offset-monitor:1.0
volumes:
- "./logs/:/u01/app/kafka-offset-monitor/logs/"
ports:
- "8086:8086"
environment:
ZK_HOSTS: 39.105.33.58:2181
KAFKA_BROKERS: 39.105.33.58:23310
REFRESH_SECENDS: 10
RETAIN_DAYS: 2
4. 启动容器
docker-compose up -d
5. 查看启动日志,本地logs也有个日志
docker-compose logs -f
6. 访问 http://IP:8086 即可看到黑底色的监控页面啦
点击 消费组名称即可看到消费详情
点击topic 名称可查看消息当前消费与写入的速度
总结
待补充