首页/数据/数据工程与 ETL 速查/kcat(kafkacat)轻量命令行客户端
Kafka64 条

kcat(kafkacat)轻量命令行客户端

kcat 是 C 实现的轻量 Kafka 客户端:查看元数据、生产与消费消息、按分区或位移读取,适合服务器上快速验证与脚本化检查。

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 也能以消费组方式运行并提交位移,但它是面向人工排查的简单实现,不具备完整业务消费者的重平衡与提交控制能力,生产链路仍应使用官方客户端。

易错点

  • 把 kcat 的本地读取当作消费组消费,误以为位移已提交,实际什么都没有记录
  • 服务器上没有 kcat 就从公网临时下载二进制,来源不可控,存在供应链风险
  • 脚本里不设置 -c 条数上限,进程一直挂着消费,占满终端与连接
  • 用 -o beginning 全量导出大主题内容,输出量巨大且拖慢该分区的读取

数据来源与参考

  • kcat 官方项目文档(edenhill/kcat)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌