- 前端: React 18 + TypeScript + Vite + Tailwind CSS + shadcn/ui - 后端: Go + Gin + GORM + JWT (golang-jwt/jwt/v5) - 功能: 服务器管理、K8s集群、监控告警、CI/CD、自动化运维、审批流程、审计日志 - 文档: 设计文档(ROADMAP/PDD/架构/模块)
316 lines
9.9 KiB
Markdown
316 lines
9.9 KiB
Markdown
# EZOps 后端项目总结
|
||
|
||
## 项目概述
|
||
|
||
EZOps 后端是一个基于 Go + Gin 框架开发的专业 AIOps 智能运维平台 API 服务。
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
backend/
|
||
├── cmd/
|
||
│ └── main.go # 应用入口
|
||
├── internal/
|
||
│ ├── api/
|
||
│ │ ├── handlers/ # HTTP 处理器
|
||
│ │ │ ├── user.go # 用户管理
|
||
│ │ │ ├── server.go # 服务器管理
|
||
│ │ │ ├── dashboard.go # 仪表盘
|
||
│ │ │ ├── k8s.go # K8s 管理
|
||
│ │ │ ├── alert.go # 监控告警
|
||
│ │ │ ├── pipeline.go # 流水线/发布
|
||
│ │ │ ├── automation.go # 自动化运维
|
||
│ │ │ ├── approval.go # 审批流程
|
||
│ │ │ ├── navigation.go # 站内导航
|
||
│ │ │ └── audit.go # 审计日志
|
||
│ │ ├── middleware/ # 中间件
|
||
│ │ │ └── auth.go # JWT 认证、管理员权限
|
||
│ │ └── routes/ # 路由注册
|
||
│ │ └── routes.go
|
||
│ ├── config/ # 配置管理
|
||
│ │ └── config.go
|
||
│ └── models/ # 数据模型
|
||
│ ├── user.go # 用户、角色、权限
|
||
│ ├── server.go # 服务器、云账号、域名
|
||
│ ├── k8s.go # K8s 相关模型
|
||
│ ├── alert.go # 告警相关模型
|
||
│ ├── cicd.go # CI/CD 相关模型
|
||
│ ├── automation.go # 自动化运维模型
|
||
│ ├── approval.go # 审批流程模型
|
||
│ ├── navigation.go # 导航模型
|
||
│ ├── audit.go # 审计日志模型
|
||
│ └── common.go # 通用响应模型
|
||
├── pkg/
|
||
│ ├── database/ # 数据库连接
|
||
│ │ └── database.go
|
||
│ └── logger/ # 日志工具
|
||
│ └── logger.go
|
||
├── scripts/ # 脚本文件
|
||
│ ├── init.sql # 数据库初始化脚本
|
||
│ └── mock.go # Mock 数据生成
|
||
├── config.yaml.example # 配置文件示例
|
||
├── docker-compose.yml # Docker Compose 配置
|
||
├── Dockerfile # Docker 构建文件
|
||
├── Makefile # 构建脚本
|
||
├── nginx.conf # Nginx 配置
|
||
├── go.mod # Go 模块定义
|
||
├── go.sum # Go 模块校验
|
||
├── .gitignore # Git 忽略文件
|
||
└── README.md # 项目说明
|
||
```
|
||
|
||
## 功能模块
|
||
|
||
### 1. 用户管理
|
||
- 用户注册、登录、登出
|
||
- JWT Token 认证
|
||
- 用户信息管理
|
||
- 角色权限管理
|
||
|
||
### 2. 资产管理
|
||
- 服务器资产 CRUD
|
||
- 批量导入(云主机、Excel)
|
||
- 云账号管理(阿里云、腾讯云、AWS、华为云)
|
||
- 域名管理(SSL 证书到期提醒)
|
||
- 区域管理
|
||
|
||
### 3. Kubernetes 管理
|
||
- 集群管理
|
||
- 节点管理
|
||
- Pod 管理
|
||
- Deployment 详情
|
||
- Service 详情
|
||
- Ingress 详情
|
||
|
||
### 4. 监控告警
|
||
- 告警规则管理
|
||
- 告警事件处理
|
||
- 通知渠道配置
|
||
- 仪表盘指标展示
|
||
|
||
### 5. 应用发布
|
||
- CI/CD 流水线管理
|
||
- 发布审批流程
|
||
- 发布记录追踪
|
||
- 回滚功能
|
||
|
||
### 6. 自动化运维
|
||
- 定时任务(CronJob)
|
||
- 脚本库管理
|
||
- 任务执行记录
|
||
- Playbook 编排
|
||
|
||
### 7. 审批流程
|
||
- 审批模板管理
|
||
- 审批流程创建
|
||
- 审批/驳回操作
|
||
|
||
### 8. 站内导航
|
||
- 导航分组管理
|
||
- 导航链接管理
|
||
- 收藏功能
|
||
|
||
### 9. 审计日志
|
||
- 操作日志记录
|
||
- 日志查询、筛选
|
||
- 日志导出
|
||
- 日志统计
|
||
- 日志清理
|
||
|
||
## API 路由列表
|
||
|
||
### 认证相关
|
||
- `POST /api/v1/auth/login` - 登录
|
||
- `POST /api/v1/auth/register` - 注册
|
||
- `GET /api/v1/user/profile` - 获取用户信息
|
||
- `PUT /api/v1/user/profile` - 更新用户信息
|
||
- `PUT /api/v1/user/password` - 修改密码
|
||
|
||
### 用户管理(管理员)
|
||
- `GET /api/v1/admin/users` - 用户列表
|
||
- `GET /api/v1/admin/users/:id` - 用户详情
|
||
- `POST /api/v1/admin/users` - 创建用户
|
||
- `PUT /api/v1/admin/users/:id` - 更新用户
|
||
- `DELETE /api/v1/admin/users/:id` - 删除用户
|
||
|
||
### 仪表盘
|
||
- `GET /api/v1/dashboard/stats` - 统计数据
|
||
- `GET /api/v1/dashboard/recent-alerts` - 最近告警
|
||
- `GET /api/v1/dashboard/recent-releases` - 最近发布
|
||
- `GET /api/v1/dashboard/metrics` - 指标数据
|
||
|
||
### 服务器管理
|
||
- `GET /api/v1/servers` - 服务器列表
|
||
- `GET /api/v1/servers/stats` - 服务器统计
|
||
- `GET /api/v1/servers/:id` - 服务器详情
|
||
- `POST /api/v1/servers` - 创建服务器
|
||
- `PUT /api/v1/servers/:id` - 更新服务器
|
||
- `DELETE /api/v1/servers/:id` - 删除服务器
|
||
- `POST /api/v1/servers/batch-delete` - 批量删除
|
||
|
||
### 云账号管理
|
||
- `GET /api/v1/cloud-accounts` - 云账号列表
|
||
- `POST /api/v1/cloud-accounts` - 创建云账号
|
||
- `DELETE /api/v1/cloud-accounts/:id` - 删除云账号
|
||
|
||
### 域名管理
|
||
- `GET /api/v1/domains` - 域名列表
|
||
- `POST /api/v1/domains` - 创建域名
|
||
- `DELETE /api/v1/domains/:id` - 删除域名
|
||
|
||
### Kubernetes 管理
|
||
- `GET /api/v1/k8s-clusters` - 集群列表
|
||
- `GET /api/v1/k8s-clusters/:id` - 集群详情
|
||
- `POST /api/v1/k8s-clusters` - 创建集群
|
||
- `PUT /api/v1/k8s-clusters/:id` - 更新集群
|
||
- `DELETE /api/v1/k8s-clusters/:id` - 删除集群
|
||
- `GET /api/v1/k8s-clusters/:id/nodes` - 节点列表
|
||
- `GET /api/v1/k8s-clusters/:id/pods` - Pod 列表
|
||
- `GET /api/v1/k8s-clusters/:id/deployments` - Deployment 列表
|
||
- `GET /api/v1/k8s-clusters/:id/services` - Service 列表
|
||
- `GET /api/v1/k8s-clusters/:id/ingresses` - Ingress 列表
|
||
|
||
### 监控告警
|
||
- `GET /api/v1/alerts` - 告警事件列表
|
||
- `GET /api/v1/alerts/rules` - 告警规则列表
|
||
- `POST /api/v1/alerts/rules` - 创建告警规则
|
||
- `PUT /api/v1/alerts/rules/:id` - 更新告警规则
|
||
- `DELETE /api/v1/alerts/rules/:id` - 删除告警规则
|
||
- `POST /api/v1/alerts/rules/:id/toggle` - 启用/禁用规则
|
||
- `POST /api/v1/alerts/:id/ack` - 确认告警
|
||
|
||
### 应用发布
|
||
- `GET /api/v1/pipelines` - 流水线列表
|
||
- `POST /api/v1/pipelines` - 创建流水线
|
||
- `GET /api/v1/pipelines/:id` - 流水线详情
|
||
- `PUT /api/v1/pipelines/:id` - 更新流水线
|
||
- `DELETE /api/v1/pipelines/:id` - 删除流水线
|
||
- `POST /api/v1/pipelines/:id/trigger` - 触发流水线
|
||
- `GET /api/v1/pipelines/:id/runs` - 运行记录
|
||
- `GET /api/v1/releases` - 发布列表
|
||
- `POST /api/v1/releases` - 创建发布
|
||
- `POST /api/v1/releases/:id/approve` - 审批发布
|
||
- `POST /api/v1/releases/:id/deploy` - 执行发布
|
||
- `POST /api/v1/releases/:id/rollback` - 回滚发布
|
||
|
||
### 自动化运维
|
||
- `GET /api/v1/cron-jobs` - 定时任务列表
|
||
- `POST /api/v1/cron-jobs` - 创建定时任务
|
||
- `GET /api/v1/cron-jobs/:id` - 定时任务详情
|
||
- `PUT /api/v1/cron-jobs/:id` - 更新定时任务
|
||
- `DELETE /api/v1/cron-jobs/:id` - 删除定时任务
|
||
- `POST /api/v1/cron-jobs/:id/toggle` - 启用/禁用任务
|
||
- `POST /api/v1/cron-jobs/:id/execute` - 立即执行
|
||
- `GET /api/v1/scripts` - 脚本列表
|
||
- `POST /api/v1/scripts` - 创建脚本
|
||
- `GET /api/v1/scripts/:id` - 脚本详情
|
||
- `PUT /api/v1/scripts/:id` - 更新脚本
|
||
- `DELETE /api/v1/scripts/:id` - 删除脚本
|
||
- `POST /api/v1/scripts/:id/execute` - 执行脚本
|
||
|
||
### 审批流程
|
||
- `GET /api/v1/approvals/templates` - 审批模板列表
|
||
- `POST /api/v1/approvals/templates` - 创建审批模板
|
||
- `GET /api/v1/approvals/templates/:id` - 模板详情
|
||
- `PUT /api/v1/approvals/templates/:id` - 更新模板
|
||
- `DELETE /api/v1/approvals/templates/:id` - 删除模板
|
||
- `GET /api/v1/approvals/processes` - 审批流程列表
|
||
- `POST /api/v1/approvals/processes` - 创建审批流程
|
||
- `GET /api/v1/approvals/processes/:id` - 流程详情
|
||
- `POST /api/v1/approvals/processes/:id/approve` - 审批通过
|
||
- `POST /api/v1/approvals/processes/:id/reject` - 审批驳回
|
||
|
||
### 站内导航
|
||
- `GET /api/v1/navigations/groups` - 导航分组列表
|
||
- `POST /api/v1/navigations/groups` - 创建分组
|
||
- `PUT /api/v1/navigations/groups/:id` - 更新分组
|
||
- `DELETE /api/v1/navigations/groups/:id` - 删除分组
|
||
- `GET /api/v1/navigations/links` - 导航链接列表
|
||
- `POST /api/v1/navigations/links` - 创建链接
|
||
- `PUT /api/v1/navigations/links/:id` - 更新链接
|
||
- `DELETE /api/v1/navigations/links/:id` - 删除链接
|
||
- `POST /api/v1/navigations/links/:id/favorite` - 收藏/取消收藏
|
||
|
||
### 审计日志
|
||
- `GET /api/v1/audit/logs` - 审计日志列表
|
||
- `GET /api/v1/audit/logs/:id` - 日志详情
|
||
- `GET /api/v1/audit/modules` - 模块列表
|
||
- `GET /api/v1/audit/actions` - 操作类型列表
|
||
- `GET /api/v1/audit/logs/export` - 导出日志
|
||
- `GET /api/v1/audit/statistics` - 统计信息
|
||
- `POST /api/v1/audit/logs/clear` - 清理日志
|
||
|
||
## 快速开始
|
||
|
||
### 1. 安装依赖
|
||
|
||
```bash
|
||
cd backend
|
||
go mod download
|
||
```
|
||
|
||
### 2. 配置
|
||
|
||
```bash
|
||
cp config.yaml.example config.yaml
|
||
# 编辑 config.yaml 修改数据库等配置
|
||
```
|
||
|
||
### 3. 启动数据库
|
||
|
||
```bash
|
||
docker-compose up -d mysql redis
|
||
```
|
||
|
||
### 4. 运行
|
||
|
||
```bash
|
||
# 开发模式
|
||
go run cmd/main.go
|
||
|
||
# 或使用 Makefile
|
||
make run
|
||
```
|
||
|
||
### 5. 生成 Mock 数据
|
||
|
||
```bash
|
||
go run scripts/mock.go
|
||
```
|
||
|
||
### 6. 访问 API 文档
|
||
|
||
打开浏览器访问 http://localhost:8080/swagger/index.html
|
||
|
||
## Docker 部署
|
||
|
||
```bash
|
||
# 构建镜像
|
||
docker build -t ezops-backend .
|
||
|
||
# 运行容器
|
||
docker run -p 8080:8080 -v $(pwd)/config.yaml:/app/config.yaml ezops-backend
|
||
|
||
# 或使用 Docker Compose
|
||
docker-compose up -d
|
||
```
|
||
|
||
## 技术栈
|
||
|
||
- **框架**: Gin Web Framework
|
||
- **ORM**: GORM
|
||
- **数据库**: MySQL / PostgreSQL
|
||
- **缓存**: Redis (可选)
|
||
- **认证**: JWT
|
||
- **日志**: Zap
|
||
- **配置**: Viper
|
||
- **文档**: Swagger
|
||
|
||
## 注意事项
|
||
|
||
1. 生产环境请修改默认的 JWT Secret 和数据库密码
|
||
2. 建议启用 HTTPS
|
||
3. 配置适当的日志轮转策略
|
||
4. 定期备份数据库
|
||
5. 启用审计日志功能
|