在 Linux 环境下监控 Kafka,可以从系统层、Kafka 自身指标、日志、客户端与运维工具几个层面来做。下面给你一个比较实用、由浅入深的方案。
Kafka 通过 JMX 暴露大量指标。
修改 kafka-server-start.sh 或 server.properties 所在启动脚本:
export JMX_PORT=9999
或启动参数:
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"
⚠️ 生产环境建议开启认证和 SSL
通过 JMX 能看到:
Broker 指标
kafka.server:type=BrokerTopicMetrics
kafka.server:type=ReplicaManager
kafka.network:type=RequestMetrics
消费者
kafka.consumer:type=consumer-fetch-manager-metrics
# 查看 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
top / htop
iostat -x 1
free -h
df -h
Kafka 对:
非常敏感
Kafka 会占用大量 fd:
ulimit -n
lsof -p <kafka_pid> | wc -l
建议:
ulimit -n 100000
Kafka → JMX Exporter → Prometheus → Grafana
java -javaagent:jmx_prometheus_javaagent.jar=7071:kafka.yml \
-jar kafka.jar
scrape_configs:
- job_name: kafka
static_configs:
- targets: ['kafka1:7071']
✅ 生产最推荐
# 可视化 topic、partition、consumer
适合运维查看,不适合深度监控
专门监控 consumer lag:
tail -f /var/log/kafka/server.log
重点看:
建议:
| 指标 | 建议告警 |
|---|---|
| UnderReplicatedPartitions | > 0 |
| Consumer Lag | 持续增长 |
| Request Latency | > 100ms |
| Disk Usage | > 80% |
| GC Time | > 5% CPU |
✅ 入门
✅ 进阶
✅ 生产
如果你愿意,我可以: