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
的监控还是比较少的。