CentOS 上 Kafka 监控实操指南
一 监控方案总览
- 指标采集与可视化:使用 Kafka Exporter + Prometheus + Grafana 采集并展示 JMX 指标,适合长期可观测与告警体系。
- 管理型 GUI:使用 Kafka Manager(CMAK)、Kafka Eagle(EFAK)、KnowStreaming 等,便于多集群管理与消费滞后观测。
- 消费者滞后:使用 Burrow 专门跟踪 Consumer Group 的 Lag。
- 系统层监控:使用 Netdata 观测 CPU、内存、磁盘 I/O、网络 等主机指标。
- 快速查看与临时排障:使用 Kafdrop 查看 Topic/分区/消费者组 信息。
- 商业一体化:使用 Confluent Control Center 做集中监控与告警(适用于 Confluent 平台)。
二 快速落地步骤(推荐组合:Kafka Exporter + Prometheus + Grafana)
- 开启 JMX(Broker 侧)
在 Kafka 启动脚本(如 bin/kafka-server-start.sh 或 systemd 环境)中增加:
export JMX_PORT=9988
启动后在防火墙放行该端口(示例:firewall-cmd --permanent --add-port=9988/tcp && firewall-cmd --reload)。
- 部署并启动 Kafka Exporter
下载解压后启动(示例):
./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: [‘<exporter_host>:9308’]
重启 Prometheus 生效。
- Grafana 可视化
在 Grafana 添加 Prometheus 数据源,导入 Kafka 仪表盘模板(社区模板 ID 常见为 7589 等),按需调整。
- 验证链路
访问 Exporter 指标页(http://<exporter_host>:9308/metrics)、Prometheus Targets 页面与 Grafana 面板,确认数据正常。
三 常用工具与端口一览
| 工具 |
主要用途 |
默认端口 |
备注 |
| Kafka Exporter |
暴露 Kafka JMX 为 Prometheus 指标 |
9308 |
建议每个集群至少部署 1 个实例 |
| Prometheus |
时序指标采集与存储 |
9090 |
配置 scrape_jobs 指向 Exporter |
| Grafana |
可视化与告警面板 |
3000 |
支持导入官方/社区 Kafka 面板 |
| Kafka Manager(CMAK) |
多集群管理、Broker/消费者监控 |
9000/19090 |
编译部署较耗时,注意访问控制 |
| Kafka Eagle(EFAK) |
监控与告警(支持钉钉/微信/邮件) |
8048 |
需要数据库(如 MySQL/SQLite) |
| Burrow |
消费者组 Lag 监控 |
8080 |
专注消费延迟与状态 |
| Kafdrop |
Topic/分区/消费者组浏览 |
9000 |
轻量、适合临时查看 |
| Netdata |
主机层资源监控 |
19999 |
实时图表,安装即用 |
| JConsole/JMX |
直连 Broker JMX |
9988 |
本地或经 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)
- Kafka Broker:firewall-cmd --permanent --add-port=9092/tcp --permanent --add-port=9988/tcp && firewall-cmd --reload
- Kafka Exporter: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)是否有数据。
- Prometheus Targets 页面是否 UP,抓取是否报错。
- Grafana 面板变量(如 $job、$instance)是否匹配。
- JMX 端口连通性(telnet/nc)与权限配置是否正确。
- 消费者组 Lag 在 Burrow/Kafka Eagle 与 kafka-consumer-groups.sh 输出是否一致。