【发布时间】:2017-09-14 09:08:45
【问题描述】:
对于指标,我们需要查看所有分区和代理中 Kafka 主题的总大小(以字节为单位)。
我一直在寻找如何做到这一点,但我还没有弄清楚这是否可能以及如何做到这一点。
我们正在使用 Kafka V0.82。
【问题讨论】:
标签: apache-kafka
对于指标,我们需要查看所有分区和代理中 Kafka 主题的总大小(以字节为单位)。
我一直在寻找如何做到这一点,但我还没有弄清楚这是否可能以及如何做到这一点。
我们正在使用 Kafka V0.82。
【问题讨论】:
标签: apache-kafka
对于希望以可读格式输出和所有主题列表的人,这里是:
bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list \
| xargs -I{} sh -c \
"echo -n '{} -> ' && bin/kafka-log-dirs.sh --bootstrap-server 127.0.0.1:9092 --topic-list {} --describe | grep '^{' | jq '[ ..|.size? | numbers ] | add' | numfmt --to iec --format '%8.4f'" \
| tee /tmp/topics-by-size.list
这将:
List all topics in Kafka
Pass through `xargs` that will execute a command per topic
Get all logs sizes per topic
sum each of the logs
pass through `numfmt` to make it human readable
save to a file while printing to stdout
我希望这对需要复制和粘贴命令的人有所帮助。
【讨论】:
如果您在 docker 容器 (wurstmeister/kafka) 中运行 kafka 并且您正在获取
Error: JMX connector server communication error: service:jmx:rmi ...
sun.management.AgentConfigurationError: java.rmi.server.ExportException: Port already in use: 6099; nested exception is:
java.net.BindException: Address in use (Bind failed)
您需要在运行 shell 脚本之前取消设置 JMX_PORT。
(unset JMX_PORT; ./kafka-log-dirs.sh \
--bootstrap-server 127.0.0.1:9092 --topic-list test --describe)
【讨论】:
可以使用脚本/bin/kafka-log-dirs.sh查看分区大小
/bin/kafka-log-dirs.sh --describe --bootstrap-server <KafakBrokerHost>:<KafakBrokerPort> --topic-list <YourTopic>
【讨论】:
用正则表达式和 awk 做同样事情的另一种方法(如果你没有安装 jq)是:
$ bin/kafka-log-dirs.sh \
--bootstrap-server 127.0.0.1:9092 \
--topic-list test \
--describe \
| grep -oP '(?<=size":)\d+' \
| awk '{ sum += $1 } END { print sum }'
这将返回主题test 的大小(以字节为单位),包括其复制。如果您的复制因子大于 1,并且您想要唯一主题消息的大小,请将获得的值除以复制因子。
【讨论】:
正如 Martbob 非常有帮助地提到的,您可以使用 kafka-log-dirs 来做到这一点。这会产生 JSON 输出(在其中一行上)。所以我可以使用非常有用的jq 工具来提取“大小”字段(有些是空的),只选择那些是数字的,将它们分组到一个数组中,然后将它们加在一起。
kafka-log-dirs \
--bootstrap-server 127.0.0.1:9092 \
--topic-list 'topic_of_interest' \
--describe \
| grep '^{' \
| jq '[ ..|.size? | numbers ] | add'
示例输出:67704
我还没有验证输出是否有意义,所以你应该自己检查一下。
【讨论】:
也许这需要一些额外的工作来安装和配置,但 KafkaHQ 以消息和字节的形式提供了有关主题和分区大小的信息。这里链接到:KafkaHQ
这仍然是我找到的获取该信息的最简单的选择。
【讨论】: