作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一章介绍了中间件:Zookeeper,本章将介绍另外一个中间件:Kafka。目前这2个中间件都是基于JAVA语言的。
Kafka作为中间件,承担了很多业务,所以它的监控也是很重要的,今天我们就来谈谈Kafka的监控。
我们在前面ZooKeeper里面也使用到了这个JMX监控,Kafka作为一个JAVA应用也有对应的jmx监控,而且在ZooKeeper里面数据,也会显示当前节点是否开启了jmx监控。
# 设置 JMX 端口并启动 Kafka
export JMX_PORT=9999
export KAFKA_JMX_OPTS="-Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false"
bin/kafka-server-start.sh config/server.properties
#开启之前的zk数据和开启之后的zk数据
[zk: localhost:2181(CONNECTED) 59] get /kafka/brokers/ids/0
{"features":{},"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://192.168.31.143:9092"],"jmx_port":-1,"port":9092,"host":"192.168.31.143","version":5,"timestamp":"1748189878724"}
[zk: localhost:2181(CONNECTED) 60] get /kafka/brokers/ids/0
{"features":{},"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://192.168.31.143:9092"],"jmx_port":9999,"port":9092,"host":"192.168.31.143","version":5,"timestamp":"1748190623797"}
[zk: localhost:2181(CONNECTED) 61]
虽然jvm暴露很简单,但是如果要读取jvm数据则还需要借助额外工具,由于云原生的问题,所以我们这里还是以prometheus和grafana方式接入。
#下载JMX Exporter
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.18.0/jmx_prometheus_javaagent-0.18.0.jar
准备exporter的配置文件,未Kafka启用备用。
vi /root/kafka.yml
lowercaseOutputName: true #转换大小写,符合规范
rules:
- pattern: ".*" #暴露所有jmx指标
修改环境变量,启用jmx exporter,暴露端口为9090。
#具体路径和端口以现场为准
export KAFKA_OPTS="-javaagent:/root/jmx_prometheus_javaagent-0.18.0.jar=9090:/root/kafka.yml"
bin/kafka-server-start.sh config/server.properties

请求暴露的端口,就可以获得很多jvm的监控指标,有了exporter暴露的指标,我们就可以接入Grafana图表,下图就是我从Grafana官方下载的一个漂亮的图表。

https://grafana.com/grafana/dashboards/12483-kubernetes-kafka/
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。
250

被折叠的 条评论
为什么被折叠?



