如何监控Linux Kafka集群的运行状态
小樊
33
2026-01-05 15:41:22
监控 Kafka 集群的可落地方案
一 快速巡检与命令行检查
- 进程与服务状态
- 查看进程:ps -ef | grep kafka;jps 可快速定位 Kafka Java 进程。
- systemd 管理:systemctl status kafka 查看是否 active (running)。
- 监听端口与连通性
- 端口监听:ss -lntp | grep 9092 或 netstat -tulpen | grep 9092,确认 Broker 监听 9092。
- 连通性测试:echo stats | nc localhost 9092(若启用 JMX over RMI,可用 jconsole 连接 service:jmx:rmi:///jndi/rmi://:/jmxrmi)。
- 版本与 API 探测
- 列出 Broker 支持的 API:kafka-broker-api-versions.sh --bootstrap-server broker:9092。
- 主题与分区健康
- 主题列表:kafka-topics.sh --bootstrap-server broker:9092 --list。
- 主题详情:kafka-topics.sh --bootstrap-server broker:9092 --describe --topic 。
- 消费者组与滞后
- 组列表:kafka-consumer-groups.sh --bootstrap-server broker:9092 --list。
- 组详情:kafka-consumer-groups.sh --bootstrap-server broker:9092 --describe --group (关注 LAG 列)。
- 日志与启动状态
- 实时查看:tail -f /path/to/kafka/logs/server.log,出现 “KafkaServer id= started” 表示 Broker 已启动。
- ZooKeeper 视角(如仍使用 ZK 存储元数据)
- 在线 Broker:echo ls /brokers/ids | ./bin/zookeeper-shell.sh zk:2181;可进一步 get /brokers/ids/ 查看详情。
二 指标与可视化监控
- JMX 直连观测
- 开启方式:在 Kafka 启动脚本中增加 JMX 参数(如 -Dcom.sun.management.jmxremote 等),默认常见 JMX 端口 9999。
- 客户端:jconsole 或 Java Mission Control 直连查看 请求速率、请求耗时、网络/IO、分区/副本状态 等。
- Prometheus + Grafana
- 采集:通过 JMX Exporter 将 Kafka JMX 指标暴露为 /metrics,Prometheus 配置 scrape job 拉取。
- 展示:Grafana 导入 Kafka 官方/社区仪表盘,构建跨 Broker/主题/分区/消费者组 的监控视图。
- 常用可视化与运维工具
- Kafka Manager(CMAK):集群管理 + 监控,支持 JMX 轮询、分区重分配、首选副本选举。
- EFAK(Kafka Eagle):多集群监控,依赖 MySQL 存储元数据,支持 JMX、告警、SQL 查询。
- Burrow:专注 消费者滞后 与消费健康评估,提供 状态与告警。
- Confluent Control Center:商业版,覆盖 实时监控、性能优化、安全与可视化。
三 关键告警与阈值建议
- 可用性
- 任一 Broker 进程宕机 或 9092 端口未监听 即告警。
- UnderReplicatedPartitions > 0 持续存在告警(分区副本不足)。
- OfflinePartitionsCount > 0 立即告警(分区离线)。
- 性能与稳定性
- RequestHandlerAvgIdlePercent 持续偏低(如 < 20%)提示处理饱和。
- NetworkProcessorAvgIdlePercent 持续偏低(如 < 20%)提示网络/IO 饱和。
- MessagesInPerSec / BytesInPerSec 与 Produce/Consume 延迟 突降或抖动异常告警。
- 存储与资源
- 磁盘使用率 超过阈值(如 80%)告警,并联动扩容或数据清理。
- JVM Old/Heap 使用率 持续高位(如 > 80%)或频繁 Full GC 告警。
- 消费健康
- Consumer Lag 持续增长或大于业务容忍阈值(如 10 万 条)告警。
- Burrow 状态从 OK 变为 WARN/STOP 时告警。
四 日常巡检与自动化脚本
- 巡检清单
- 每日:进程存活、端口监听、日志无 ERROR、Leader/副本 分布均衡、ZK/Controller 状态正常。
- 每周:主题与分区数变化、JMX 关键指标趋势、磁盘与网络容量评估、消费者组滞后趋势。
- 一键健康检查脚本要点
- 使用 kafka-broker-api-versions.sh 探测 Broker 可达性 与 版本兼容。
- 使用 kafka-topics.sh 检查 UnderReplicatedPartitions、OfflinePartitionsCount。
- 使用 kafka-consumer-groups.sh 汇总各 消费者组 LAG 最大值。
- 结合 JMX Exporter/Prometheus 查询 RequestHandlerAvgIdlePercent、NetworkProcessorAvgIdlePercent 等。
- 输出 健康评分 与异常项,联动 企业微信/钉钉/邮件 告警。
五 部署与权限要点
- JMX 安全
- 生产建议开启 JMX 认证/SSL,并在 EFAK/Kafka Manager/Prometheus JMX Exporter 中配置对应 用户名/密码/证书。
- 访问控制
- 对 Prometheus、Grafana、EFAK 等组件配置 最小权限 的 ACL/SASL;避免明文暴露 JMX/RMI。
- 版本与兼容性
- 使用 kafka-broker-api-versions.sh 校验 客户端/服务端版本 兼容,避免因版本不匹配导致监控采集失败。