Kafka集群监控调研实战
简介
kafka默认提供了非常多基于JMX(Java Management Extensions)相关的监工指标。
但是如果我们要通过Prometheus + Grafana进行监控
还需要将JMX相关的指标转换为http接口,让Prometheus使用
jmx_exporter
Prometheus官方提供了相关的agent
github地址: https://github.com/prometheus/jmx_exporter
但是还需要配置一些数据规则,比如配置数据格式啥的,比较麻烦。
下面我们考虑使用开箱即用的docker容器
官方 kafka_exporter 讨论
官方早在2020年五月就讨论过提供一个官方的kafka_exporter
也就是KIP-575:https://cwiki.apache.org/confluence/display/KAFKA/KIP-575:+build+a+Kafka-Exporter+by+Java
遗憾的是这个KIP至今还处于Under Discussion(讨论中)
kafka_exporter
社区有伙伴提供了基于docker部署的kafka-exporter
目前主流的有两个镜像


可以看到
bitnami/kafka-exporter已经发出了弃用通知,所以只能选择danielqsj,实际看简介bitnami/kafka-exporter也是基于[danielqsj/kafka_exporter的源代码构建的 只不过Bitnami的镜像通常都会做一些安全检查、性能优化等
这里我就用废弃的bitnami/kafka-exporter试试,反正两个都比较简单,先随便试试看
bitnami/kafka-exporter docker compose
直接基于docker compose启动,非常方便,属于比较无脑的方式
vim docker-compose.yaml
version: '3.1'
services:
kafka-exporter-test:
image: bitnami/kafka-exporter:latest
command:
- '--kafka.server=192.168.1.1:9092'
- '--kafka.server=192.168.1.2:9092'
- '--kafka.server=192.168.1.3:9092'
- '--kafka.version=3.5.0'
restart: always
ports:
- 9308:9308
这里我们直接运行
docker-compose up -d
之后直接访问接口
http://192.168.1.1:9308/metrics
即可得到相关的指标
如果要使用danielqsj/kafka_exporter进行部署,也非常简单,这里我给出我的docker-compose.yaml配置
version: '3.1'
services:
kafka-exporter-test:
image: danielqsj/kafka-exporter
command: ["--kafka.server=192.168.1.1:9092", "--kafka.server=192.168.1.2:9092", "--kafka.server=192.168.1.3:9092"]
ports:
- 9308:9308
restart: always
启动方式和上面一样
grafana dashboard
至于grafana的dashboard,可以直接在grafana的官方网站搜索kafka,有很多现成的dashboard可以直接使用
这里可以随便找了几个,自己可以考虑在这个基础上面改一改
- https://grafana.com/grafana/dashboards/21078-kafka-dashboard-cn-20240520-starsl-cn/
- https://grafana.com/grafana/dashboards/18276-kafka-dashboard/
- https://grafana.com/grafana/dashboards/7589-kafka-exporter-overview/
bitnami社区官方给出来的dashboard是https://grafana.com/grafana/dashboards/7589-kafka-exporter-overview/
监控数据非常简单

这里我们使用https://grafana.com/grafana/dashboards/21078-kafka-dashboard-cn-20240520-starsl-cn/这个仪表盘看看
我们启动好Grafana+ Prometheus
然后配置数据源,好导入dashboard
不懂可以参考我之前的博文:Docker compose 部署Grafana+Prometheus实现java应用JVM监控
效果

总结
总的来说本次对broker的监控市面上的选择并不多,也并没有很官方和常用的dashboard使用,实际的使用还需要自己多开发研究
对于3.x以上的kafka,对于controller的监控还是比较少的。