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

时间:2016-03-14 20:11:30

标签: apache-kafka

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

我知道默认值在Broker Configs上可用,您可以按主题获取#34;覆盖"使用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

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

显然,有一个discussion about why this is not possible,所以我猜没有解决方案。

3 个答案:

答案 0 :(得分:7)

自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={}

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

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

答案 1 :(得分:4)

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

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

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

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test

来自Kafka documentation

  

以下是输出的说明。第一行给出了摘要   所有分区,每个附加行提供有关一个的信息   划分。由于我们只有一个分区用于此主题   只有一行。

     
      
  • &#34;前导&#34;是负责给定分区的所有读写的节点。每个节点将成为随机选择的领导者   部分分区。
  •   
  • &#34;复制品&#34;是复制此分区日志的节点列表,无论它们是否为领导者,或者即使它们也是如此   目前还活着。
  •   
  • &#34; ISR&#34;是&#34;同步&#34;副本。这是副本列表的子集,该列表当前处于活跃状态并且已经被领导者抓住。
  •   

答案 2 :(得分:3)

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

bin/kafka-configs.sh --describe --zookeeper localhost:2181 --entity-type topics --entity-name test