温馨提示×

如何监控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 / BytesInPerSecProduce/Consume 延迟 突降或抖动异常告警。
  • 存储与资源
    • 磁盘使用率 超过阈值(如 80%)告警,并联动扩容或数据清理。
    • JVM Old/Heap 使用率 持续高位(如 > 80%)或频繁 Full GC 告警。
  • 消费健康
    • Consumer Lag 持续增长或大于业务容忍阈值(如 10 万 条)告警。
    • Burrow 状态从 OK 变为 WARN/STOP 时告警。

四 日常巡检与自动化脚本

  • 巡检清单
    • 每日:进程存活、端口监听、日志无 ERRORLeader/副本 分布均衡、ZK/Controller 状态正常。
    • 每周:主题与分区数变化、JMX 关键指标趋势、磁盘与网络容量评估、消费者组滞后趋势。
  • 一键健康检查脚本要点
    • 使用 kafka-broker-api-versions.sh 探测 Broker 可达性版本兼容
    • 使用 kafka-topics.sh 检查 UnderReplicatedPartitionsOfflinePartitionsCount
    • 使用 kafka-consumer-groups.sh 汇总各 消费者组 LAG 最大值。
    • 结合 JMX Exporter/Prometheus 查询 RequestHandlerAvgIdlePercentNetworkProcessorAvgIdlePercent 等。
    • 输出 健康评分 与异常项,联动 企业微信/钉钉/邮件 告警。

五 部署与权限要点

  • JMX 安全
    • 生产建议开启 JMX 认证/SSL,并在 EFAK/Kafka Manager/Prometheus JMX Exporter 中配置对应 用户名/密码/证书
  • 访问控制
    • Prometheus、Grafana、EFAK 等组件配置 最小权限ACL/SASL;避免明文暴露 JMX/RMI
  • 版本与兼容性
    • 使用 kafka-broker-api-versions.sh 校验 客户端/服务端版本 兼容,避免因版本不匹配导致监控采集失败。

0