监控 Linux 上 Kafka 的状态,可以从进程/系统层、Kafka 自身指标、日志、以及可视化工具几个层面来做。下面按“由浅入深”的方式说明。
ps -ef | grep kafka
# 或
jps | grep Kafka
netstat -tunlp | grep 9092
# 或
ss -tunlp | grep 9092
systemctl status kafka
kafka-broker-api-versions.sh --bootstrap-server localhost:9092
kafka-topics.sh --bootstrap-server localhost:9092 --describe
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group your_group
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
Kafka 通过 JMX 暴露大量指标。
在 kafka-server-start.sh 或 server.properties 中设置:
export JMX_PORT=9999
重启 Kafka 后,可用 jconsole 或 visualvm 连接:
jconsole localhost:9999
kafka.server:type=BrokerTopicMetrics
kafka.server:type=ReplicaManager
kafka.network:type=RequestMetrics
kafka.controller:type=KafkaController一般在:
/logs/server.log
或 server.properties 中:
log.dirs=/data/kafka-logs
Under-replicated partitionsLeader not availableOutOfMemoryErrorFailed to send metricsif ! nc -z localhost 9092; then
echo "Kafka is down" | mail -s "Kafka Alert" admin@x.com
fi
| 场景 | 推荐方式 |
|---|---|
| 快速排查 | kafka-topics.sh / ps / netstat |
| 生产环境 | Prometheus + Grafana |
| 消费问题 | kafka-consumer-groups.sh |
| 稳定性 | JMX + 日志监控 |
如果你愿意,可以告诉我:
我可以给你一套可直接用的监控方案。