查看以字节为单位的Kafka主题的大小

Nat*_*ish 7 apache-kafka

对于度量标准,我们需要在所有分区和代理中查看Kafka主题的总大小(以字节为单位).

我一直在寻找关于如何做到这一点的一段时间,如果可能的话,我还没有解决,如何做到这一点.

我们在Kafka的V0.82.

小智 12

您可以使用脚本/bin/kafka-log-dirs.sh查看分区大小

/bin/kafka-log-dirs.sh --describe --bootstrap-server: - topic-list

  • 'kafka-log-dirs --describe --bootstrap-server kafka:9092' 将返回所有主题/分区的状态,'--topic-list' 将缩小该列表的范围。 (3认同)
  • 我很确定 kafka-log-dirs.sh 不适用于 0.82。 (3认同)

Mic*_*ael 7

使用正则表达式和 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 }'
Run Code Online (Sandbox Code Playgroud)

这将返回主题的大小(以字节为单位),test包括其复制。如果您的复制因子大于 1 并且您想要唯一主题消息的大小,请将获得的值除以复制因子。


Cam*_*err 6

正如Martbob很有帮助的提到的那样,您可以使用kafka-log-dirs进行此操作。我正在使用Confluent Platform 4.1.1开源版,至少对我来说,这会生成JSON输出(在其中一行中)。因此,我可以使用非常有用的jq工具提取“大小”字段(有些为空),仅选择数字,将它们分组为一个数组,然后将它们加在一起。

kafka-log-dirs \
    --bootstrap-server 127.0.0.1:9092 \
    --topic-list 'topic_of_interest' \
    --describe \
  | grep '^{' \
  | jq '[ ..|.size? | numbers ] | add'
Run Code Online (Sandbox Code Playgroud)

输出示例:67704

我尚未验证输出是否有意义,因此您应该自己检查一下。

  • 正如 @Michael 指出的 /sf/answers/4487192671/,请注意复制因子并将该数字除以它。 (2认同)