Grafana 上消费者 lag 面板一直是 no data,kafka-exporter 日志报 dial tcp 9093 connect refused,出问题时只能登机器手敲命令。日志里能对上时间点,这种反而好排。
broker 启动参数没加 JMX_PORT,exporter 连不上 JMX 就取不到 consumer group 指标。容器部署时 9093 也没有 expose。这一点先确认清楚,后面就不用反复试。
export JMX_PORT=9093 kafka-server-start.sh -daemon server.properties curl -s localhost:9308/metrics | grep kafka_consumergroup_lag | head
「Kafka lag 监控」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。改完隔一天再看一次,当场正常不代表能稳住。
处理上按这个顺序:启动脚本加 JMX_PORT=9093 并开放对应端口;确认 kafka-exporter 的 kafka.server 指向每个 broker;抓一次 metrics 确认有 kafka_consumergroup_lag 指标;面板里按 group 和 topic 建变量 避免写死。
结果对不对很好判断,面板里 lag 曲线有数据 手敲 describe 得到的数字与面板一致。
