首页/数据/数据工程与 ETL 速查/kafka-configs.sh 动态配置管理
Kafka64 条

kafka-configs.sh 动态配置管理

kafka-configs.sh 管理主题、Broker、客户端配额等动态配置:describe 查看、alter 增加或覆盖、delete-config 恢复默认,多数配置生效无需重启。

这个工具管什么

kafka-configs.sh 管理集群里的动态配置:主题级配置、Broker 级配置、客户端配额以及用户与 IP 维度的限流。--describe 看当前值,--alter 增加或覆盖,--delete-config 删除覆盖项恢复默认值。多数动态配置在线生效,不需要重启进程。

动态与静态的区别

写在 server.properties 里的叫静态配置,改完要重启;通过本工具写入的叫动态配置,保存在内部主题中并在集群内生效。Broker 动态配置又分两级:指定具体 Broker 编号只影响该节点,用 entity-default 则影响所有未单独配置的节点。

基本信息

实体类型topics / brokers / clients / users / ips / broker-loggers
读--describe
写--alter --add-config k=v;--delete-config k
生效多数配置在线生效,无需重启
Broker 两级--entity-name <id> 单节点;--entity-default 集群默认

实体类型怎么用

实体类型作用对象典型配置
topics单个主题retention.ms、max.message.bytes、min.insync.replicas
brokers指定 Broker 或集群默认log.retention.hours、num.io.threads、message.max.bytes
clients客户端 ID 维度的配额producer_byte_rate、consumer_byte_rate
users / ips用户或来源 IP 维度的配额按主体或来源限制流量
broker-loggersBroker 日志级别临时打开某个组件的调试日志

典型使用场景

  • 延后清理:排查期间临时把主题保留时长调大,先把历史消息留住
  • 限流保护:为异常客户端 ID 设置生产或消费字节速率上限
  • 大消息支持:上调主题的单条消息大小上限,配合生产端与 Broker 参数
  • 配置审计:逐个主题 compare 覆盖配置是否符合命名与保留策略基线
  • 故障排查:临时调高某个组件日志级别,抓完现场再恢复,避免长期刷日志

主题与 Broker 配置管理

主题与 Broker 配置管理
# 查看主题的覆盖配置
kafka-configs.sh --bootstrap-server localhost:9092 \
  --entity-type topics --entity-name orders --describe

# 一次修改多项配置
kafka-configs.sh --bootstrap-server localhost:9092 \
  --entity-type topics --entity-name orders \
  --alter --add-config 'retention.ms=86400000,max.message.bytes=2097152'

# 查看指定 Broker 的动态配置(0 号节点)
kafka-configs.sh --bootstrap-server localhost:9092 \
  --entity-type brokers --entity-name 0 --describe

# 客户端配额:限制某个客户端 ID 的生产速率
kafka-configs.sh --bootstrap-server localhost:9092 \
  --entity-type clients --entity-name order-producer \
  --alter --add-config 'producer_byte_rate=10485760'
删除动态配置是「恢复集群默认值」,不是禁用该功能:删除前先确认默认值符合预期,否则可能一次性影响大量主题的保留时长或大小上限。
把密码类配置直接写在命令行会进入 shell 历史与进程列表,涉及凭据的配置应通过安全通道写入,或改用配置文件并限制文件权限。

易错点

  • 把密码明文写在命令行参数里,凭据进入 shell 历史与进程列表,需要轮换凭据才能彻底消除
  • 误以为 --delete-config 是禁用功能,实际是恢复集群默认值,可能让保留时长等配置一次跳到意外取值
  • 对 Broker 使用 entity-default 改默认值,影响所有未单独配置的节点,变更前应先在单节点验证
  • 依赖集群默认值而不给关键主题显式配置,环境之间出现差异时没有任何可对照的基线

数据来源与参考

  • Apache Kafka 官方文档:Dynamic Broker Configs 与 kafka-configs.sh
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌