在 Debian 上监控 Kafka 状态,通常可以从系统层、Kafka 进程层、Kafka 内部指标、日志几个维度来做。下面按“从简单到专业”的方式给你一套实用方案。
ps -ef | grep kafka
或
jps | grep Kafka
Kafka 默认端口是 9092:
ss -lntp | grep 9092
# 或
netstat -lntp | grep 9092
systemctl status kafka
journalctl -u kafka -f
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 后:
ss -lntp | grep 9999
jconsole localhost:9999
可看:
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
export KAFKA_OPTS="-javaagent:/path/jmx_prometheus_javaagent.jar=7071:/path/kafka.yml"
scrape_configs:
- job_name: kafka
static_configs:
- targets: ['localhost:7071']
/var/log/kafka/
# 或
$KAFKA_HOME/logs/server.log
tail -f /var/log/kafka/server.log
OutOfMemoryErrorUnder-replicated partitionsLeader not availableRequest timed out#!/bin/bash
if ! systemctl is-active --quiet kafka; then
echo "Kafka is down!" | mail -s "Kafka Alert" admin@xxx.com
fi
可用 cron 定时执行。
| 场景 | 推荐方式 |
|---|---|
| 临时排查 | 命令行工具 + 日志 |
| 单机测试 | JMX + jconsole |
| 生产环境 | Prometheus + Grafana |
| 消费者延迟 | Burrow |
如果你愿意,我可以:
你现在是测试环境还是生产环境?