Kafka常用命令

重复消费

某个消费者组已经将消息消费了,如果想重复消费,可以使用如下步骤:

1、在 kafka/config 目录下,拷贝一份 consumer.properties 文件,比如 consumer_xwj.properties

2、修改 consumer_xwj.properties 文件,将group.id 改成自己的消费者组名称,比如:tc_ids_detection_consumer

3、执行命令,将每个分区的offset向后重置1。

/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group tc_ids_detection_consumer --reset-offsets --topic tc_ids_detection --shift-by -1 --command-config /usr/local/qingteng/kafka/config/consumer_xwj.properties --execute

以上命令中的变量需要根据实际情况调整,变量:bootstrap-server、group、topic、command-config 

--shift-by N : 把位移调整到当前位移 + N 处,注意 N 可以是负数,表示向前移动

注意:执行以上命令前,必须先停掉该消费者组(如果是后台服务使用该消费者组,则需要先停掉该服务再执行命令)

 

查看消息堆积

如果需要查看下kafka消息的堆积情况,可以执行命令:

/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --command-config /usr/local/qingteng/kafka/config/consumer.properties --describe --group tc_ids_detection_consumer

 以上命令中的变量需要根据实际情况调整,变量:bootstrap-server、group、command-config   

其中 LAG 表示消息的堆积情况。

 

删除消费者组

删除消费者组(比如:group=test-consumer-group)时,报如下错: 

问题原因:在consumer.properties文件中,是配置了权限信息的,所以在删除时,也必须带上权限信息。

解决办法:使用如下命令删除:

/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --command-config /usr/local/qingteng/kafka/config/consumer.properties --group test-consumer-group --delete

 

查看某个消费者组中的消费者信息

查看 tc_ids_detection_consumer 消费者组的消费者信息,执行命令:

kafka-consumer-groups.sh --bootstrap-server kafka-headless.infra-system:9092 --command-config /tmp/client.properties --describe --members --group tc_ids_detection_consumer

可以看到这个消费者组中有15个消费者,有3个空闲的。

 

设置topic消息保存时间

修改某个topic消息配置的保存时间为12小时(默认是7天),执行命令:

/bin/kafka-configs.sh --bootstrap-server localhost:9092 --command-config /usr/local/qingteng/kafka/config/consumer.properties --alter --entity-type topics --entity-name tc_ids_detection --add-config retention.ms=43200000

查看某个topic消息配置的保存时间,执行命令:

/bin/kafka-configs.sh --bootstrap-server localhost:9092 --command-config /usr/local/qingteng/kafka/config/consumer.properties --describe --entity-type topics --entity-name tc_ids_detection

注意:如果topic使用的是默认配置,那执行查看保存时间的命令会报错,此时可以直接在kafka的配置文件(server.properties)中查看。

 

打印消息数据

/bin/kafka-dump-log.sh --files /data/kafka-data/bigdata_ids_detection-0/00000000000000000000.log --print-data-log

注意:如果log日志数据太多,可以将打印结果重定向到另一个文件。

 

实时查看消息数据

1、实时查看指定topic的消息(带关键字查询):

kafka-console-consumer.sh --consumer.config /tmp/client.properties  --bootstrap-server kafka-headless.qt-system:9092  --topic msAppIds.serviceIds.queuing.detection.agentDetection --property print.timestamp=true  --from-beginning | grep "sha11111111111"

说明:该命令会从起始位置查询所有分区的数据,最终会通过grep过滤

2、实时查看指定topic、指定分区、指定偏移量的消息(带关键字查询):

kafka-console-consumer.sh --consumer.config /tmp/client.properties  --bootstrap-server kafka-headless.qt-system:9092  --topic msAppIds.serviceIds.queuing.detection.agentDetection --property print.timestamp=true  --partition 1 --offset 694076 --max-messages 10000  | grep "sha11111111111"

说明:以上命令是查询1分区,偏移量为694076,最多10000条消息

3、client.properties文件:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username='$user' password='$password'

 

查看指定topic分区信息

查询指定topic的的分区信息:

kafka-topics.sh --describe --topic msAppIds.serviceIds.queuing.detection.agentDetection --bootstrap-server localhost:9092 --command-config /tmp/client.properties

查询每个分区的offset

查询指定topic、每个分区从指定时间开始的的offset:

kafka-get-offsets.sh --command-config /tmp/client.properties --bootstrap-server localhost:9092 --topic msAppIds.serviceIds.queuing.detection.agentDetection --time 1727076120000

 

posted @ 2021-09-02 09:06  仅此而已-远方  阅读(345)  评论(0编辑  收藏  举报