kafka查看消费数据
一、如何查看
在老版本中,使用kafka-run-class.sh 脚本进行查看。但是对于最新版本,kafka-run-class.sh 已经不能使用,必须使用另外一个脚本才行,它就是kafka-consumer-groups.sh
普通版
查看所有组
要想查询消费数据,必须要指定组。那么线上运行的kafka有哪些组呢?使用以下命令:
bin/kafka-consumer-groups.sh --bootstrap-server kafka-1.default.svc.cluster.local:9092 --list
注意:根据实际情况修改kafka的连接地址
执行输出:
...
usercenter
...
这些组在是程序代码里面定义的,比如usercenter就是一个业务模块。
查看消费情况
bin/kafka-consumer-groups.sh --describe --bootstrap-server kafka-1.default.svc.cluster.local:9092 --group usercenter
参数解释:
--describe 显示详细信息
--bootstrap-server 指定kafka连接地址
--group 指定组。
注意:--group指定的组必须存在才行!可以用上面的--list命令来查看
执行输出:
指定自己的分组 自己消费的topic会显示kafka总共有多少数据,以及已经被消费了多少条
标记解释:
TOPIC |
PARTITION |
CURRENT-OFFSET |
LOG-END-OFFSET |
LAG |
CONSUMER-ID |
HOST |
CLIENT-ID |
---|---|---|---|---|---|---|---|
topic名字 | 分区id | 当前已消费的条数 | 总条数 | 未消费的条数 | 消费id | 主机ip | 客户端id |
从上面的信息可以看出,topic为xx-pending-business-c0a9dc71 总共消费了4条信息, 未消费的条数为0。也就是说,消费数据没有积压的情况!
注意:以kafkaspout类作为消费者去读kafka数据,相当于直接从kafka server上取文件,没有消费者组的概念
每次读的数据存在自己zk的offet中,所以不能通过上述命令查看
ACL版查看
如果kafka启用了acl权限验证,则不能直接使用上面的命令查看,需要增加参数--command-config参数才行
此参数必须要指定一个配置文件才行
修改默认的配置文件
cd /kafka_2.12-2.1.0/ vim config/config/consumer.properties
最后一行增加2行,表示指定SASL协议连接
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
查看所有组
bin/kafka-consumer-groups.sh --command-config config/consumer.properties --bootstrap-server kafka-1.default.svc.cluster.local:9092 --list
注意:--command-config 后面的配置文件,我用的是相对路径。请以实际情况为准!
查看消费情况
bin/kafka-consumer-groups.sh --command-config config/consumer.properties --describe --bootstrap-server kafka-1.default.svc.cluster.local:9092 --group usercenter
如果需要使用shell脚本,来检测kafka的消费数据,有没有积压。
可以先使用--list命令,然后对结果使用for循环遍历,将组名赋予到--group参数上即可!
本文参考链接: