温馨提示×

如何在linux监控kafka

小樊
49
2026-09-20 15:17:24
栏目: 智能运维

在 Linux 上监控 Kafka,可以从系统层、Kafka 自身指标、日志、命令行工具、可视化和告警几个层面来做。下面给你一套实用方案。


一、Kafka 自带命令行工具(最基础)

1. 查看 Topic 和分区

# 查看所有 topic
kafka-topics.sh --bootstrap-server localhost:9092 --list

# 查看 topic 详情
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test-topic

2. 消费 / 生产测试

# 消费
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning

# 生产
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic

3. 消费者组监控

kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group

可以看到:

  • LAG(消费滞后)
  • CURRENT-OFFSET
  • LOG-END-OFFSET

二、Kafka 关键监控指标(JMX)

Kafka 通过 JMX 暴露大量指标。

1. 启用 JMX

在 kafka-server-start.sh 或 server.properties 中配置:

export JMX_PORT=9999

重启 Kafka 后可用 jconsole 或 jvisualvm 连接:

jconsole localhost:9999

2. 重要监控指标

  • Broker
    • kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec
    • kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec
    • kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec
  • 请求
    • kafka.network:type=RequestMetrics,name=RequestQueueTimeMs
    • kafka.network:type=RequestMetrics,name=LocalTimeMs
  • 消费滞后
    • kafka.consumer:type=consumer-fetch-manager-metrics
  • 分区 & 副本
    • UnderReplicatedPartitions
    • OfflinePartitionsCount(必须为 0)

三、使用 Kafka Exporter + Prometheus + Grafana(推荐)

1. 部署 Kafka Exporter

docker run -d \
  -p 9308:9308 \
  danielqsj/kafka-exporter \
  --kafka.server=localhost:9092

2. Prometheus 配置

scrape_configs:
  - job_name: kafka
    static_configs:
      - targets: ['localhost:9308']

3. Grafana

  • 导入官方 Dashboard(ID:7589 或 18217)
  • 可监控:
    • 消费 Lag
    • Topic 吞吐量
    • Broker 状态

四、系统层监控(Linux)

1. 基础资源

top
htop
iostat -x 1
df -h
free -m

2. 磁盘(Kafka 很依赖磁盘 IO)

iostat -x 1
dstat

3. 网络

iftop
netstat -an | grep 9092

五、日志监控

Kafka 日志位置(默认):

/var/log/kafka/

重点关注:

  • ERROR
  • Shutdown
  • Rebalance
  • Under-replicated

可用:

tail -f /var/log/kafka/server.log | grep ERROR

或接入 ELK / Loki。


六、告警建议

至少监控以下项:

  • Broker 宕机
  • UnderReplicatedPartitions > 0
  • Consumer Lag 持续增长
  • 磁盘使用率 > 80%
  • GC 频繁 / Full GC

七、常见组合方案

场景 推荐
简单查看 kafka-consumer-groups.sh
生产环境 Prometheus + Kafka Exporter + Grafana
云原生 Kafka + Strimzi + Prometheus
日志分析 ELK / Loki

如果你愿意,我可以:

  • 给你一份 Prometheus + Grafana 完整配置
  • 或针对 Docker / K8s 环境 给方案
  • 或只监控 Consumer Lag

你现在是单机还是集群?生产还是测试?

0 踩