kafka 检查 consumer 位置

版本 2.11-1.0.0
有时观察到消费者的位置是有用的。我们有一个工具,可以显示 consumer 群体中所有 consumer 的位置,以及他们所在日志的结尾。要在名为my-group的 consumer 组上运行此工具,消费一个名为my-topic的 topic 将如下所示:

1.查看所有消费者组

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

2.查看某个消费者的进度

1).bootstrap形式

> bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group

注意:这将仅显示使用Java consumer API(基于非ZooKeeper的 consumer)的 consumer 的信息
有3个分区,有3个消费线程,同为my-group组

TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG        CONSUMER-ID                                       HOST                           CLIENT-ID
my-topic                       0          2               4               2          consumer-1-029af89c-873c-4751-a720-cefd41a669d6   /127.0.0.1                     consumer-1
my-topic                       1          2               3               1          consumer-1-029af89c-873c-4751-a720-cefd41a669d6   /127.0.0.1                     consumer-1
my-topic                       2          2               3               1          consumer-2-42c1abd4-e3b2-425d-a8bb-e1ea49b29bb2   /127.0.0.1                     consumer-2

疑问:CONSUMER-ID是怎么来的?有2个consumer-1开头一个consumer-2开头的

如果消费者线程数大于分区数,有消费者线程空置
有1个分区,2个消费者

TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG        CONSUMER-ID                                       HOST                           CLIENT-ID
test                           0          1               1               0          consumer-1-a59a7d10-a8d0-4140-8807-ca374213f316   /127.0.0.1                     consumer-1
-                              -          -               -               -          consumer-1-fb81ff35-6854-437b-bc1f-51429642c241   /127.0.0.1

2).ZooKeeper形式

这个工具也适用于基于ZooKeeper的 consumer:

> bin/kafka-consumer-groups.sh --zookeeper localhost:2181 --describe --group my-group

注意:这只会显示关于使用ZooKeeper的 consumer 的信息(不是那些使用Java consumer API的消费者)

TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG        CONSUMER-ID
my-topic                       0          2               4               2          my-group_consumer-1
my-topic                       1          2               3               1          my-group_consumer-1
my-topic                       2          2               3               1          my-group_consumer-2

3.重置某个消费者进度

1)重置至earliest
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group DemoConsumer --topic topic1 --reset-offsets --to-earliest --execute

–execute 必须带,否则虽然打印的信息一致,但是实际没有替换offset

[root@EMS3 kafka_2.11-1.0.0]# bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group DemoConsumer --topic topic1 --reset-offsets --to-earliest  --execute
Note: This will not show information about old Zookeeper-based consumers.

TOPIC                          PARTITION  NEW-OFFSET
topic1                         0          0

假设某消费进度如下,已经消费2条消息,并且是队列尾

CURRENT-OFFSET LOG-END-OFFSET LAG
2 2 0

重置后结果:尚未消费,跳至消息队列头

CURRENT-OFFSET LOG-END-OFFSET LAG
0 2 2

2)重置至latest
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group DemoConsumer --topic topic1 --reset-offsets --to-latest --execute

[root@EMS3 kafka_2.11-1.0.0]# bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group DemoConsumer --topic topic1 --reset-offsets --to-latest  --execute
Note: This will not show information about old Zookeeper-based consumers.

TOPIC                          PARTITION  NEW-OFFSET
topic1                         0          2

假设某消费进度如下,尚未消费,并且消息队列已经有2个数据

CURRENT-OFFSET LOG-END-OFFSET LAG
0 2 2

重置后结果:消费2个数据,并且是消息队列尾

CURRENT-OFFSET LOG-END-OFFSET LAG
2 2 0

3)跳至指定的offset
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group DemoConsumer --topic topic1 --reset-offsets --to-offset 0 --execute

细节就不贴出来了,就是跳至指定位置

你可能感兴趣的:(kafka)