列出主题有什么用
kafka-topics.sh --list 返回集群中的主题清单,是环境盘点与巡检的基础动作:上线前核对新主题是否已创建、迁移后核对主题是否齐全、日常巡检比对是否存在意外的主题增删。默认输出会包含 __consumer_offsets 这类内部主题,脚本判断前应先排除。
怎么用才靠谱
把输出排序后与一份基线清单做差集,是发现异常最有效的方式:多出来的主题可能是有人手工建的测试主题,缺失的主题则会让依赖它的任务直接失败。自动化脚本同时要注意,大规模集群上拉取全量元数据本身有开销,巡检频率不宜过高。
基本信息
| 用途 | 列出集群中的全部主题 |
|---|---|
| 常用参数 | --list、--exclude-internal |
| 输出处理 | 排序后与基线清单做 diff |
| 自动化建议 | 结合前缀过滤,只关注自己负责的业务域 |
| 性能提示 | 主题数上千时拉取全量元数据有开销,控制巡检频率 |
参数与输出读法
| 项目 | 含义 | 注意 |
|---|---|---|
| --list | 输出全部主题名,每行一个 | 包含内部主题,脚本判定前先排除 |
| --exclude-internal | 排除内部主题 | 巡检与对比场景建议始终加上 |
| 输出顺序 | 不做保证 | 比对前先排序,否则 diff 全是噪音 |
| grep 前缀过滤 | 只看某业务域的主题 | 命名规范统一时非常好用 |
典型使用场景
- 上线核对:确认新增主题已创建,避免生产端写入失败
- 迁移前后对比:确认主题集合没有遗漏或多出
- 配置巡检:列出某业务域的主题,再逐个检查保留与副本配置
- 清理未使用主题:结合消费组与生产端信息,识别长期无流量的主题
- 权限与命名审计:发现不符合命名规范或不该存在的主题
列出主题
列出主题
# 列出全部主题(包含内部主题)
kafka-topics.sh --bootstrap-server localhost:9092 --list
# 排除内部主题,输出更干净
kafka-topics.sh --bootstrap-server localhost:9092 --list --exclude-internal
# 只列某个业务域的主题
kafka-topics.sh --bootstrap-server localhost:9092 --list --exclude-internal | grep '^prod\.order'
# 与基线清单对比,输出差异(排序后 diff,避免顺序噪音)
kafka-topics.sh --bootstrap-server localhost:9092 --list --exclude-internal | sort > /tmp/now.txt
diff /tmp/baseline.txt /tmp/now.txt输出顺序不做保证:同一集群多次执行可能得到不同顺序,做比对前务必先排序,否则 diff 结果里全是顺序差异,看不出真正的问题。
默认输出包含 __consumer_offsets 等内部主题:脚本把它们当成新主题上报,会造成持续的误报,排除内部主题应作为巡检脚本的默认设置。