按目录查看磁盘占用
kafka-log-dirs.sh --describe 按「broker → 日志目录 → 分区」的层级输出每个分区占用的字节数和 offsetLag,是磁盘类问题的第一手数据:哪块盘快满、哪个分区异常偏大、迁移目标还有多少余量,都能从这里看出来。输出是 JSON,适合配合 jq 或脚本做聚合与排序。
基本信息
| 输出层级 | broker → logDir → 分区大小与 offsetLag |
|---|---|
| 过滤参数 | --topic-list 限定主题,--broker-list 限定节点 |
| 主要用途 | 找大主题大分区、确认迁移目标余量 |
| 配套观察 | 操作系统侧 du/df 一起看,Kafka 只统计日志段 |
典型使用场景
- 磁盘告警时定位:先确认是哪块盘、哪个主题在增长
- 负载均衡:多盘部署下检查分区是否集中在单块盘
- 迁移前评估:确认目标 broker 剩余空间是否够接收分区
- 大分区排查:找出异常偏大的分区,评估拆分或独立主题
- 扩容决策:按主题总量趋势判断何时需要加盘加节点
查看目录占用与排序
查看目录占用与排序
# 查看全部日志目录(输出为 JSON,可直接喂给脚本)
kafka-log-dirs.sh --bootstrap-server localhost:9092 --describe | head
# 只看某个主题与某个 broker,缩小输出范围
kafka-log-dirs.sh --bootstrap-server localhost:9092 --describe \
--topic-list orders --broker-list 1
# 按大小排序找出最大的 5 个分区(需要 jq)
kafka-log-dirs.sh --bootstrap-server localhost:9092 --describe \
| jq -r '.brokers[].logDirs[].partitions[] | [.partition, .size] | @tsv' \
| sort -k2 -n | tail -5输出字段读法
| 字段 | 含义 | 异常表现 |
|---|---|---|
| broker | broker 编号 | 某节点分区总量明显偏多即为不均衡 |
| logDir | 日志目录路径 | 多盘部署时需要逐个目录核对 |
| partition | 分区名,如 orders-0 | 个别分区特别大说明 key 分布倾斜 |
| size | 该分区占用字节数 | 增长过快需评估保留策略 |
| offsetLag | 该副本落后的位移 | 非 0 说明副本没跟上,可与 ISR 指标互相印证 |
配合操作系统层面的 du/df 一起看:Kafka 统计的是日志段大小,磁盘上还包含索引文件、其他数据目录与系统占用,两者数值不一致是正常的。
多日志目录配置下分区落到哪块盘由分配策略决定,可能集中在某一块;只监控整机磁盘使用率会漏掉单盘打满、broker 拒绝写入的情况。