Ubuntu上Kafka监控配置指南
一 监控方案总览
- JMX直连:Kafka 暴露大量运行时指标,可用 JConsole/JMX Exporter 采集,适合细粒度观测与临时排障。
- Prometheus + Grafana:以 JMX Exporter 或 kafka_exporter 为数据源,Prometheus 抓取,Grafana 展示与告警,适合长期可观测与容量规划。
- 可视化与偏移量:用 Kafdrop、Kafka Offset Monitor、Burrow 快速查看 Topic/分区/消费者组 与消费滞后。
- 系统层监控:配合 Netdata 等采集 CPU/内存/磁盘/网络,避免资源瓶颈掩盖消息系统问题。
二 启用JMX并本地查看
- 在 Kafka 启动前设置环境变量(示例为 JMX 端口 9999):
- 方式一(推荐,进程级):
export JMX_PORT=9999
export KAFKA_JMX_OPTS=“-Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false”
bin/kafka-server-start.sh config/server.properties
- 方式二(Java Agent,便于对接 Prometheus):
export KAFKA_OPTS=“-javaagent:/opt/jmx_prometheus_javaagent-0.18.0.jar=9090:/opt/kafka.yml”
bin/kafka-server-start.sh config/server.properties
- 本地验证:
- jconsole 或 jvisualvm 连接 service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi
- 若使用 JMX Exporter,访问 http://localhost:9090/metrics 应看到指标输出。
三 基于Prometheus与Grafana的监控
- 部署采集器(二选一或并用)
- JMX Exporter(轻量、贴近原生 JMX):
- 下载 jmx_prometheus_javaagent-0.18.0.jar 与配置文件 kafka.yml;
- 启动时加入 KAFKA_OPTS(见上);
- 在 Prometheus 添加抓取任务:
- job_name: ‘kafka-jmx’
static_configs:
- targets: [‘<broker_ip>:9090’]
- kafka_exporter(更侧重消费者滞后等):
- Docker 运行示例:
docker run -d --name kafka-exporter bitnami/kafka-exporter:latest --kafka.server=<broker_ip>:9092
- 端口映射 9308→9310(宿主机 9310 供 Prometheus 抓取);
- Prometheus 抓取任务:
- job_name: ‘kafka-exporter’
metrics_path: ‘/metrics’
scrape_interval: 15s
static_configs:
- targets: [‘<host_ip>:9310’]
- Grafana 可视化
- 添加数据源 Prometheus;
- 导入社区面板(如 “Kafka Exporter / JMX Kafka”),按 job 与实例维度查看 吞吐、请求时延、分区/副本状态、消费滞后 等。
四 关键监控指标与告警建议
- Broker 健康
- UnderReplicatedPartitions > 0、OfflinePartitionsCount > 0、ActiveControllerCount != 1
- UncleanLeaderElectionsPerSec(非 0 需关注数据一致性与可用性权衡)
- 复制与可用性
- ISR 收缩/扩展频繁、LeaderElectionRateAndTimeMs 异常升高
- 生产与消费
- 生产:request-latency-avg、waiting-threads、错误率
- 消费:records-lag / records-lag-avg(按 group/topic/partition 聚合)
- 资源与存储
- CPU/内存/磁盘 IO、网络带宽、磁盘使用率 与 日志目录剩余空间(配合日志保留策略)
- 建议告警(示例)
- 任一 Broker 的 UnderReplicatedPartitions ≥ 1 持续 5m
- records-lag-avg 超过阈值(按业务 SLA 设定)
- 磁盘可用 < 20% 或 请求时延 P95 持续升高
五 日志与可视化辅助工具
- 日志配置与巡检
- server.properties 关键项:log.dirs、log.retention.hours、log.retention.bytes、log.segment.bytes、log.roll.hours;
- 实时查看:tail -f /var/log/kafka/server.log(路径以实际部署为准),关注 ERROR/WARN 与 GC 日志。
- 可视化与偏移量工具
- Kafdrop:Web 查看 Topic/分区/消费者组,支持按 offset 检索消息;
- Kafka Offset Monitor:轻量 JAR 启动,观察 消费者组滞后;
- Burrow:专注 消费者滞后 与健康评估,可与 Prometheus/Grafana 联动。