1. 启用Kafka JMX监控
JMX(Java Management Extensions)是Kafka暴露内部指标的核心机制,需先配置Broker开启JMX。编辑Kafka启动脚本(如kafka-server-start.sh),添加以下参数:
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> -Dcom.sun.management.jmxremote.port=9999"
重启Kafka Broker使配置生效,此时可通过JMX客户端(如JConsole、VisualVM)连接<broker_ip>:9999查看实时指标(如消息吞吐量、延迟、磁盘利用率)。
2. 使用Kafka自带命令行工具
Kafka提供了多个命令行工具,可快速检查集群基础状态:
bin/kafka-topics.sh --list --bootstrap-server <broker_host>:<broker_port>(列出所有Topic);bin/kafka-topics.sh --describe --topic <topic_name> --bootstrap-server <broker_host>:<broker_port>(查看Topic的分区、副本、ISR状态)。bin/kafka-consumer-groups.sh --bootstrap-server <broker_host>:<broker_port> --describe --group <consumer_group>(查看消费者组的消费速率、偏移量提交情况、延迟)。bin/kafka-run-class.sh kafka.tools.JmxTool --object-name kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec --jmx-url service:jmx:rmi:///jndi/rmi://<broker_host>:9999/jmxrmi --attributes OneMinuteRate --reporting-interval 1000(每10秒输出一次每秒消息摄入速率)。3. Prometheus + Grafana可视化监控
这是目前主流的开源监控方案,可实现指标收集、存储与可视化:
kafka_exporter-1.4.2.linux-amd64.tar.gz),解压后运行./kafka_exporter --kafka.server=<broker_host>:<broker_port>(默认监听9308端口),其作用是将Kafka的JMX指标转换为Prometheus可识别的格式。prometheus.yml,添加Kafka Exporter的抓取任务:scrape_configs:
- job_name: 'kafka'
static_configs:
- targets: ['<kafka_exporter_host>:9308']
重启Prometheus使配置生效。3992的“Kafka Cluster Monitoring”模板),即可查看Broker吞吐量、消费者延迟、分区ISR数量等可视化指标。4. 第三方开源监控工具
yahoo/CMAK),编译后运行java -jar cmak-<version>.jar,访问http://<manager_host>:9000登录(默认用户名/密码为admin/admin)。5. 系统级监控工具(Netdata)
Netdata是轻量级系统监控工具,可实时监控Kafka Broker的系统资源使用情况(CPU、内存、磁盘I/O、网络流量):
curl -s https://packagecloud.io/install/repositories/netdata/netdata/script.rpm.sh | sudo bash添加仓库,再执行sudo yum install netdata -y安装。sudo systemctl start netdata && sudo systemctl enable netdata。http://<server_ip>:19999,即可查看Kafka Broker的系统资源监控面板(无需额外配置)。6. 关键监控指标
无论选择哪种工具,都需重点关注以下指标: