Kafka 2.11-0.11.0.0版本如何查看Topic消费滞后?
嘿,这个问题我太熟悉了!从Kafka 2.10-0.9.0.1升级到2.11-0.11.0.0之后,旧的ConsumerOffsetChecker命令确实失效了——因为从Kafka 0.9版本开始,官方就支持将消费偏移量存储在Broker端的__consumer_offsets主题中(这也是现在的推荐方案,替代之前的ZooKeeper存储),所以我们需要换用新的工具来查看消费滞后。
下面给你几种实用的方法:
1. 使用官方自带的kafka-consumer-groups.sh脚本(首推)
这是官方用来替代旧工具的全新脚本,功能更全面,支持查看Broker端存储的偏移量。
查看指定消费组的所有主题滞后情况
执行以下命令,替换对应的Kafka Broker地址和消费组名称:
./kafka-consumer-groups.sh --bootstrap-server your-kafka-broker-ip:9092 --describe --group your-group-name
执行后会输出类似这样的详细信息:
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
your-group-name topicName 0 1000 1200 200 consumer-1-xxx 192.168.1.100 consumer-1
your-group-name topicName 1 800 950 150 consumer-2-xxx 192.168.1.101 consumer-2
其中:
- LAG:就是你要找的消费滞后量,代表消费组落后于最新消息的条数
- CURRENT-OFFSET:消费组当前已提交的偏移量
- LOG-END-OFFSET:对应分区的最新消息偏移量
只查看指定主题的滞后情况
如果只想关注某个特定主题,可以加上--topic参数:
./kafka-consumer-groups.sh --bootstrap-server your-kafka-broker-ip:9092 --describe --group your-group-name --topic topicName
2. 若仍使用ZooKeeper存储偏移量(不推荐)
如果升级后你没有修改配置,依然用ZooKeeper存储偏移量,还可以调用旧的工具类(注意:该方式已被官方标记为废弃,未来版本会移除):
./kafka-run-class.sh kafka.tools.ZooKeeperConsumerOffsetChecker --group your-group-name --topic topicName --zookeeper zooIp:2181
这里还是建议尽快迁移到Broker端存储偏移量,这是官方的长期推荐方案。
3. 编程方式获取(适合自定义监控)
如果需要将消费滞后数据集成到自己的监控系统中,可以用Kafka的AdminClient API来实现,核心步骤如下:
- 通过AdminClient获取目标消费组在各个分区的已提交偏移量
- 通过KafkaConsumer获取每个分区的最新消息偏移量(即LOG-END-OFFSET)
- 计算每个分区的滞后量:
LAG = LOG-END-OFFSET - CURRENT-OFFSET
这种方式适合有定制化监控需求的场景。
内容的提问来源于stack exchange,提问作者Ashish

