跳到主要内容

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

目前主流的有两个镜像

github地址

danielqsj-kafka-exporter.png

github地址:https://github.com/danielqsj/kafka_exporter

bitnami-kafka-exporter.png

可以看到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

至于grafanadashboard,可以直接在grafana的官方网站搜索kafka,有很多现成的dashboard可以直接使用

这里可以随便找了几个,自己可以考虑在这个基础上面改一改

bitnami社区官方给出来的dashboard是https://grafana.com/grafana/dashboards/7589-kafka-exporter-overview/

监控数据非常简单 grafana-dashboard-7589-kafka.png

这里我们使用https://grafana.com/grafana/dashboards/21078-kafka-dashboard-cn-20240520-starsl-cn/这个仪表盘看看

我们启动好Grafana+ Prometheus

然后配置数据源,好导入dashboard

不懂可以参考我之前的博文:Docker compose 部署Grafana+Prometheus实现java应用JVM监控

效果

grafana-dashboard-21078-kafka.png

总结

总的来说本次对broker的监控市面上的选择并不多,也并没有很官方和常用的dashboard使用,实际的使用还需要自己多开发研究

对于3.x以上的kafka,对于controller的监控还是比较少的。

参考