你如何从命令行获得默认的Kafka配置全局和每个主题?

kis*_*sna 16 apache-kafka

如何从命令行或其他方式获取默认的Kafka配置全局和每个主题?

我知道Broker Configs上可以使用默认值,你可以使用describe获得每个主题"覆盖",但是如果我对主题级别配置进行了很多更改,那么获取包括每个主题的覆盖的所有值都会很好.

$KAFKA_HOME/bin/kafka-topics.sh --zookeeper $ZK --describe --topic test-topic
$KAFKA_HOME/bin/kafka-configs.sh --zookeeper $ZK --describe --entity-name test-topic --entity-type topics
Run Code Online (Sandbox Code Playgroud)

仅供参考,我刚开始使用kafka v0.9.0.1.

显然,有一个讨论为什么这是不可能的,所以我想没有解决方案.

小智 12

从 Kafka 2.5.0(参见https://issues.apache.org/jira/browse/KAFKA-9040)开始,您现在可以使用该--all选项查看所有(默认和覆盖)主题配置:

% kafka-configs --bootstrap-server <KAFKA_SERVERS> --entity-type topics --entity-name <TOPIC_NAME> --describe --all
All configs for topic <TOPIC_NAME> are:
  compression.type=producer sensitive=false synonyms={}
  message.format.version=1.0-IV0 sensitive=false synonyms={}
  file.delete.delay.ms=60000 sensitive=false synonyms={}
  leader.replication.throttled.replicas= sensitive=false synonyms={}
  max.message.bytes=1000012 sensitive=false synonyms={}
  min.compaction.lag.ms=0 sensitive=false synonyms={}
  message.timestamp.type=CreateTime sensitive=false synonyms={}
  min.insync.replicas=1 sensitive=false synonyms={}
  segment.jitter.ms=0 sensitive=false synonyms={}
  preallocate=false sensitive=false synonyms={}
  index.interval.bytes=4096 sensitive=false synonyms={}
  min.cleanable.dirty.ratio=0.5 sensitive=false synonyms={}
  unclean.leader.election.enable=false sensitive=false synonyms={}
  retention.bytes=-1 sensitive=false synonyms={}
  delete.retention.ms=86400000 sensitive=false synonyms={}
  cleanup.policy=delete sensitive=false synonyms={}
  flush.ms=1000 sensitive=false synonyms={}
  follower.replication.throttled.replicas= sensitive=false synonyms={}
  segment.bytes=1073741824 sensitive=false synonyms={}
  retention.ms=172800000 sensitive=false synonyms={}
  segment.ms=604800000 sensitive=false synonyms={}
  message.timestamp.difference.max.ms=9223372036854775807 sensitive=false synonyms={}
  flush.messages=10000 sensitive=false synonyms={}
  segment.index.bytes=10485760 sensitive=false synonyms={}
Run Code Online (Sandbox Code Playgroud)

正如您在PR 中看到的,您也可以将此选项用于(至少)代理配置。

另请注意,当前CLI中存在此选项kafka-topics


小智 6

您可以使用此命令获取有关网络上存在的所有主题列表的信息。

bin/kafka-topics.sh --list --zookeeper localhost:2181
Run Code Online (Sandbox Code Playgroud)

对于每个主题,您可以通过以下方式获取信息:

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
Run Code Online (Sandbox Code Playgroud)

Kafka文档中

这是输出的说明。第一行给出了所有分区的摘要,每一行都给出了有关一个分区的信息。由于该主题只有一个分区,因此只有一行。

  • “领导者”是负责给定分区的所有读取和写入的节点。每个节点将成为分区的随机选择部分的领导者。
  • “副本”是为该分区复制日志的节点列表,无论它们是引导者还是当前处于活动状态。
  • “ isr”是“同步”副本的集合。这是副本列表的子集,当前仍处于活动状态并追随领导者。

  • 正如我提到的那样,我们知道仅全局设置,然后特定主题分别覆盖设置。我试图找到的是另一个简单的选项,可以按主题获取所有主题(带有主题替代),而不是我们手动弄清楚这一点,尤其是在存在许多替代的地方。 (3认同)

J. *_*rho 5

至少对于较新版本的Kafka,您还可以通过以下命令查询特定于主题的属性:

bin/kafka-configs.sh --describe --zookeeper localhost:2181 --entity-type topics --entity-name test
Run Code Online (Sandbox Code Playgroud)