kafka 3.7脚本工具最全整理汇总【建议收藏】

前言

脚本列表

Kafka 脚本工具是 Apache Kafka 提供的一系列命令行工具,用于管理、监控和操作 Kafka 集群。这些工具位于 Kafka 安装目录的 bin 目录下(Windows 系统为 .bat 文件,Linux/Mac 为 .sh 文件)。以下是一些核心脚本工具的详细介绍

bin/kafka-acls.sh
bin/kafka-broker-api-versions.sh ✅
bin/kafka-client-metrics.sh
bin/kafka-cluster.sh
bin/kafka-configs.sh ✅
bin/kafka-console-consumer.sh ✅
bin/kafka-console-producer.sh ✅
bin/kafka-consumer-groups.sh ✅
bin/kafka-consumer-perf-test.sh ✅
bin/kafka-delegation-tokens.sh
bin/kafka-delete-records.sh ✅
bin/kafka-dump-log.sh ✅
bin/kafka-e2e-latency.sh
bin/kafka-features.sh
bin/kafka-get-offsets.sh
bin/kafka-jmx.sh
bin/kafka-leader-election.sh
bin/kafka-log-dirs.sh ✅
bin/kafka-metadata-quorum.sh ✅
bin/kafka-metadata-shell.sh ✅
bin/kafka-mirror-maker.sh ✅
bin/kafka-producer-perf-test.sh ✅
bin/kafka-reassign-partitions.sh ✅
bin/kafka-replica-verification.sh
bin/kafka-run-class.sh ✅
bin/kafka-server-start.sh ✅
bin/kafka-server-stop.sh ✅
bin/kafka-storage.sh ✅
bin/kafka-streams-application-reset.sh
bin/kafka-topics.sh ✅
bin/kafka-transactions.sh
bin/kafka-verifiable-consumer.sh
bin/kafka-verifiable-producer.sh

脚本简介

kafka-broker-api-versions.sh

kafka-broker-api-versions.sh 是 Kafka 自带的一个重要脚本工具,用于查询 Kafka Broker 支持的 API 版本信息。这在客户端与 Broker 版本不一致或排查兼容性问题时非常有用。

  1. 基本功能
  • 查询 Broker 支持的 API 版本:每个 Kafka API(如 Produce、Fetch、Metadata 等)都有版本号,不同版本的 Kafka 支持的 API 版本范围不同。
  • 验证客户端与 Broker 的兼容性:确保客户端使用的 API 版本在 Broker 支持的范围内,避免因版本不兼容导致的错误。

在这里插入图片描述
我们以第一行为例:Produce(0): 0 to 10 [usable: 10],
“Produce”表示 Produce 请求,生产者生产消息本质上就是向 Broker 端发送 Produce 请求。该请求是 Kafka 所有请求类型中的第一号请求,因此序号是 0。后面的“0 to 10”表示 Produce 请求在 Kafka 3.7.0 中总共有 10 个版本,序号分别是 0 到 10。“usable:10”表示当前连入这个 Broker 的客户端 API 能够使用的版本号是 10,即最新的版本。

这个脚本还有一个特殊用途可以协助排查Broker节点服务启动状态:
在这里插入图片描述

./bin/kafka-broker-api-versions.sh -bootstrap-server 192.168.37.10:9092 2>/dev/null |egrep ‘^([0-9]{1,3}.){3}[0-9]{1,3}’

kafka-console-producer.sh 和 kafka-console-consumer.sh

生产消息使用 kafka-console-producer 脚本
快速地消费主题中的数据来验证消息是否存在,运行 kafka-console-consumer 脚本

占位! 后续单独详细讲解。。。

kafka-producer-perf-test.sh 和 kafka-consumer-perf-test.sh

生产者和消费者的性能测试工具,非常实用

占位! 后续单独详细讲解。。。

kafka-configs.sh

用于查看、修改和管理 Kafka 集群的配置参数。这些参数可以应用于主题(Topics)、broker 节点、用户或客户端 ID 等实体。

占位! 后续单独详细讲解。。。

kafka-dump-log.sh

kafka-dump-log.sh 是 Kafka 自带的一个工具,用于解析和查看 Kafka 日志文件(.log、.index、.timeindex 等)的内容。它在排查消息丢失、位移异常、消息格式问题时非常有用。

占位! 后续单独详细讲解。。。

kafka-server-start.sh 和 kafka-server-stop.sh

kafka-server-start.sh 和 kafka-server-stop.sh 是 Kafka 集群的核心启动和停止脚本,用于管理 Kafka Broker 进程。

kafka-consumer-groups.sh

用于管理和监控消费者组(Consumer Groups)。消费者组是 Kafka 实现消息广播和负载均衡的核心机制,该工具可帮助你查看消费进度、重置偏移量、诊断消费滞后等问题。

占位! 后续单独详细讲解。。。

kafka-topics.sh

用于管理主题(Topics)。主题是 Kafka 中消息的逻辑分类,通过该工具可以创建、查看、修改和删除主题,配置分区数、副本因子等关键参数。

占位! 后续单独详细讲解。。。

kafka-log-dirs.sh

用于管理和查询 Broker 的日志目录(Log Directories)信息。这些日志目录存储了 Kafka 主题的实际消息数据。通过该工具,你可以查看日志目录使用情况、迁移分区数据,以及验证磁盘空间分配。

占位! 后续单独详细讲解。。。

kafka-reassign-partitions.sh

脚本用于执行分区副本迁移以及副本文件路径迁移。

占位! 后续单独详细讲解。。。

kafka-delete-records.sh

用于有选择性地删除主题分区中的消息。与基于时间或大小的自动清理策略不同,该工具允许你精确控制删除范围,例如按偏移量删除特定消息段。
鉴于 Kafka 本身有自己的自动消息删除策略,这个脚本的实际出场率并不高。

kafka-mirror-maker.sh

用于在不同 Kafka 集群之间复制消息,实现数据同步、灾备、多数据中心部署等场景。

占位! 后续单独详细讲解。。。

kafka-metadata-quorum.sh

Kafka 3.3+ 版本引入的工具,专门用于管理和查询 KRaft 模式(Kafka Raft Metadata)下的元数据仲裁(Quorum)信息。

./bin/kafka-metadata-quorum.sh --bootstrap-server 192.168.37.10:9092 describe --replication

[root@test-10 kafka_2.13-3.7.0]# ./bin/kafka-metadata-quorum.sh --bootstrap-server  192.168.37.10:9092 describe --replication
NodeId	LogEndOffset	Lag	LastFetchTimestamp	LastCaughtUpTimestamp	Status	
1     	18753       	0  	1752821699295     	1752821699295        	Leader	

./bin/kafka-metadata-quorum.sh --bootstrap-server 192.168.37.10:9092 describe --status

[root@test-10 kafka_2.13-3.7.0]# ./bin/kafka-metadata-quorum.sh --bootstrap-server  192.168.37.10:9092 describe --status
ClusterId:              BJODTrqBTbCBnwSG2VszJg
LeaderId:               1
LeaderEpoch:            4
HighWatermark:          18853
MaxFollowerLag:         0
MaxFollowerLagTimeMs:   0
CurrentVoters:          [1]
CurrentObservers:       []

kafka-metadata-shell.sh

用于交互式检查集群元数据分区的状态。

./bin/kafka-metadata-shell.sh --snapshot
data/__cluster_metadata-0/00000000000000015163-0000000004.checkpoint

Unexpected error: Unable to lock /data/middleware/kafka_2.13-3.7.0/data. Please ensure that no broker or controller process is using this directory before proceeding.

解决报错,需要先停止kafka 服务
命令执行成功后,可以交互式查询元数据信息。
正如您所看到的,我们已经进入了一个 shell 环境。您可以通过运行 help 命令来查看可用的命令
在这里插入图片描述
./bin/kafka-metadata-shell.sh --snapshot data/__cluster_metadata-0/00000000000000015163-0000000004.checkpoint ls image/topics/byName
在这里插入图片描述

kafka-run-class.sh

用这个脚本执行任何带 main 方法的 Kafka 类。在 Kafka 早期的发展阶段,很多工具类都没有自己专属的 SHELL 脚本,比如刚才提到的 kafka-dump-log,你只能通过运行 kafka-run-class kafka.tools.DumpLogSegments 的方式来间接实现。如果你用文本编辑器打开 kafka-dump-log.sh,你会发现它实际上调用的就是这条命令。后来社区逐渐为这些重要的工具类都添加了专属的命令行脚本,现在 kafka-run-class 脚本的出场率大大降低了。

kafka-storage.sh

kafka-storage.sh 是 Kafka 3.0 及以上版本引入的核心工具,用于管理 Kafka 的存储层,该工具负责初始化存储目录。

初始化存储目录(KRaft 模式)

# 生成 UUID 并初始化存储目录
./kafka-storage.sh random-uuid
# 输出示例:gqJ4Y9o0R7aQeVpXtZkFjw

# 使用生成的 UUID 初始化存储
./kafka-storage.sh format \
  -t gqJ4Y9o0R7aQeVpXtZkFjw \  # 替换为实际 UUID
  -c config/kraft/server.properties

参考案例: kafka 单机部署指南(KRaft 版本)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值