[聚合文章] Kafka0.9获取消费组偏移量

消息系统 2017-11-22 18 阅读

新版本(0.9+)的Kafka将consumer group的消费偏移量保存在一个特殊的topic里,在此之前的版本中都是保存在zookeeper里。

而新版本的kafka SDK并没有暴露出查询偏移量的方法,也就无从得知现在消费积压了多少任务,而我正需要监控这个事情。

经过各种谷歌,最终只能使用Kafka自带的一个工具来获取,方法如下:

bin/kafka-consumer-groups.sh --bootstrap-server "10.9.107.229:9092" --new-consumer --describe --group 你的消费组名称

它将打印消费组关联的所有topic以及partition的Offset信息,下面是个例子:

GROUP, TOPIC, PARTITION, CURRENT OFFSET, LOG END OFFSET, LAG, OWNER
smzdm-1, test-bigpipe, 0, 4957648, 4957648, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 1, 4962099, 4962099, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 2, 4958944, 4958944, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 3, 4959175, 4959175, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 4, 4960354, 4960354, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 5, 4960861, 4960861, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 6, 4951609, 4951609, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 7, 4961980, 4961980, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 8, 4957978, 4957978, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 9, 4963736, 4963736, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 10, 4954817, 4954817, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 11, 4955323, 4955323, 0, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 12, unknown, 0, unknown, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 13, unknown, 0, unknown, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 14, unknown, 0, unknown, rdkafka_/10.10.25.125
smzdm-1, test-bigpipe, 15, unknown, 0, unknown, rdkafka_/10.10.25.125

CURRENT OFFSET是消费到哪里,LOG END OFFSET是队列总OFFSET,后者减去前者就是堆积的消息个数。

最后

在搞监控的过程中,我发现之前使用的一个consumer group不见了(我换了新的consumer group在消费),也就是通过如下命令无法获取到之前的那个消费组:

bin/kafka-consumer-groups.sh --bootstrap-server "10.9.107.229:9092" --new-consumer --list

经过谷歌发现,原来kafka会自动清理长时间没有动静(没有offset commit)的consumer group,导致备份的offset过期被丢弃了,具体见: stockoverflow

Kafka服务端可以配置参数来控制这种长时间空闲的consumer group的过期时间,避免过了一阵子想继续消费,却发现offset不见了。

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。