轻量级Kafka集群管理工具

31 阅读5分钟

前言

由于在工作中有用到一个三节点的小型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/Shanghai
    username: kafka_manager
    password: kafka_manager123

kafka:
  bootstrap:
    servers: localhost:9092
  connect:
    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