Kafka offset commit 分析工具

简介: 订阅Kafka内部Topic __consumer_offsets 中的消息 统计consumer group提交数 分析异常提交情况 并定位问题服务

问题起因

前些天生产上的一套Kafka集群吞吐量异常高,根据Grafana监控发现主要数据TPS来自 __consumer_offsets队列。

image.png

其他业务TOPIC总TSP才几百+,而kafka内部Topic __consumer_offsets 达到33.85k,这现象明显不正常啊。

排查思路

首先怀疑是不是监控出问题了,Prometheus Exporter有bug? 还是Grafana Metrics写错了?又看了看其他集群的监控,发现并不是监控工具的问题。

然后登陆到kafka集群后台服务器,查看一下这个topic的LOG-END-OFFSET情况,使用kafka命令行工具kafka-consumer-groups.sh,间隔5分钟采集多次,然后计算一下每秒的增量,发现和监控显示的吞吐量基本吻合。

__consumer_offsets 22         -               2729106         -               consumer-10656153-9fd2bbbb-6e4f-41d1-9b60-2bbcf387bd65 /xxx.xxx.xxx    consumer-10656153
__consumer_offsets 30         -               0               -               consumer-10656153-9fd2bbbb-6e4f-41d1-9b60-2bbcf387bd65 /xxx.xxx.xxx    consumer-10656153
__consumer_offsets 8          -               2902605         -               consumer-10656153-9fd2bbbb-6e4f-41d1-9b60-2bbcf387bd65 /xxx.xxx.xxx    consumer-10656153
__consumer_offsets 21         -               0               -               consumer-10656153-9fd2bbbb-6e4f-41d1-9b60-2bbcf387bd65 /xxx.xxx.xxx    consumer-10656153
__consumer_offsets 4          -               26901884        -               consumer-10656153-9fd2bbbb-6e4f-41d1-9b60-2bbcf387bd65 /xxx.xxx.xxx    consumer-10656153
__consumer_offsets 27         -               1173895         -               consumer-10656153-9fd2bbbb-6e4f-41d1-9b60-2bbcf387bd65 /xxx.xxx.xxx    consumer-10656153
__consumer_offsets 7          -               829529641       -               consumer-10656153-9fd2bbbb-6e4f-41d1-9b60-2bbcf387bd65 /xxx.xxx.xxx    consumer-10656153
__consumer_offsets 9          -               1788460542      -               consumer-10656153-9fd2bbbb-6e4f-41d1-9b60-2bbcf387bd65 /xxx.xxx.xxx    consumer-10656153
__consumer_offsets 46         -               0               -               consumer-10656153-9fd2bbbb-6e4f-41d1-9b60-2bbcf387bd65 /xxx.xxx.xxx    consumer-10656153
__consumer_offsets 25         -               0               -               consumer-10656153-9fd2bbbb-6e4f-41d1-9b60-2bbcf387bd65 /xxx.xxx.xxx    consumer-10656153
......

顺便说一下Kafka的内部队列 __consumer_offsets的作用,kafka默认将这个topic分成了50个partition,用于存储consumer group每次commit的offset信息,目的是为了在consumer重启后或者在增减消费者时,可以根据此offset信息继续消费。
Consumer Group 对应Partition计算规则:Math.abs(groupID.hashCode()) % numPartitions
Topic中存储的消息格式:[Group, Topic, Partition]::[OffsetMetadata[Offset, Metadata], CommitTime, ExpirationTime]

分析到了这里,造成__consumer_offsets吞吐量过高的真相只有一个了,就是业务端的应用服务中的consumer group提交的频次过高。

既然已经定位了问题了 ,那么去追查具体服务就OK了吧,现实情况显然不是这样的,使用这套kafka集群的平台是一个非常庞大的业务系统,150+的微服务,具体哪些服务和kafka相关,哪些是消费者,估计都得梳理几天。。。

分析工具

既然已经知道问题产生的原因,同时也了解kafka内部队列__consumer_offsets的存储策略,那么写个程序去读取该topic的消息,然后分析哪些consumer group的提交频次过高,根据group name便可以直接定位具体是哪个微服务了。

coding......

开始表演show time.......

根据定位到的异常微服务排查发现,有使用offset自动提交,但是auto.commit.interval设置了100ms,也有使用手动提交offset,但无数据消费时仍然提交offset。。。太坑了

此后,代码质量的checkpoint项中增加关于kafka使用的检查。

最后分享一下工具GitHub地址:kafka-offset-consumer
image.png

相关文章
|
6月前
|
消息中间件 数据可视化 Kafka
Mac Kafka可视化工具(kafkatool)
Mac Kafka可视化工具(kafkatool)
429 0
|
7月前
|
消息中间件 数据可视化 Kafka
【kafka可视化工具】kafka-eagle在windows环境的下载、安装、启动与访问
【kafka可视化工具】kafka-eagle在windows环境的下载、安装、启动与访问
731 0
|
1天前
|
消息中间件 数据采集 分布式计算
【数据采集与预处理】数据接入工具Kafka
【数据采集与预处理】数据接入工具Kafka
9 1
【数据采集与预处理】数据接入工具Kafka
|
6天前
|
消息中间件 存储 Prometheus
【Kafka】Kafka 提供了哪些系统工具
【4月更文挑战第11天】【Kafka】Kafka 提供了哪些系统工具
|
6天前
|
消息中间件 Kafka Linux
Kafka【付诸实践 03】Offset Explorer Kafka 的终极 UI 工具安装+简单上手+关键特性测试(一篇学会使用 Offset Explorer)
【2月更文挑战第21天】Kafka【付诸实践 03】Offset Explorer Kafka 的终极 UI 工具安装+简单上手+关键特性测试(一篇学会使用 Offset Explorer)
271 2
|
6天前
|
消息中间件 负载均衡 Kafka
Kafka学习---消费者(分区消费、分区平衡策略、offset、漏消费和重复消费)
Kafka学习---消费者(分区消费、分区平衡策略、offset、漏消费和重复消费)
247 2
|
6天前
|
消息中间件 存储 Kafka
Kafka - 3.x offset位移不完全指北
Kafka - 3.x offset位移不完全指北
70 0
|
6天前
|
消息中间件 存储 监控
深度解析 Kafka 中的 Offset 管理与最佳实践
Kafka 中的 Offset(偏移量)是消息处理的关键元素,对于保证消息传递的可靠性和一致性至关重要。本篇博客将深度解析 Kafka 中的 Offset 管理机制,并提供丰富的示例代码,让你更全面地理解 Offset 的原理、使用方法以及最佳实践。
|
6天前
|
消息中间件 Kafka Linux
Kafka【应用 01】Offset Explorer Kafka 的终极 UI 工具安装+简单上手+关键特性测试(一篇学会使用 Offset Explorer)
Kafka【应用 01】Offset Explorer Kafka 的终极 UI 工具安装+简单上手+关键特性测试(一篇学会使用 Offset Explorer)
242 0
|
6天前
|
消息中间件 数据可视化 Java
Kafka可视化工具_Kafka-Eagle
Kafka可视化工具_Kafka-Eagle
111 0

热门文章

最新文章