有些情况下需要从指定时间点开始重新消费kafka,下面记录两种方法
一、直接指定时间重置Offset
新版本(2.*)的kafka才支持 –reset-offsets 参数
kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.72.16:9092 --group elk-logstash --reset-offsets --to-datetime '2020-07-20T00:00:00.000' --topic request-php-log --execute |
二、查找指定时间的offset并手动重置
0.*版本的只能用这种笨方法
前提是生产进topic的message 需要有时间字段,例如:”2020-07-20 00:10:23 test messages.”
查看topic的offset最大值
–time -1 查找offset最大值
–time -2 查找offset最小值
/roobo/server/kafka/bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.72.16:9092 --topic request-php-log --time -1
指定offset消费topic
根据日志内容的时间判断offset是不是自己想要的时间点
如果不是就增大或者减小offset值,直至找到自己想要的时间点的日志,并记录下offset
./kafka-simple-consumer-shell.sh --broker-list 192.168.72.16:9092 --topic request-php-log --max-messages 10 --partition 1 --print-offsets --offset 1522801500
修改zookeeper里的offset偏移量
记录下offset后 需要手动去zookeeper里修改consumer-group的消费偏移量
./zkCli.sh
set /consumers/test-consumer-group/offsets/request-php-log/1 1522810500
这时再次启动test-consumer-group的消费端即可从指定的offset处开始消费