如何使用kafka命令行获取给定kafka主题的所有分区的日志结束偏移量?

时间:2019-05-20 09:44:04

标签: apache-kafka

当我描述kafka主题时,它不显示任何分区的日志结束偏移量,而是显示所有其他元数据,例如ISR,Replicas,Leader。

如何查看给定主题的分区的日志结束偏移量?

运行此命令:./kafka-topics.sh --zookeeper zk-service:2181 --describe --topic“ __consumer_offsets”

输出没有偏移列。

注意:仅需要日志结束偏移量。

3 个答案:

答案 0 :(得分:1)

以下是您需要获取给定消费者组 的给定kafka主题的所有分区的偏移量的命令:

kafka-consumer-groups --bootstrap-server <kafka-broker-list-with-ports> --describe --group <consumer-group-name>

请注意,结尾处的<consumer-group-name>很重要,因为偏移量是由通常属于某个消费群体的消费者实施的。

此命令的输出可能类似于:

TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID <topic-name> 0 62 62 0 <consumer-id> <host> <client>

但是,在您的帖子中,您试图获取有关内部主题__consumer_offsets的信息,因此您将需要一个消费者组,该消费者组将从这个内部主题中进行消费。您也许可以执行以下操作:

  1. kafka-console-consumer --bootstrap-server <kafka-broker-list-with-ports> --topic __consumer_offsets --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter" --max-messages 5

以上命令的输出:

[<consumer-group-name>,<topic-name>,0]::[OffsetMetadata[481690879,NO_METADATA],CommitTime 1479708539051,ExpirationTime 1480313339051]

  1. 只需使用输出中的<consumer-group-name>并将其放在开头提到的kafka-consumer-groups命令中,您将获得给定使用者组的所有50个分区的偏移量详细信息

我希望这会有所帮助。

答案 1 :(得分:0)

由于您只需要查找主题的日志结尾偏移量,因此可以将kafka-run-classkafka.tools.GetOffsetShell类一起使用。

假设您的主题是__consumer_offsets,则可以通过运行以下命令获得结束偏移:

./kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --time -1 --topic __consumer_offsets

--broker-list localhost:9092更改为所需的Kafka地址。这将列出该主题中每个分区的所有日志结束偏移量。

答案 2 :(得分:0)

安装kafkacat,它是一个易于使用的kafka工具:

    sudo apt-get update
    sudo apt-get install kafkacat

    kafkacat -C -b <kafka-broker-ip-and-port> -t <topic> -o -1

这不会消耗任何东西,因为添加消息后偏移量会增加。但是它将为您提供所有分区的偏移量。但是请注意,这不是您正在消耗的当前偏移量...上述答案将有助于您更多地了解分区滞后。