在 Debian 上监控 Kafka 的运行状态,通常可以从系统层、Kafka 自身、JMX、日志、第三方监控工具几个层面来做。下面按实用程度从简单到完整给你一个方案。
ps -ef | grep kafka
# 或
systemctl status kafka
如果你是用 systemd 安装的:
sudo systemctl status kafka
Kafka 默认端口:
ss -lntp | grep 9092
ss -lntp | grep 2181
日志位置取决于安装方式:
# 包安装
/var/log/kafka/
# 二进制解压
/path/to/kafka/logs/
实时查看:
tail -f /var/log/kafka/server.log
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 或 systemd 配置:
export JMX_PORT=9999
或 systemd:
[Service]
Environment="JMX_PORT=9999"
重启 Kafka。
使用 jconsole:
jconsole localhost:9999
常用指标:
kafka.server:type=BrokerTopicMetricskafka.network:type=RequestMetricsjava.lang:type=MemoryKafka → JMX Exporter → Prometheus → Grafana
下载:
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.20.0/jmx_prometheus_javaagent-0.20.0.jar
配置 kafka.yml:
lowercaseOutputName: true
rules:
- pattern: ".*"
export KAFKA_OPTS="-javaagent:/path/jmx_prometheus_javaagent.jar=7071:/path/kafka.yml"
scrape_configs:
- job_name: kafka
static_configs:
- targets: ['localhost:7071']
导入 Kafka 官方 Dashboard(ID:7589)
echo stat | nc localhost 2181
或:
zookeeper-shell.sh localhost:2181
top
htop
iotop
df -h
free -m
| 场景 | 建议 |
|---|---|
| 测试环境 | 命令行 + 日志 |
| 生产环境 | JMX + Prometheus + Grafana |
| 快速排错 | kafka-consumer-groups.sh |
如果你愿意,可以告诉我:
我可以给你一套可直接用的监控配置。