在 Ubuntu 上监控 Kafka,通常从 Kafka 自身指标、JVM、操作系统、以及消息消费情况 四个层面来做。下面给你一套常用且实战型的监控方案,从简单到完整。
适合快速排查,不算长期监控。
systemctl status kafka
kafka-topics.sh --bootstrap-server localhost:9092 --list
kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--describe \
--group your-consumer-group
重点看:
LAG(消费延迟)CURRENT-OFFSETLOG-END-OFFSETKafka 使用 JMX 暴露大量指标。
编辑 Kafka 启动脚本或 systemd 配置:
export JMX_PORT=9999
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=127.0.0.1"
重启 Kafka:
systemctl restart kafka
验证:
jps
应看到 Kafka
| 分类 | 重要指标 |
|---|---|
| Broker | UnderReplicatedPartitions |
| Broker | OfflineLogDirectoryCount |
| Topic | BytesInPerSec |
| Topic | BytesOutPerSec |
| Consumer | records-lag-max |
| JVM | HeapMemoryUsage |
Kafka → 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-jmx.yml
hostPort: 127.0.0.1:9999
rules:
- pattern: ".*"
修改 Kafka 启动参数:
export KAFKA_OPTS="-javaagent:/path/jmx_prometheus_javaagent-0.20.0.jar=7071:/path/kafka-jmx.yml"
访问:
http://localhost:7071/metrics
scrape_configs:
- job_name: 'kafka'
static_configs:
- targets: ['localhost:7071']
推荐官方 / 社区模板:
721如果你不想搞 Prometheus,这是最简单直观的
wget https://github.com/smartloli/kafka-eagle-bin/archive/v3.0.1.tar.gz
配置 system-config.properties:
kafka.eagle.zk.cluster.alias=cluster1
cluster1.zk.list=localhost:2181
Web 访问:
http://localhost:8048
即使 Kafka 正常,系统出问题也会挂。
top
htop
df -h
iostat -x 1
⚠️ Kafka 最怕:
必须告警的指标:
UnderReplicatedPartitions > 0Consumer Lag > 阈值如果你愿意,可以告诉我:
我可以 直接给你一套完整可复制的监控配置 ✅