温馨提示×

怎样监控linux kafka状态

小樊
42
2026-10-02 09:29:50
栏目: 智能运维

监控 Linux 上 Kafka 的状态,可以从进程/系统层、Kafka 自身指标、日志、以及可视化工具几个层面来做。下面按“由浅入深”的方式说明。


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

1. 查看进程

ps -ef | grep kafka
# 或
jps | grep Kafka

2. 查看端口(默认 9092)

netstat -tunlp | grep 9092
# 或
ss -tunlp | grep 9092

3. 查看服务状态(如果用 systemd)

systemctl status kafka

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

1. 查看 Broker 状态

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

2. 查看 Topic 和分区状态

kafka-topics.sh --bootstrap-server localhost:9092 --describe

3. 查看消费者组状态

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

4. 测试生产和消费

kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

三、JMX 监控(Kafka 核心指标)

Kafka 通过 JMX 暴露大量指标。

1. 启用 JMX

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

export JMX_PORT=9999

重启 Kafka 后,可用 jconsole 或 visualvm 连接:

jconsole localhost:9999

2. 常用监控指标

  • kafka.server:type=BrokerTopicMetrics
    • MessagesInPerSec
    • BytesInPerSec / BytesOutPerSec
  • kafka.server:type=ReplicaManager
    • UnderReplicatedPartitions
    • PartitionCount
  • kafka.network:type=RequestMetrics
    • RequestQueueSize
  • kafka.controller:type=KafkaController

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

1. Kafka 日志位置

一般在:

/logs/server.log

或 server.properties 中:

log.dirs=/data/kafka-logs

2. 常见异常

  • Under-replicated partitions
  • Leader not available
  • OutOfMemoryError
  • Failed to send metrics

五、专业监控方案(推荐生产环境)

1. Kafka + Prometheus + Grafana(主流)

  • Kafka Exporter: https://github.com/danielqsj/kafka-exporter
  • 监控内容:
    • Topic 消息速率
    • 消费滞后(Lag)
    • Broker 存活
    • 分区副本状态

2. Kafka Manager / CMAK

  • 可视化查看:
    • Topic
    • Consumer Group
    • Partition 分布

3. ELK / Loki

  • 集中收集 Kafka 日志
  • 异常告警

六、简单告警示例(Shell)

if ! nc -z localhost 9092; then
  echo "Kafka is down" | mail -s "Kafka Alert" admin@x.com
fi

七、总结建议

场景 推荐方式
快速排查 kafka-topics.sh / ps / netstat
生产环境 Prometheus + Grafana
消费问题 kafka-consumer-groups.sh
稳定性 JMX + 日志监控

如果你愿意,可以告诉我:

  • 是单机还是集群
  • 用的是 裸机 / Docker / K8s
  • 是否已有 Prometheus / Zabbix

我可以给你一套可直接用的监控方案。

0 踩