kcat 的定位
kcat(原名 kafkacat)是 C 语言实现的轻量 Kafka 命令行客户端,不依赖 JVM,启动快、体积小。它既能查看集群元数据,也能生产和消费消息,支持自定义输出模板与 JSON 输出,非常适合在只装了 shell 的跳板机上做连通性验证与脚本化检查。
基本信息
| 定位 | 非 JVM 命令行客户端,启动快 |
|---|---|
| 常用参数 | -L 元数据、-P 生产、-C 消费、-o 起始位移 |
| 格式化 | -f 自定义输出模板,-J 以 JSON 输出 |
| 安装来源 | 发行版软件源或内网源,避免从公网随意下载二进制 |
典型使用场景
- 连通性验证:确认网络、认证与主题是否可达
- 快速抽样:读取主题前 N 条或最近 N 条消息,核对消息格式
- 消息注入:往测试主题写一条消息,验证下游链路是否接得住
- 脚本化巡检:用 -J 输出 JSON 交给监控系统解析
- 分区核对:-L 输出集群元数据,排查分区与副本分布
常用操作
常用操作
kcat -L -b localhost:9092 # 查看集群、主题与分区元数据
kcat -b localhost:9092 -t orders -C -o beginning -c 5 # 消费前 5 条后自动退出
echo 'hello' | kcat -b localhost:9092 -t orders -P # 生产一条消息
kcat -b localhost:9092 -t orders -C -o -100 -e # 消费最近 100 条
kcat -b localhost:9092 -t orders -C -f '%p %o %s\n' -c 3 # 打印分区、位移与消息内容常用参数读法
| 参数 | 含义 | 注意点 |
|---|---|---|
| -L | 列出元数据 | 不消费数据,只读集群信息 |
| -C | 进入消费模式 | 需要配合 -t 指定主题 |
| -P | 进入生产模式 | 从标准输入读取消息 |
| -o | 起始位移 | 支持 beginning/end 或负数偏移 |
| -c | 消费条数上限 | 不指定会一直消费,脚本里必须设置 |
在只装了 shell 的跳板机上排查连通性时,kcat 比拉起一整套 JVM 工具链快得多,也不挑 JDK 版本,是临时排查的顺手工具。
用 kcat 不带 -G 参数消费不会加入消费组、也不提交位移,它只是本地读取;不要把它等同于业务消费者,更不要用它判断位移状态。
带 -G 参数时 kcat 也能以消费组方式运行并提交位移,但它是面向人工排查的简单实现,不具备完整业务消费者的重平衡与提交控制能力,生产链路仍应使用官方客户端。