当前位置: 首页 > news >正文

轻量级Kafka集群管理工具

前言

由于在工作中有用到一个三节点的小型Kafka集群但没有找到合适的管理工具来管理Topic和Connect,于是便想着自己开发一个包含我常用基础功能的轻量级Kafka管理工具。该工具通过spring boot创建Kafka Client及Connect API来实现核心功能并增加用户登录,日志持久化等功能。以下是该工具详细介绍文档。

项目地址

DL Kafka Manager

一款基于Spring Boot的轻量级Kafka管理工具,提供集群监控、Topic管理、Connect管理、操作记录、用户管理等功能

功能特性

DL Kafka Manager是一个功能完善的Kafka管理平台,提供了以下核心功能:

📊 集群监控

  • 实时监控Kafka集群状态
  • ZooKeeper连接状态检查
  • 系统资源使用情况监控
  • 集群健康度检查

📦 Topic管理

  • 创建、删除Topic
  • 查看Topic列表及详细信息
  • Topic配置管理
  • 分区信息查看

🔌 Connect管理

  • Connector列表查看
  • Connector详细信息展示
  • Connector操作(暂停、恢复、重启、删除)
  • Connector任务管理

👥 用户管理

  • 用户认证与授权
  • JWT Token安全机制
  • 用户角色管理(管理员/普通用户)
  • 用户信息维护

📝 操作日志

  • 完整的操作日志记录
  • 日志查询与筛选
  • 分页展示操作记录

界面预览

以下为界面效果预览,实际界面以运行结果为准

登录页
在这里插入图片描述

仪表板
在这里插入图片描述

Topic管理
在这里插入图片描述

Connect管理
在这里插入图片描述

集群监控
在这里插入图片描述

操作日志
在这里插入图片描述

用户管理
在这里插入图片描述

支持版本

Kafka版本兼容性

本工具基于 Apache Kafka Client 2.8.1 开发,通常可兼容以下Kafka版本:

  • Kafka 0.10.0及以上版本
  • Kafka 1.x 版本
  • Kafka 2.x 版本
  • Kafka 3.x 版本(部分功能可能受限)

⚠️ 注意:不同版本的Kafka可能存在API差异,建议在生产环境中使用前进行充分测试。

环境依赖

  • JDK: 8+
  • Maven: 3.6+
  • MySQL: 5.7+
  • 操作系统: Windows/Linux/macOS

快速开始

环境要求

  • JDK 8+
  • Maven 3.6+
  • MySQL 5.7+
  • Kafka集群(0.10.0+)

安装步骤

  1. 克隆项目代码:
git clone https://gitee.com/wafwitness/dl-kafka-manager.git
cd dl-kafka-manager
  1. 初始化数据库:
-- 执行 init-mysql.sql 脚本创建数据库和用户
CREATE DATABASE IF NOT EXISTS kafka_manager 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;CREATE USER IF NOT EXISTS 'kafka_manager'@'localhost' IDENTIFIED BY 'kafka_manager123';GRANT ALL PRIVILEGES ON kafka_manager.* TO 'kafka_manager'@'localhost';
FLUSH PRIVILEGES;
  1. 修改配置文件:
    编辑 application.yml文件,配置数据库连接、Kafka集群地址等信息:
spring:datasource:url: jdbc:mysql://localhost:3306/kafka_manager?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghaiusername: kafka_managerpassword: kafka_manager123kafka:bootstrap:servers: localhost:9092connect:url: http://localhost:8083
  1. 编译打包:
mvn clean package
  1. 运行应用:
java -jar target/dl-kafka-manager-0.0.1-SNAPSHOT.jar
  1. 访问应用:
    打开浏览器访问 http://localhost:8081

默认管理员账号:admin/admin123

免责声明

⚠️ 重要提示

DL Kafka Manager是一个轻量级的Kafka集群管理工具,适用于开发和测试环境。

  1. 生产环境使用风险

    • 本工具为轻量级管理平台,功能相对简单,未经过大规模生产环境的严格验证
    • 在生产环境中使用前,请务必进行充分的测试和验证
    • 任何因使用本工具而导致的系统故障、数据丢失等问题,使用者需自行承担全部责任
  2. 功能限制

    • 本工具不提供数据恢复功能
    • 不保证所有Kafka版本的完全兼容性
    • 某些高级Kafka功能可能未完全支持
  3. 责任范围

    • 本工具按"现状"提供,不提供任何形式的担保
    • 开发者不对因使用本工具而产生的任何直接、间接或 consequential 损失负责
    • 使用者应自行承担使用本工具的所有风险
  4. 建议

    • 生产环境中建议使用官方提供的管理工具如 Kafka Manager (CMAK)、Confluent Control Center等
    • 如需在生产环境中使用本工具,请先在测试环境中进行全面测试

技术架构

后端技术栈

  • Spring Boot 2.6.13: 快速开发框架
  • Spring Security: 安全认证与授权
  • MyBatis: 数据库访问层
  • JWT: Token认证机制
  • Thymeleaf: 服务端页面模板引擎
  • Apache Kafka Client: Kafka连接与操作

前端技术栈

  • HTML/CSS/JavaScript: 基础前端技术
  • 原生JavaScript: 无框架依赖的前端交互
  • 响应式设计: 适配不同屏幕尺寸

数据存储

  • MySQL: 用户信息和操作日志存储

开发指南

项目结构

src/main/java/com/dl/kafkamanager/dlkafkamanager
├── annotation/     # 自定义注解
├── aspectj/        # AOP切面处理
├── common/         # 通用类(响应、分页等)
├── config/         # 配置类
├── controller/     # 控制器
│   ├── kafka/      # Kafka相关API
│   └── system/     # 系统相关API
├── entity/         # 实体类
├── handler/        # 异常处理器
├── mapper/         # MyBatis Mapper接口
├── security/       # 安全相关
├── service/        # 业务逻辑层
│   └── impl/       # 业务逻辑实现
└── util/           # 工具类

核心功能模块

认证授权
  • 使用JWT Token进行用户认证
  • Spring Security实现权限控制
  • 用户密码BCrypt加密存储
Kafka操作
  • 基于Kafka AdminClient实现Topic管理
  • 调用Kafka Connect REST API实现Connector管理
  • 集群信息获取与监控
日志记录
  • 使用AOP切面自动记录操作日志
  • @Log注解标记需要记录的操作
  • 操作日志持久化到MySQL数据库

功能新增

添加新的API接口
  1. 在对应的Controller类中添加新的请求映射方法
  2. 在Service层实现业务逻辑
  3. 如需记录操作日志,添加@Log注解
添加新的页面
  1. 在templates目录下创建新的HTML文件
  2. 参考现有页面结构和样式
  3. 添加对应的Controller路由
扩展监控功能
  1. 修改ClusterMonitorService
  2. 添加新的监控指标获取方法
  3. 在前端页面展示新的监控数据

构建与部署

# 本地运行
mvn spring-boot:run# 打包部署
mvn clean package
java -jar target/dl-kafka-manager-0.0.1-SNAPSHOT.jar
http://www.dtcms.com/a/577526.html

相关文章:

  • 嵌入式计算架构变革:ARM 浪潮下的替代革命与杰和科技产品布局
  • HarmonyOs鸿蒙开发,日期滑动选择器
  • 鸿蒙ArkUI布局与样式进阶(十六)——页面级变量、函数注入与 @BuilderParam 插槽机制全解析(附详细注释)
  • 网站加载页面怎么做seo网站设计外包
  • sqlserver2019中,一列为计算项目,一列为计算公式及计算项目代表的数字,如何找出一个计算项目是数字改变时,会有多个涉及的计算项目
  • 网站截图可以做证据吗微信小程序模板免费下载
  • 手机兼容测试服务提供商对比分析:腾讯优测Utest的优势与挑战
  • repo xml语法
  • 如何选择能够高效运行的云手机
  • IFC转换为3DXML的技术指南在线转换推荐
  • 站长之家工具网页界面设计的内容五大设计要素
  • MAUI劝退:内部消息机制(社区工具包)
  • 西安 网站 公司wordpress同步微信公众号
  • Xshell效率实战:SSH管理秘籍技术大纲
  • 和平精英java 游戏程序
  • 【Java】异常详解+实例演示+知识总结
  • 【大模型训练】sglang 权重绑定和roll HF Meg相互转化
  • 有那个网站可以做报名链接的网站开发项目简单描述
  • C++ 链表 模拟 递归 迭代 力扣 24. 两两交换链表中的节点 题解 每日一题
  • 北京做网站的外包公司百度小程序注册
  • GitHub 全方位指南(续):实战进阶与生态拓展​
  • 二十四、STM32的DMA
  • 新能源汽车高压系统“隐形守护者”:X电容、Y电容、支撑电容、共模电感与薄膜电容的关系全解析
  • OpenCV(二十一):HSV与HSL
  • 东莞seo建站优化方法做网站最小的字体是多少钱
  • Linux安装镜像initrd深度解析:从Lorax构建到故障排查
  • 基础篇:IoC(六):资源和资源加载器
  • Qt之元对象系统
  • 宿州网站建设设计公司海口可信的海南网站建设
  • Go Map 实现原理解析:从数据结构到核心机制