这个工具管什么
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-loggers | Broker 日志级别 | 临时打开某个组件的调试日志 |
典型使用场景
- 延后清理:排查期间临时把主题保留时长调大,先把历史消息留住
- 限流保护:为异常客户端 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 历史与进程列表,涉及凭据的配置应通过安全通道写入,或改用配置文件并限制文件权限。