CentOS上Kafka监控实操指南

一监控方案总览

指标采集与可视化:使用KafkaExporter+Prometheus+Grafana采集并展示JMX指标,适合长期可观测与告警体系。

管理型GUI:使用KafkaManager(CMAK)、KafkaEagle(EFAK)、KnowStreaming等,便于多集群管理与消费滞后观测。

消费者滞后:使用Burrow专门跟踪ConsumerGroup的Lag。

系统层监控:使用Netdata观测CPU、内存、磁盘I/O、网络等主机指标。

快速查看与临时排障:使用Kafdrop查看Topic/分区/消费者组信息。

商业一体化:使用ConfluentControlCenter做集中监控与告警(适用于Confluent平台)。

二快速落地步骤(推荐组合:KafkaExporter+Prometheus+Grafana)

开启JMX(Broker侧)在Kafka启动脚本(如bin/kafka-server-start.sh或systemd环境)中增加:exportJMX_PORT=9988启动后在防火墙放行该端口(示例:firewall-cmd--permanent--add-port=9988/tcp&&firewall-cmd--reload)。

部署并启动KafkaExporter下载解压后启动(示例):./kafka_exporter--kafka.server=127.0.0.1:9092--web.listen-address=:9308默认监听9308端口,防火墙需放行。

配置Prometheus抓取在prometheus.yml增加job:scrape_configs:

job_name:‘kafka’static_configs:

targets:[‘:9308’]重启Prometheus生效。

Grafana可视化在Grafana添加Prometheus数据源,导入Kafka仪表盘模板(社区模板ID常见为7589等),按需调整。

验证链路访问Exporter指标页(http://:9308/metrics)、PrometheusTargets页面与Grafana面板,确认数据正常。

三常用工具与端口一览

工具主要用途默认端口备注
KafkaExporter暴露KafkaJMX为Prometheus指标9308建议每个集群至少部署1个实例
Prometheus时序指标采集与存储9090配置scrape_jobs指向Exporter
Grafana可视化与告警面板3000支持导入官方/社区Kafka面板
KafkaManager(CMAK)多集群管理、Broker/消费者监控9000/19090编译部署较耗时,注意访问控制
KafkaEagle(EFAK)监控与告警(支持钉钉/微信/邮件)8048需要数据库(如MySQL/SQLite)
Burrow消费者组Lag监控8080专注消费延迟与状态
KafdropTopic/分区/消费者组浏览9000轻量、适合临时查看
Netdata主机层资源监控19999实时图表,安装即用
JConsole/JMX直连BrokerJMX9988本地或经JMX代理远程查看
以上端口与用途为常见配置,实际以部署参数为准。

四关键监控指标与告警建议

Broker健康与性能

请求耗时:RequestHandlerAvgIdlePercent、ResponseSendTimeMs

网络与请求:BytesIn/BytesOut、RequestsPerSec

存储与分区:LogEndOffset、LogStartOffset、Size/SegmentCount

副本与可用性:UnderReplicatedPartitions、IsrShrinks/Expands、LeaderElectionRateAndTimeMs

建议告警:UnderReplicatedPartitions>0、IsrShrinks持续上升、RequestHandlerAvgIdlePercent长时间偏低、磁盘使用率超过阈值。

主题与分区

分区数、Leader分布、副本数、消息保留时间(retention.ms)

建议告警:分区不均导致热点、副本不足或ISR收缩、消息保留时间异常。

消费者组与Lag

ConsumerLag(总量与分分区)、提交间隔、消费速率

建议告警:Lag持续增长或突增、消费停滞(提交间隔异常)。

五防火墙与常见排障

端口放行示例(firewalld)

KafkaBroker:firewall-cmd--permanent--add-port=9092/tcp--permanent--add-port=9988/tcp&&firewall-cmd--reload

KafkaExporter:firewall-cmd--permanent--add-port=9308/tcp&&firewall-cmd--reload

Grafana:firewall-cmd--permanent--add-port=3000/tcp&&firewall-cmd--reload

Netdata:firewall-cmd--permanent--add-port=19999/tcp&&firewall-cmd--reload

快速排障清单

Exporter指标页(http://:9308/metrics)是否有数据。

PrometheusTargets页面是否UP,抓取是否报错。

Grafana面板变量(如$job、$instance)是否匹配。

JMX端口连通性(telnet/nc)与权限配置是否正确。

消费者组Lag在Burrow/KafkaEagle与kafka-consumer-groups.sh输出是否一致。