什么命令显示 Kafka 中分区的所有主题和偏移量?

Posted

技术标签:

【中文标题】什么命令显示 Kafka 中分区的所有主题和偏移量?【英文标题】:What command shows all of the topics and offsets of partitions in Kafka? 【发布时间】:2015-09-12 17:38:11 【问题描述】:

我正在寻找一个显示所有主题和分区偏移量的 Kafka 命令。如果它是动态的将是完美的。目前我正在使用java代码查看这些信息,但是很不方便。

【问题讨论】:

如果您有执行此操作的 Java 代码,您能回答我的 this question 吗? 【参考方案1】:

Kafka 附带了一些可用于完成此任务的工具。

列出主题:

# ./bin/kafka-topics.sh --list --zookeeper localhost:2181
test_topic_1
test_topic_2
...

列出分区和偏移量:

# ./bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --broker-info --group test_group --topic test_topic --zookeeper localhost:2181
Group           Topic                  Pid Offset          logSize         Lag             Owner
test_group      test_topic             0   698020          698021          1              test_group-0
test_group      test_topic             1   235699          235699          0               test_group-1
test_group      test_topic             2   117189          117189          0               test_group-2

0.9(及更高版本)消费者 API 的更新

如果您使用的是new apis,您可以使用一个新工具:kafka-consumer-groups.sh

./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group count_errors --describe
GROUP                          TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             OWNER
count_errors                   logs                           2          2908278         2908278         0               consumer-1_/10.8.0.55
count_errors                   logs                           3          2907501         2907501         0               consumer-1_/10.8.0.43
count_errors                   logs                           4          2907541         2907541         0               consumer-1_/10.8.0.177
count_errors                   logs                           1          2907499         2907499         0               consumer-1_/10.8.0.115
count_errors                   logs                           0          2907469         2907469         0               consumer-1_/10.8.0.126

【讨论】:

感谢 chrsblck,如果我只想查看每个分区的最大(最新)偏移量,无论哪个 comsumerGroup,我应该如何发出命令。 @chrsblck:-> 如果我从窗口命令提示符触发相同的查询,它会通过错误。命令:--> bin\windows\kafka-run-class.bat kafka.tools.ConsumerOffsetChecker --broker-info --topic test --zookeeper localhost:2181。错误:--> 无法找到或加载主类 kafka.tools.ConsumerOffsetChecker "bash: ./bin/kafka-consumer-groups.sh: No such file or directory" 根本不起作用 我如何在 Windows 上做到这一点?【参考方案2】:

您可能想试试kt。它也比捆绑的kafka-topics 快很多。

这是您可以使用 kt 从主题中获得的当前最完整的信息描述:

kt topic -brokers localhost:9092 -filter my_topic_name -partitions -leaders -replicas

它还输出为 JSON,因此您可以将其通过管道传输到 jq 以获得更大的灵活性。

【讨论】:

我不确定你的意思。评论中提供的链接(你可以点击“kt”)有一个非常全面的自述文件。有安装说明和许多示例。如果这不能回答您的问题,您能否澄清一下您的意思?【参考方案3】:

如果有人有兴趣,您可以使用以下命令获取所有消费者组的偏移量信息:

kafka-consumer-groups --bootstrap-server localhost:9092 --all-groups --describe

参数 --all-groups 是来自 Kafka 2.4.0 的available

【讨论】:

它适用于香草卡夫卡吗?你用的是什么版本的 Kafka? 谢谢。 Kafka 2.1.* 不知道这个选项。看起来像是新功能 - 您可以在帖子中提及您的 Kafka 版本 感谢@AlexK 的建议,我已经编辑了答案,添加了参数可用的正确版本。【参考方案4】:

我们正在使用 Kafka 2.11 并使用此工具 - kafka-consumer-groups

$ rpm -qf /bin/kafka-consumer-groups
confluent-kafka-2.11-1.1.1-1.noarch

例如:

$ kafka-consumer-groups --describe --group logstash | grep -E "TOPIC|filebeat"
Note: This will not show information about old Zookeeper-based consumers.
TOPIC            PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                     HOST             CLIENT-ID
beats_filebeat   0          20003914484     20003914888     404             logstash-0-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /192.168.1.1   logstash-0
beats_filebeat   1          19992522286     19992522709     423             logstash-0-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /192.168.1.1   logstash-0
beats_filebeat   2          19990597254     19990597637     383             logstash-0-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /192.168.1.1   logstash-0
beats_filebeat   7          19991718707     19991719268     561             logstash-0-YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY /192.168.1.2   logstash-0
beats_filebeat   8          20015611981     20015612509     528             logstash-0-YYYYYYYY-YYYY-YYYY-YYYY-YYYYYYYYYYYY /192.168.1.2   logstash-0
beats_filebeat   5          19990536340     19990541331     4991            logstash-0-ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ /192.168.1.3   logstash-0
beats_filebeat   6          19990728038     19990733086     5048            logstash-0-ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ /192.168.1.3   logstash-0
beats_filebeat   3          19994613945     19994616297     2352            logstash-0-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA /192.168.1.4   logstash-0
beats_filebeat   4          19990681602     19990684038     2436            logstash-0-AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA /192.168.1.4   logstash-0

随机提示

注意:我们使用重载kafka-consumer-groups 的别名,就像在我们的/etc/profile.d/kafka.sh 中一样:

alias kafka-consumer-groups="KAFKA_JVM_PERFORMANCE_OPTS=\"-Djava.security.auth.login.config=$HOME/.kafka_client_jaas.conf\"  kafka-consumer-groups --bootstrap-server $KAFKA_HOSTS --command-config /etc/kafka/security-enabler.properties"

【讨论】:

以上是关于什么命令显示 Kafka 中分区的所有主题和偏移量?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 kafka 主题分区的最后/结束偏移量?

如何获取 kafka 主题分区的最新偏移量?

kafka总结

获取主题和分区偏移量

Kafka消费者偏移量

kafka-python KafkaConsumer 多分区提交偏移量