其实kafka提供了一系列的工具可以查看offset.
如:
MacPro:kafka-0.8.2.2-src ajian$ kafka-consumer-offset-checker.sh --zookeeper localhost:2181 --topic my-replicated-topic --group console-consumer-11758
Group Topic Pid Offset logSize Lag Owner
console-consumer-11758 my-replicated-topic 0 3715607 3715608 1 console-consumer-11758_MacPro-1449666659508-e5c5524d-0
其实consumer的offset都是在zookeeper上面可以找到对应的数字. 具体查看kafka在zk中的数据结构: https://cwiki.apache.org/confluence/display/KAFKA/Kafka+data+structures+in+Zookeeper
但是一直没有办法找到logSize的数据从何而来(不用脚本工具), 这里面的logsize其实就是topic的最新offset或者说是message的长度.
延迟就是: logSize - Offset=Lag
本人的目的就是通过原理获取这些数据进行监控,不想使用sh工具的原因1.格式还需要转 2.速度慢 3.依赖环境 4.需要的数据过多或者过少.
请熟悉kafka的同学看看.
补充下一个开源工具KafkaOffsetMonitor的情况(本人对java不是非常的熟悉 看着有些费力)
kafka 的 api 提供了 getoffsetbefore 这个接口, 可以获取到最新的offset。把所有的lag加起来就是总的lag