在 Linux 上监控 Kafka,可以从系统层、Kafka 自身指标、日志、命令行工具、可视化和告警几个层面来做。下面给你一套实用方案。
# 查看所有 topic
kafka-topics.sh --bootstrap-server localhost:9092 --list
# 查看 topic 详情
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test-topic
# 消费
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
# 生产
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
可以看到:
Kafka 通过 JMX 暴露大量指标。
在 kafka-server-start.sh 或 server.properties 中配置:
export JMX_PORT=9999
重启 Kafka 后可用 jconsole 或 jvisualvm 连接:
jconsole localhost:9999
kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSeckafka.server:type=BrokerTopicMetrics,name=BytesInPerSeckafka.server:type=BrokerTopicMetrics,name=BytesOutPerSeckafka.network:type=RequestMetrics,name=RequestQueueTimeMskafka.network:type=RequestMetrics,name=LocalTimeMskafka.consumer:type=consumer-fetch-manager-metricsdocker run -d \
-p 9308:9308 \
danielqsj/kafka-exporter \
--kafka.server=localhost:9092
scrape_configs:
- job_name: kafka
static_configs:
- targets: ['localhost:9308']
top
htop
iostat -x 1
df -h
free -m
iostat -x 1
dstat
iftop
netstat -an | grep 9092
Kafka 日志位置(默认):
/var/log/kafka/
重点关注:
ERRORShutdownRebalanceUnder-replicated可用:
tail -f /var/log/kafka/server.log | grep ERROR
或接入 ELK / Loki。
至少监控以下项:
| 场景 | 推荐 |
|---|---|
| 简单查看 | kafka-consumer-groups.sh |
| 生产环境 | Prometheus + Kafka Exporter + Grafana |
| 云原生 | Kafka + Strimzi + Prometheus |
| 日志分析 | ELK / Loki |
如果你愿意,我可以:
你现在是单机还是集群?生产还是测试?