在 Ubuntu 上监控 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-producer-perf-test.sh --topic test --num-records 100000 --record-size 1024 --throughput -1 --producer-props bootstrap.servers=localhost:9092
# 消费者压力测试
kafka-consumer-perf-test.sh --bootstrap-server localhost:9092 --topic test --messages 100000
Kafka 核心监控依赖 JMX。
编辑:
sudo vi /opt/kafka/config/server.properties
确保:
listeners=PLAINTEXT://:9092
编辑 Kafka 启动脚本或环境变量:
sudo vi /opt/kafka/bin/kafka-server-start.sh
在文件前面添加:
export JMX_PORT=9999
或者(推荐):
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9999 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false"
重启 Kafka:
sudo systemctl restart kafka
验证:
netstat -tnlp | grep 9999
wget https://github.com/danielqsj/kafka-exporter/releases/download/v1.7.0/kafka-exporter-1.7.0.linux-amd64.tar.gz
tar -xzf kafka-exporter-*.tar.gz
cd kafka-exporter-*
启动:
./kafka-exporter --kafka.server=localhost:9092
默认端口:9308
sudo apt install prometheus
配置:
sudo vi /etc/prometheus/prometheus.yml
添加:
scrape_configs:
- job_name: 'kafka'
static_configs:
- targets: ['localhost:9308']
重启:
sudo systemctl restart prometheus
sudo apt install grafana
sudo systemctl start grafana-server
http://<服务器IP>:3000适合看 topic、partition、consumer
git clone https://github.com/yahoo/CMAK.git
或直接使用 Docker:
docker run -d -p 9000:9000 \
-e ZK_HOSTS=localhost:2181 \
hlebalbau/kafka-manager
# CPU / 内存
top
htop
# 磁盘 IO(Kafka 很吃磁盘)
iostat -x 1
# 网络
iftop
重点监控:
| 指标 | 说明 |
|---|---|
| UnderReplicatedPartitions | 副本不同步 |
| OfflinePartitionsCount | 离线分区 |
| MessagesInPerSec | 消息生产速率 |
| BytesInPerSec | 入流量 |
| BytesOutPerSec | 出流量 |
| ConsumerLag | 消费滞后 |
✅ 新手:
kafka 命令行 + Kafka Manager
✅ 生产环境:
JMX + Kafka Exporter + Prometheus + Grafana
如果你愿意,我可以:
你现在是单机还是集群?