1. 使用Kafka自带命令行工具(基础监控)
Kafka自带多组命令行工具,可直接查看集群核心状态,无需额外安装软件,适合快速排查基础问题。
kafka-topics.sh
命令查看Topic的分区分布、Leader副本、ISR集合等信息,命令示例:kafka-topics.sh --bootstrap-server <broker-ip>:9092 --describe --topic <topic-name>
。kafka-consumer-groups.sh
命令监控消费者组的消费进度(偏移量)、滞后量(Lag),命令示例:kafka-consumer-groups.sh --bootstrap-server <broker-ip>:9092 --describe --group <group-name>
。kafka-broker-api-versions.sh
命令查看Broker支持的API版本,或kafka-configs.sh
命令查看Broker配置,命令示例:kafka-broker-api-versions.sh --bootstrap-server <broker-ip>:9092
。2. 启用JMX监控(核心指标采集)
JMX是Kafka暴露内部指标的标准方式,可通过JMX客户端工具实时查看线程、内存、吞吐量等指标。
kafka-server-start.sh
),添加以下配置(替换<broker-ip>
为实际IP):export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<broker-ip>"
默认JMX端口为9999
(可通过KAFKA_JMX_OPTS
调整)。jconsole
命令,在界面中选择“远程进程”,输入<broker-ip>:9999
即可连接,查看内存、线程、类加载等基础指标。kafka_jmxtrans.xml
)定期采集指标并输出到文件或数据库,适合自动化监控。3. 第三方可视化监控(生产级方案)
结合Prometheus(指标采集)与Grafana(可视化),可实现Kafka集群的实时监控、告警及历史数据分析,适合大规模生产环境。
sudo apt update && sudo apt install prometheus grafana -y
docker run -d --name kafka_exporter -p 9308:9308 quay.io/prometheus/kafka_exporter
/etc/prometheus/prometheus.yml
),添加Kafka Exporter的抓取任务:scrape_configs:
- job_name: 'kafka'
static_configs:
- targets: ['<kafka-exporter-ip>:9308']
3000
),添加Prometheus为数据源。7587
,来自Grafana官方库),即可查看分区数、消费滞后、Broker负载等可视化图表。4. 轻量级Web监控工具(快速接入)
若需快速搭建Web界面查看Kafka状态,可选择以下工具:
docker run -d --rm -p 9000:9000 -e KAFKA_BROKERCONNECT=<broker-ip>:9092 -e SERVER_SERVLET_CONTEXTPATH="/" obsidiandynamics/kafdrop
访问http://<Debian-ip>:9000
即可使用。java -cp KafkaOffsetMonitor-assembly-0.3.0-SNAPSHOT.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --offsetStorage kafka --zk <zk-server1,zk-server2> --port 8080 --refresh 10.seconds --retain 2.days
访问http://<Debian-ip>:8080
即可查看监控页面。5. 日志与系统监控(辅助排查)
/var/log/kafka/
目录(如server.log
),通过tail -f
命令实时监控错误或警告信息:tail -f /var/log/kafka/server.log | grep -i "error\|warn"
top
、htop
、vmstat
、iostat
等工具监控Kafka进程的CPU、内存、磁盘IO使用情况,判断是否因资源瓶颈导致性能下降。