在 Linux 上监控 Kafka,通常可以从系统层面、Kafka 自身指标、日志、以及可视化工具几个维度来做。下面按实用程度给你一个完整指南。
ps -ef | grep kafka
# 或
jps | grep Kafka
netstat -tunlp | grep 9092
# 或
ss -tunlp | grep 9092
Kafka 自带很多脚本,在 bin/ 目录下。
# 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 --record-size 1024 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=localhost:9092
kafka-consumer-perf-test.sh --bootstrap-server localhost:9092 --topic test --messages 100000
Kafka 通过 JMX 暴露大量指标。
export JMX_PORT=9999
bin/kafka-server-start.sh config/server.properties
或用 KAFKA_JMX_OPTS 指定。
kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSeckafka.server:type=BrokerTopicMetrics,name=BytesInPerSeckafka.server:type=BrokerTopicMetrics,name=BytesOutPerSeckafka.consumer:type=consumer-fetch-manager-metricskafka.network:type=RequestMetrics可用 jconsole 或 visualvm 连 JMX 看。
# server.properties 中
log.dirs=/data/kafka-logs
tail -f /data/kafka-logs/server.log
OutOfMemoryErrorLeader not availableUnder-replicated partitionstop
free -h
iostat -x 1
df -h
Kafka 对 磁盘 IO 和内存 非常敏感。
组件:
架构:
Kafka → JMX Exporter → Prometheus → Grafana
常用 Dashboard:
echo stat | nc localhost 2181
如果你愿意,我可以:
你现在是测试环境还是生产环境?