1. 启用Kafka JMX监控(基础前提)
Kafka通过JMX(Java Management Extensions)暴露了大量关键性能指标(如吞吐量、延迟、磁盘使用率等),是监控的核心数据源。需先修改Kafka启动脚本(kafka-server-start.sh
),添加以下JMX配置:
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_host> -Dcom.sun.management.jmxremote.port=<jmx_port>"
例如设置jmx_port=9999
,重启Kafka Broker使配置生效。之后可通过jconsole
、jmc
等工具直接连接<broker_host>:<jmx_port>
查看实时指标。
2. 使用Kafka自带脚本监控基础状态
Kafka自带的命令行工具可快速获取集群基础信息,无需额外安装:
bin/kafka-topics.sh --describe --topic <topic_name> --bootstrap-server <broker_host>:<broker_port>
(显示分区、副本、ISR等状态);bin/kafka-consumer-groups.sh --bootstrap-server <broker_host>:<broker_port> --describe --group <group_id>
(查看消费速率、偏移量提交情况);tail -f logs/server.log
(实时监控Broker运行日志,快速定位错误)。3. Prometheus+Grafana(可视化监控方案)
这是目前最流行的Kafka监控组合,可实现指标收集-存储-可视化-告警全链路:
kafka_exporter-1.4.2.linux-amd64.tar.gz
),运行./kafka_exporter --kafka.server=<broker_host>:9092 --web.listen-address=:9308
(将Kafka JMX指标转换为Prometheus可采集的格式);prometheus.yml
,添加Kafka Exporter抓取任务:scrape_configs: - job_name: 'kafka' static_configs: - targets: ['<kafka_exporter_host>:9308']
重启Prometheus使配置生效;4. Kafka Manager/CMAK(集群管理+监控)
Kafka Manager(又称CMAK)是开源的Web管理工具,支持多集群监控、Broker状态查看、Topic配置管理:
application.conf
配置文件(设置ZooKeeper地址、监听端口),运行nohup ./kafka-manager -Dconfig.file=../conf/application.conf -Dhttp.port=9000 &
;http://<manager_host>:9000
,使用默认账号admin/admin
登录,即可查看集群中所有Broker、Topic、Consumer Group的状态。5. Burrow(消费者偏移量监控)
Burrow是专门针对Kafka消费者偏移量的监控工具,可实时检测消费者延迟、偏移量超限等问题,避免因消费者故障导致的数据积压:
config.toml
配置文件(设置Kafka Broker地址、ZooKeeper地址),运行./burrow --config=config.toml
;alarm
规则(如延迟超过10分钟触发告警)。6. Confluent Control Center(商业级综合监控)
Confluent Control Center是Confluent官方提供的商业监控工具,提供集中化集群管理、性能指标分析、告警配置等功能,支持Kafka生态组件(如Schema Registry、Kafka Connect):
7. Netdata(系统级实时监控)
Netdata是轻量级的系统监控工具,可实时监控Kafka Broker的系统资源使用情况(CPU、内存、磁盘I/O、网络流量),快速发现系统瓶颈:
sudo yum install netdata -y
安装,启动服务sudo systemctl start netdata
;http://<server_ip>:19999
,即可查看Kafka Broker所在主机的实时系统指标。