# 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. 启用审计日志功能