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