在 Linux 上监控 Kafka,通常从 系统层面、Kafka 自身指标、消息消费情况、日志与告警 几个维度来做。下面给你一套比较实用、由浅入深的方案。
ps -ef | grep kafka
或
jps | grep Kafka
netstat -tunlp | grep 9092
# 或
ss -tunlp | grep 9092
systemctl status kafka
journalctl -u kafka -f
kafka-topics.sh --bootstrap-server localhost:9092 \
--describe
kafka-consumer-groups.sh \
--bootstrap-server localhost:9092 \
--describe --group your-consumer-group
关注:
LAG:消费滞后CURRENT-OFFSETLOG-END-OFFSET# 生产
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 后可用:
netstat -tunlp | grep 9999
架构:
Kafka → JMX Exporter → Prometheus → Grafana
JMX Exporter
jmx_prometheus_javaagent-javaagent:/path/jmx_prometheus_javaagent.jar=7071:/path/kafka.yml
Prometheus 配置
scrape_configs:
- job_name: kafka
static_configs:
- targets: ['kafka-host:7071']
Grafana
# 开源:Yahoo CMAK
功能:
kafka.server:type=BrokerTopicMetrics
kafka.network:type=RequestMetrics
kafka.consumer:type=consumer-fetch-manager-metrics
df -h
iostat -x 1
Kafka 对磁盘 IO 非常敏感。
# server.properties
log.dirs=/data/kafka-logs
tail -f /data/kafka-logs/server.log
常见异常:
Under-replicated partitionsLeader not availableGC overheadOutOfMemoryError可接:
建议告警项:
| 场景 | 推荐 |
|---|---|
| 学习/测试 | 命令行 + consumer-groups |
| 单机生产 | JMX + Prometheus + Grafana |
| 集群生产 | CMAK + Prometheus + 告警 |
| 云环境 | 云厂商 Kafka 监控 |
如果你愿意,可以告诉我:
我可以直接给你 可复制的配置文件。