在 Linux 上监控 Kafka,通常分为系统层监控、Kafka 自身指标监控、日志监控和可视化几个层面。下面给你一套实用、可落地的方法。
Kafka 自带很多脚本,适合快速排查:
# 查看 topic 列表
kafka-topics.sh --bootstrap-server localhost:9092 --list
# 查看 topic 详情
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test
# 消费者组状态
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
# 生产/消费测试
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
Kafka 基于 JVM,最重要指标都通过 JMX 暴露。
在 kafka-server-start.sh 或 server.properties 中配置:
export JMX_PORT=9999
或启动参数:
-Dcom.sun.management.jmxremote.port=9999
kafka.server:type=BrokerTopicMetricskafka.network:type=RequestMetricskafka.controller:type=KafkaControllerkafka.consumer:type=consumer-fetch-manager-metrics下载:
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.20.0/jmx_prometheus_javaagent-0.20.0.jar
Kafka 启动参数:
-javaagent:/path/jmx_prometheus_javaagent.jar=7071:/path/kafka.yml
scrape_configs:
- job_name: kafka
static_configs:
- targets: ['kafka1:7071','kafka2:7071']
7589、10973适合运维查看:
# CMAK (原 Kafka Manager)
https://github.com/yahoo/CMAK
功能:
top
free -h
df -h
iostat -x 1
Kafka 对 磁盘 IO 和页缓存 非常敏感。
netstat -antp | grep 9092
ss -tanp
Kafka 日志位置:
/config/server.properties -> log.dirs
关键日志:
server.logcontroller.logstate-change.log可用:
✅ Consumer Lag(消费滞后)
✅ Under Replicated Partitions
✅ Request Handler Idle < 低说明繁忙
✅ Disk Util 高
✅ GC 时间
| 场景 | 推荐 |
|---|---|
| 临时排查 | kafka 命令 + JMX |
| 生产环境 | Prometheus + Grafana |
| 运维友好 | CMAK |
| 全栈可观测 | Kafka + Node Exporter + Loki |
如果你愿意,我可以: