kafka 命令封装脚本

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
#!/bin/bash
#kafka集群地址: ip/主机名:9092
KAFKA_CLUSTER=10.10.2.234:9092
#kafka bin目录
KAFKA_HOME_BIN=/opt/kafka_2.12-2.2.2/bin
#分区数量
PARTITIONS=5
#副本数量
REPLICATIONFACTOR=2
#脚本路径
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

#参数判断不能小于1
if [ $# -lt 1 ]; then
  echo -e "\033[31mAt least two parameters \033[0mare required"
  sh /${SCRIPT_DIR}/kafka --help
  exit
fi
#打印传入的参数
#echo "============Args: $1 $2 ================="


#输入错误参数,报错且返回--help内容
errorFun(){
    echo -e "\033[31mInput Args Error!!!!\033[0m"
    sh /${SCRIPT_DIR}/kafka --help
}


case $1 in
#脚本用法--help
--help)
    echo " Usage: kafka [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
	     
        OPTIONS is none or any of:
          -l or list        <-t> <-g>                                        list all topics/groups
	  -c or create      <topicName> [partitions] [replication-factor]    create default topic or custom topic
          -d or desc        [-t <topicName>] [-g <groupName>]                describe all topics/topic/group
          -del or delete    <-t <topicName>> <-g <groupName>>                delete topic/group
          -p or producer    <topicName>                                      producer data to topic  
          -con or consumer  -e==earliest -l==latest <topicName> <groupName>  consumer data from earliest or latest
          -r or reset       <topicName> <groupName> <to-offset>              reset all partitions offset to earliest,reset all partitions 
                            <topicName:partitionNum> <groupName> <to-offset> offset to optional position,reset one of partitions offset to 
                                                                             optional position
         "
    exit 0
    ;;
	
#创建topic
create|-c)
  if [ $# -eq 2 ]; then
    ${KAFKA_HOME_BIN}/kafka-topics.sh --create --topic "$2" \
    --bootstrap-server ${KAFKA_CLUSTER} \
    --partitions ${PARTITIONS} \
    --replication-factor ${REPLICATIONFACTOR}
  elif [ $# -eq 4 ]; then
    if [ ! -n "$(echo $3| sed -n "/^[0-9]\+$/p")" ]||[ ! -n "$(echo $4| sed -n "/^[0-9]\+$/p")" ];then
      errorFun
    else
      ${KAFKA_HOME_BIN}/kafka-topics.sh --create --topic "$2" \
      --bootstrap-server ${KAFKA_CLUSTER} \
      --partitions "$3" \
      --replication-factor "$4"
    fi
  #if [ $# != 2 ]&&[ $# != 4 ];then
  else
    errorFun
  fi
  ;;
  
#列出当前kafka中的topic和消费组
list|-l)
  if [ $# -eq 2 ]; then
    if [ "$2" == "-t" ];then
      ${KAFKA_HOME_BIN}/kafka-topics.sh --list \
      --bootstrap-server ${KAFKA_CLUSTER}
    elif [ "$2" == "-g" ];then
      ${KAFKA_HOME_BIN}/kafka-consumer-groups.sh --list \
       --bootstrap-server ${KAFKA_CLUSTER}  
    else
      errorFun 
    fi
  else
  #if [ $# != 2 ]&&[ "$2" != "-t" ]&&[ "$2" != "-g" ]; then
    echo -e "At least \033[31mtwo parameters \033[0mare required"
    sh /${SCRIPT_DIR}/kafka --help
  fi
  ;;
  
#查询所有topic详情或者单个topic的详情
desc|-d)
  if [ $# -eq 1 ]; then
    ${KAFKA_HOME_BIN}/kafka-topics.sh --describe \
    --bootstrap-server ${KAFKA_CLUSTER}
  elif [ $# -eq 3 ]; then
    if [ "$2" == "-t" ];then
      ${KAFKA_HOME_BIN}/kafka-topics.sh --describe \
      --bootstrap-server ${KAFKA_CLUSTER} \
      --topic "$3"
    elif [ "$2" == "-g" ];then
      ${KAFKA_HOME_BIN}/kafka-consumer-groups.sh --describe --group "$3" \
      --bootstrap-server ${KAFKA_CLUSTER} 
    else
      errorFun
    fi
  else
     errorFun
  fi
  ;;
  
#生产数据
producer|-p)
  if [ $# -eq 2 ]; then
    ${KAFKA_HOME_BIN}/kafka-console-producer.sh --topic "$2" \
    --broker-list ${KAFKA_CLUSTER}
  else
    errorFun
  fi
  ;;
  
#消费数据
consumer|-con)
  if [ $# -eq 4 ]; then
    if [ "$2" == "-e" ]; then
      ${KAFKA_HOME_BIN}/kafka-console-consumer.sh --topic "$3" \
      --bootstrap-server ${KAFKA_CLUSTER} \
      --from-beginning \
      --group "$4"
    elif [ "$2" == "-l" ];then
       ${KAFKA_HOME_BIN}/kafka-console-consumer.sh --topic "$3" \
      --bootstrap-server ${KAFKA_CLUSTER} \
      --group "$4"
    fi	
  else
    errorFun
  fi
  ;;
  
  
#重置偏离量
-r)
  if [ $# -eq 3 ]; then
     ${KAFKA_HOME_BIN}/kafka-consumer-groups.sh --topic "$2" --group "$3" --reset-offsets --to-earliest --execute \
     --bootstrap-server ${KAFKA_CLUSTER}
  elif [ $# -eq 4 ]&&[ -n "$(echo $4| sed -n "/^[0-9]\+$/p")" ]; then
     ${KAFKA_HOME_BIN}/kafka-consumer-groups.sh --topic "$2" --group "$3" --reset-offsets --to-offset "$4" --execute \
     --bootstrap-server ${KAFKA_CLUSTER}
  else
    errorFun
  fi	
  ;;
  
#逻辑删除topic或消费组
-del|delete)
  if [ $# -eq 3 ]; then
    if [ "$2" == "-t" ];then
      ${KAFKA_HOME_BIN}/kafka-topics.sh --delete --topic "$3" \
      --bootstrap-server ${KAFKA_CLUSTER}
    elif [ "$2" == "-g" ];then
      ${KAFKA_HOME_BIN}/kafka-consumer-groups.sh --delete --group "$3" \
      --bootstrap-server ${KAFKA_CLUSTER}
    else
      errorFun
    fi
  else  
    echo -e "At least \033[31mtwo parameters \033[0mare required"
    sh /${SCRIPT_DIR}/kafka --help
  fi
  ;; 
*)
  errorFun
  ;;
esac

#!/bin/bash

kafka_topic_bin=/opt/kafka/bin/kafka-topics.sh
kafka_consumer_bin=/opt/kafka/bin/kafka-consumer-groups.sh
zks="127.0.0.1:2181"
servers="127.0.0.1:9092"

###创建topic
createTopic(){
  topicName=$2
  sh $kafka_topic_bin --bootstrap-server $servers --create --topic $topicName --partitions 3 --replication-factor 2
  echo ">>>>>> create topic: $topicName success."
  ##--config max.message.bytes=12800000 --config flush.messages=1 --partitions 5 --replication-factor 1
}

###查看topic
descTopic(){
  descType=$2
  topicName=$3
  if [ "${descType}" = "list" ];then
    sh $kafka_topic_bin --bootstrap-server $servers --list
  elif [ "${descType}" = "describe" ];then
    sh $kafka_topic_bin --bootstrap-server $servers --describe --topic $topicName
  else
    echo "------query error,please check scripts params define."
  fi
}

###删除topic
deleteTopic(){
  topicName=$2
  sh $kafka_topic_bin --zookeeper $zks --delete --topic $topicName
  echo ">>>>>> delete topic: $topicName success."
}

###修改topic
alterTopic(){
  $topicName=$2
  $config=$3
  sh $kafka_topic_bin --zookeeper $zks --alter --topic $topicName $config
  #sh $kafka_topic_bin --zookeeper $zks --alter --topic $topicName --config max.message.bytes=128000
  #sh $kafka_topic_bin --zookeeper $zks --alter --topic $topicName --delete-config max.message.bytes
  #Kafka分区数量只允许增加,不允许减少 
  #sh $kafka_topic_bin --zookeeper $zks --alter --topic $topicName --partitions 5
  echo ">>>>>> alter topic: $topicName success."
}

##查看消费组
consumer(){
  optype=$2
  consumer_group=$3
  if [ "${optype}" = "describe" ];then
    $kafka_consumer_bin --bootstrap-server "${servers}" --group "${consumer_group}" --describe
  elif [ "${optype}" = "delete" ];then
    $kafka_consumer_bin --bootstrap-server "${servers}" --group "${consumer_group}" --delete
    echo "...."
  else
    echo ">>>>>> consumer params error, please check script define."
  fi
}

#kafka-console-producer.sh --broker-list localhost:9092 --topic test
#kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

case $1 in
  create)
    createTopic $1 $2;;
  query)
    descTopic $1 $2 $3;;
  delete)
    deleteTopic $1 $2;;
  alter)
    alterTopic $1 $2 $3;;
  consumer)
    consumer $1 $2 $3;;
  *)
   echo "Usage: $0 (create|desc|del|alter|consumerDesc).";;
esac

Apache Kafka 实践:优化与脚本操作指南 本文还有配套的精品资源,点击获取 简介:本文深入探讨了 Apache Kafka 核心概念及其在 IT 环境中的应用,特别是与 Shell 脚本的关联。Apache Kafka 是一个分布式流处理平台,通过主题和分区的结构提供高吞吐量和低延迟的消息处理。文章介绍了 Kafka 架构、生产者和消费者的角色、Shell 脚本Kafka 的交互,以及 Kafka 命令行工具的... 阅读详情

相关推荐

命令行到脚本化:如何用Shell脚本封装Kafka运维命令提升效率

本文详细介绍了如何通过Shell脚本封装Kafka运维命令,包括kafka-console-consumer.sh等常用工具的参数化与日志记录,实现一键化操作和自动化监控。通过环境变量管理、Topic创建与配置调整、消费者组Lag监控等实战案例,显著提升Kafka集群运维效率。

weixin_28707535的博客 41

Kafka 工具脚本

查看消息批次 (RecordBatch) 或消息集合 (MessageSet) 的元数据信息,如 : 创建时间、压缩算法、CRC 校验值。向 Broker 发送 Produce 请求 : 客户端 API 用版本号是 7 (最新的版本)验证不同 Kafka 版本之间服务器和客户端的适配性。

记录点点滴滴 362

kafka的二次封装

kafka是一个优秀的分布式发布订阅系统,我们可以很轻易地实现使用kafka Java API做发布消息或者订阅消息的功能。 //producer public class ProducerApi { public static void main(String[] args) { Properties props = new Properties(); ...

qq_36391986的博客 4709

python脚本生产kafka消息问题处理两则

一开始脚本是这样的,本地调试无误于是传到测试执行机上运行 server = “xxx” topic = “xxx.xxx.xxx” testProducer = KafkaProducerUtil(server=server, topic=topic) with testProducer.open(): msg = { “xxx”: “xxx” } future = testProducer.produceMsg(msg) future.get(timeout=10) self.test_case.ass

pancake_real的博客 1773

Kafka消息生产

如果acks=1,只要集群的首领节点收到消息生产者就会收到一个来自服务器的成功响应。如果消息成功写入Kafka,就返回一个RecordMetaData对象,它包含了主题和分区信息,以及记录在分区里的偏移量。如果键不为空,并且使用了默认的分区器,那么Kafka会对键进行散列,然后根据散列值把消息映射到特定的分区上。我们知道为了实现高可用,Kafka的分区是建立副本的,指定这个参数也是为了高可用,防止消息丢失。acks参数指定了必须要有多少个分区副本收到消息生产者才会认为消息写入是成功的。...

『程序员·小李』的博客 1809

shell脚本--kafka生产数据

直接上代码 kafka参数修改成自己的配置。 #!/bin/bash echo ----------开始生产数据---------- #响应Ctrl+C中断 trap 'onCtrlC' INT function onCtrlC () { echo 'Ctrl+C is captured' exit 1 } #kafka所在目录 kafkaPath=/opt/kafka/ #broker brokerlist=ddc001.lqad:9092,ddc002.lqad:9092,ddc00

手提青灯觅佳人的博客 1608

kafka命令二次封装脚本

kafka命令二次封装脚本 说明 : 该脚本kafka_2.11-2.4.1命令进行了二次封装, 避免了繁琐的命令.主要用于测试使用. 使用脚本前请先对应修改 kafka集群地址(KAFKA_CLUSTER) 和 kafka主目录(KAFKA_HOME_BIN) kf-util.sh #!/bin/bash #kafka集群地址 ip/主机名:9092 KAFKA_CLUSTER=hadoop22:9092,hadoop23:9092,hadoop24:9092 #kafka bin目录 KAFKA_

qq_31425415的博客 376

kafka集群的启动与关闭命令脚本封装

目标: step1:如何启动Kafka集群? step2:如何关闭Kafka集群? step3:如何封装启动及关闭脚本? 实施: 启动Zookeeper /export/server/zookeeper-3.4.6/bin/start-zk-all.sh 启动Kafka bin/kafka-server-start.sh config/server.properties >>/dev/null 2>&1 & ‘>>/dev/null 2>&

tian_1_2_3的博客 1万+

命令行到运维脚本:手把手教你封装Kafka常用命令为自动化工具

本文详细介绍了如何将Kafka常用命令封装为自动化运维脚本,提升运维效率并减少人为错误。通过Shell和Python脚本的对比分析,结合实际案例展示如何实现自动化巡检、消费延迟告警等典型场景,帮助运维团队将Kafka管理人工干预减少85%。

weixin_33725126的博客 416

2022-08-05 Kafka Shell操作

Kafka Shell操作

D___H的博客 436

Kafka【三】Windows下安装Kafka集群

前文:Kafka【一】Windows下安装单节点Kafka① 安装ZooKeeper在D:\创建文件夹kafkacluster,将kafka安装包kafka_2.12-3.6.1解压缩到kafka文件夹。修改文件夹名为kafkazk 因为kafka内置了ZooKeeper软件,所以此处将解压缩的文件作为ZooKeeper软...

weixin_42136837的博客 275

解惑 | 为什么我根据时间戳获得的offset为空呢?

点击上方蓝色“大数据实战演练”,选择“设为星标”或“置顶”回复“资源”领取独家整理的学习资料!每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。放弃不难,但坚持很酷~kafka_2...

CREATE_17的博客 475

myecplise连接Spark集群接口封装

这是我的第一篇博文,从事IT人员这么多年得到了大家不少的帮助,以后也会向大家反馈。 废话不多说了,进入正题吧! spark作为分布式计算框架,越来越受到企业的重视,对于从事java开发的人来说,虽然spark提供了java接口,但是基于脚本命令,如何融入自己的工程系统里,却是我们做产品人嘴关注的问题。‘  本文的主要目标是myecplise客户端通过java程序调用远程spark集群

yanglx890826的博客 334

loadrunner编写kafka脚本

需求:项目需要从kakfka接收报文,使用jmeter和LR12各做了脚本,先介绍LR的脚本。 注:LR11不支持高版本jdk,如果没有LR12还是用jmeter压测 编写工具LR12,环境jdk1.8 importlrapi.lr; importjava.util.Properties; importorg.apache.kafka.clients.producer.KafkaPro...

海外的猫 568

将启动Kafka的几条命令一起做成一个批处理文件

将启动Kafka的几条命令一起做成一个批处理文件 1、最近初步接触大数据,在本地windows安装了Kafka,然后每次启动都要至少开两个cmd命令窗口,再一个一个地输入命令,很麻烦,就想要把这些命令封装在一个.bat批处理文件里,实现一键启动。 2、以下是批处理文件命令(新建.txt写完后重命名.bat即可): @echo off start cmd /k "d:&&cd D:\...

owolfo的博客 545

kafka 脚本发送_在 Mac 跑起 Kafka

参考资料Kafka 中文文档Kafka的安装和简单实例测试kafka-python1 安装Kafka 中文文档中主要介绍了 Linux/Windows 系统下的 Kafka 配置,为了在本地 Mac 系统下跑起一个 demo,本文简单介绍如何在 Mac 中跑起 Kafka。执行 brew install kafka,由于 Kafka 需要依赖 ZooKeeper,所有在 brew 过程中,会把 ...

weixin_39775127的博客 110

python脚本封装成接口且,由前端平台调用

步骤: 二、【kafka生产脚本封装】案例实现: 1、编写前端平台代码。react语言 2、搭建后端服务(flask轻便),编写服务端代码,封装脚本为接口调用方式,postman调试接口请求OK,达到预期效果。python实现。 注意事项:1)服务端的端口号不与前端 及平台的其他服务重复。 3、前后端联调。 方法: 1)前端调用时,后端服务加调试代码,保证postman传入的参数 与前端传入的参数格式 给接口的是一致的。 2)前端鼠标右键 【检查】可看到 前后端参数传递情况。 注意事项:

xiaoruirui1294的博客 4722

kafka消费特定topic shell脚本

本文介绍了一个Kafka 3.x消费者工具脚本,用于从指定Topic消费消息脚本通过参数接收Topic名称,支持配置Kafka集群地址、消费者组和消费起始位置(从头或最新消息开始)。使用前需设置KAFKA_HOME等环境变量,运行时进行参数校验和环境检查。脚本提供清晰的交互提示,包括集群信息、Topic名称和操作指引,通过kafka-console-consumer.sh实现核心消费功能。使用Ctrl+C可停止消费,退出时显示提示信息。该脚本简化了Kafka消费者的使用流程,适合快速调试和监控消息队列。

liuwei0376的专栏 534
上一篇: 卸载ambari集群(内含卸载脚本)
下一篇: 升级openssh后版本不一致问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值