温馨提示×

Debian如何监控Kafka状态

小樊
46
2026-08-06 20:00:37
栏目: 智能运维

在 Debian 系统上监控 Kafka 状态,可以从 系统层、Kafka 自身、JVM、以及可视化工具 多个层面来做。下面按常用方式给你一个完整指南。


一、基础:确认 Kafka 是否运行

1️⃣ 查看 Kafka 进程

ps -ef | grep kafka

jps

应看到类似:

Kafka
QuorumPeerMain(如果用 ZooKeeper)

2️⃣ 查看端口监听

Kafka 默认端口:

  • 9092(Kafka)
  • 2181(ZooKeeper,若使用)
ss -lntp | grep 9092
ss -lntp | grep 2181

二、使用 Kafka 自带命令行工具(最常用)

1️⃣ 查看 Broker 状态

/opt/kafka/bin/broker-status.sh --bootstrap-server localhost:9092

或(新版本推荐)

/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092

2️⃣ 查看 Topic 状态

/opt/kafka/bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--describe

输出示例:

Topic: test-topic PartitionCount: 3 ReplicationFactor: 2

3️⃣ 查看消费者组状态

/opt/kafka/bin/kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--list

查看消费进度(是否堆积):

/opt/kafka/bin/kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--describe --group your-group-id

关注:

  • LAG ≠ 0 → 消费堆积

三、JMX 监控(生产环境必备)

1️⃣ 启用 Kafka JMX

编辑 kafka-server-start.shsystemd 启动参数:

export JMX_PORT=9999

或 systemd:

Environment="JMX_PORT=9999"

重启 Kafka。


2️⃣ 使用 jconsole / VisualVM(本地或远程)

jconsole localhost:9999

关键指标:

  • kafka.server:type=BrokerTopicMetrics
  • UnderReplicatedPartitions
  • OfflineLogDirectoryCount
  • RequestHandlerAvgIdlePercent

四、系统级监控(Debian 常用)

1️⃣ CPU / 内存 / 磁盘

top
htop
free -h
df -h

Kafka 是 磁盘 IO 密集型,重点看:

  • 磁盘使用率
  • iowait

2️⃣ 磁盘 IO

iostat -x 1

关注:

  • %util
  • await

五、日志监控(非常重要)

Kafka 日志目录

/opt/kafka/logs/server.log

实时查看:

tail -f /opt/kafka/logs/server.log

常见异常:

  • LEADER_NOT_AVAILABLE
  • NOT_ENOUGH_REPLICAS
  • OutOfMemoryError

六、使用 systemd 监控(推荐)

查看 Kafka 状态

systemctl status kafka

自动重启

[Service]
Restart=always
RestartSec=10

七、生产级监控方案(强烈推荐)

✅ Prometheus + Grafana(主流)

1️⃣ 使用 JMX Exporter

java -javaagent:jmx_prometheus.jar=7071:kafka.yml

2️⃣ Grafana 看板

常用指标:

  • Broker 数量
  • UnderReplicatedPartitions
  • Topic 流量
  • Consumer Lag

✅ Kafka Eagle(国产,Web UI)

  • 查看 Topic / Consumer / Lag
  • 支持多集群
  • Web 界面友好

八、快速检查清单(排障用)

✅ Kafka 进程是否存在
✅ 9092 端口是否监听
✅ Topic 是否健康
✅ Consumer Lag 是否增长
✅ 磁盘是否快满
✅ JMX 是否可访问


九、示例:一键检查脚本(Debian)

#!/bin/bash
echo "=== Kafka Process ==="
ps -ef | grep Kafka | grep -v grep

echo "=== Port 9092 ==="
ss -lntp | grep 9092

echo "=== Disk Usage ==="
df -h

echo "=== Consumer Lag ==="
/opt/kafka/bin/kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--describe --group your-group-id

如果你愿意,我可以:

  • 给你 Debian systemd 完整 Kafka 服务配置
  • 帮你 搭建 Prometheus + Grafana 监控 Kafka
  • 针对 Kafka 崩溃 / 消费堆积 做专项排查

你现在 Kafka 是 单机还是集群

0