1. 启用JMX监控(基础前提)
Kafka通过JMX(Java Management Extensions)暴露了大量关键性能指标(如吞吐量、延迟、磁盘I/O等),是监控的核心基础。需在Kafka启动脚本(如kafka-server-start.sh
)中添加JMX参数,示例如下:
export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G" # 根据服务器内存调整堆大小
export JMX_PORT=9999 # 指定JMX端口(需确保防火墙放行)
nohup sh bin/kafka-server-start.sh config/server.properties > logs/server.log 2>&1 &
启用后,可通过jconsole
(Java自带)、VisualVM
等工具直接连接<broker_host>:9999
,实时查看Broker的各项指标。
2. 使用Kafka自带命令行工具(快速排查)
Kafka自带多组命令行工具,无需额外安装,适合快速检查集群状态:
bin/kafka-topics.sh --list --bootstrap-server <broker_host>:<port>
(替代旧版的--zookeeper
参数,适用于Kafka 2.8+版本)。bin/kafka-consumer-groups.sh --bootstrap-server <broker_host>:<port> --describe --group <group_name>
,可获取消费速率、偏移量提交情况、延迟(Lag)等关键信息。bin/kafka-run-class.sh kafka.tools.JMXShell --object-name kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec --jmx-url service:jmx:rmi:///jndi/rmi://<broker_host>:9999/jmxrmi
,直接查询特定JMX指标(如每秒消息摄入量)。3. Prometheus + Grafana(可视化监控)
这是目前最流行的开源监控+可视化方案,适合大规模集群:
kafka_exporter-1.4.2.linux-amd64.tar.gz
),解压后运行./kafka_exporter --kafka.server=<broker_host>:<port>
,默认暴露9308
端口。prometheus.yml
,添加Kafka Exporter的抓取任务:scrape_configs:
- job_name: 'kafka'
static_configs:
- targets: ['<kafka_exporter_host>:9308']
7587
,涵盖Broker、主题、消费者等指标),即可直观查看吞吐量、延迟、ISR数量等趋势图。4. Kafka Manager(集群管理+监控)
Kafka Manager(又称CMAK)是开源的Web管理工具,适合中小规模集群,提供集群状态、Broker指标、消费者组监控等功能:
./bin/cmak -Dconfig.file=conf/application.conf -Dhttp.port=9000 &
。http://<manager_host>:9000
,配置Kafka集群的ZooKeeper地址,即可查看Broker列表、主题详情、消费者组延迟等信息。5. Burrow(消费者偏移量专项监控)
Burrow是专门针对Kafka消费者偏移量的监控工具,可精准检测消费者延迟、偏移量超限等问题,避免消息堆积:
config.toml
文件,添加Kafka集群信息。6. Confluent Control Center(商业级全面监控)
Confluent Control Center是Confluent官方提供的商业监控工具,适合企业级场景,提供集中化集群管理、性能指标分析、实时告警等功能:
7. 关键监控指标(聚焦核心问题)
无论选择哪种工具,都需重点监控以下指标,覆盖Broker、主题、消费者三大层面:
8. 告警策略(防患于未然)
结合Prometheus的Alertmanager组件,设置合理的告警规则,及时响应问题:
JvmMemoryHeapUsedPercent > 80%
(JVM内存不足)、RequestLatencyAvg > 1000ms
(请求延迟过高)。RecordsLag > 10000
(消费者延迟超过1万条)、UnderReplicatedPartitions > 0
(分区未同步)。ConsumerLag > 5000
且持续5分钟(消费者长时间未消费)。