如何使用Kafka CLI查看Kafka主题与分区的事件/消息数量?
用Kafka CLI计算Topic/Partition的现存消息数量
核心逻辑
当前分区的现存消息数 = 分区最高偏移量(High Watermark) - 分区最低偏移量(Log Start Offset)—— 因为消息清理后起始偏移不为0,必须通过这个差值得到实际存在的消息数量。
具体操作
- 获取分区偏移量
使用官方提供的GetOffsetShell工具(通过kafka-run-class.sh调用),一次性获取目标Topic所有分区的起始和最高偏移:
./kafka-run-class.sh kafka.tools.GetOffsetShell --bootstrap-server <你的Broker地址> --topic <目标Topic名> --time -2 --time -1
- 参数说明:
--time -2:返回分区的最低偏移量(已清理消息后的起始位置)--time -1:返回分区的最高偏移量(当前写入的最新位置)
- 批量计算消息数
工具返回格式为topic:partition:offset,可以用awk脚本自动计算每个分区的消息数:
./kafka-run-class.sh kafka.tools.GetOffsetShell --bootstrap-server <你的Broker地址> --topic <目标Topic名> --time -2 --time -1 | awk -F: '{if (NR%2==1) start=$3; else print $1":"$2" 现存消息数: " $3 - start}'
额外说明
- 部分旧版本Kafka可能附带
kafka-get-offsets.sh,但兼容性不如GetOffsetShell,建议优先使用前者。 - 若Kafka版本≥2.4,也可通过
kafka-consumer-groups.sh --describe --all-groups查看偏移,但该工具依赖消费者组订阅记录,不如GetOffsetShell直接查询Broker数据可靠。
内容的提问来源于stack exchange,提问作者user2138149
相关产品推荐
相关产品推荐

