温馨提示×

如何监控Linux Kafka

小樊
42
2026-08-01 14:53:00
栏目: 智能运维

在 Linux 上监控 Kafka,通常从 Kafka 自身指标、操作系统、JVM、以及上下游依赖 四个层面来做。下面给你一套实用、可落地的监控方案


一、Kafka 监控的核心指标

1️⃣ Broker 级别(最重要)

通过 JMX 暴露(默认端口 9999,建议显式开启)。

指标 说明 关注点
UnderReplicatedPartitions 副本未同步分区数 ≠0 表示异常
OfflineLogDirectoryCount 离线日志目录 磁盘问题
ActiveControllerCount 活跃 Controller 应为 1
RequestHandlerAvgIdlePercent 请求线程空闲率 <20% 说明压力大
NetworkProcessorAvgIdlePercent 网络线程空闲率 低说明网络瓶颈
BrokerState Broker 状态 RUNNING

2️⃣ Topic / Partition 级别

指标 说明
MessagesInPerSec 消息写入速率
BytesInPerSec / BytesOutPerSec 流量
FetchMessageConversions 消费转换次数
LogEndOffset 分区最新 offset
Lag(消费者) 消费延迟(最关键)

3️⃣ Consumer Lag(消费延迟)

最常用、最重要的监控项

  • 工具:
    • kafka-consumer-groups.sh
  • 示例:
kafka-consumer-groups.sh \
  --bootstrap-server localhost:9092 \
  --describe --group my-group

关注:

  • LAG 是否持续增长
  • CURRENT-OFFSET 是否变化

二、JVM 监控(Kafka 是 Java 应用)

关键 JVM 指标

  • Heap Used / Committed
  • GC 次数 & GC 时间
  • Thread Count
  • Metaspace

建议

  • 开启 GC 日志
  • 使用 G1 GC
  • 避免频繁 Full GC

三、操作系统 & 硬件监控

Linux 层面

项目 工具
CPU top / htop
内存 free / vmstat
磁盘 IO iostat / iotop
网络 sar / iftop
文件句柄 lsof / ulimit

✅ Kafka 对 磁盘 IO 和文件句柄 非常敏感。


四、常用 Kafka 监控方案(推荐)

✅ 1. Kafka + JMX + Prometheus(最主流)

架构

Kafka → JMX Exporter → Prometheus → Grafana

步骤

1️⃣ 启动 Kafka 时开启 JMX

export JMX_PORT=9999

2️⃣ 使用 JMX Exporter

  • 下载 jmx_prometheus_javaagent.jar
  • 修改 Kafka 启动参数:
KAFKA_OPTS="-javaagent:/path/jmx_prometheus_javaagent.jar=7071:/path/kafka.yml"

3️⃣ Prometheus 抓取

- job_name: kafka
  static_configs:
    - targets: ["localhost:7071"]

4️⃣ Grafana 展示

  • 官方/社区 Kafka Dashboard
  • 重点看:
    • Lag
    • Broker 状态
    • 分区分布
    • 流量

生产环境强烈推荐


✅ 2. Kafka Manager / CMAK(轻量)

  • 适合:
    • 小型集群
    • 快速查看 topic / partition / broker
  • 不足:
    • 监控能力有限
    • 不再活跃维护

✅ 3. Burrow(专门监控 Lag)

  • 专注 Consumer Lag
  • 支持报警
  • 适合消费延迟监控

✅ 4. ELK / Loki(日志监控)

Kafka 日志路径:

/var/log/kafka/

关注:

  • ERROR / FATAL
  • Leader 切换
  • 副本异常

五、常见告警规则(建议)

✅ 必须告警:

  • UnderReplicatedPartitions > 0
  • Consumer Lag > 阈值
  • Broker 宕机
  • 磁盘使用率 > 80%
  • GC 时间异常

✅ 建议告警:

  • 请求队列堆积
  • 网络/磁盘 IO 饱和
  • 分区不均衡

六、日常排查命令速查

# Broker 列表
kafka-broker-api-versions.sh --bootstrap-server localhost:9092

# Topic 详情
kafka-topics.sh --bootstrap-server localhost:9092 --describe

# 消费延迟
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group xxx

# 查看线程/内存
jstat -gc <pid>
top -H -p <pid>

七、推荐组合(企业级)

最佳实践

Kafka
+ JMX Exporter
+ Prometheus
+ Grafana
+ Alertmanager
+ 日志系统

如果你愿意,我可以:

  • ✅ 给你 Kafka JMX Exporter 配置文件
  • ✅ 给你 Prometheus + Grafana 完整示例
  • ✅ 根据你 Kafka 版本(2.x / 3.x)定制监控方案
  • ✅ 帮你排查 消费 Lag / 丢消息 / 重复消费

你现在用的是 Kafka 几?单节点还是集群?

0