P1: - utils/storage.ts、theme.ts、validate.ts + index 统一出口 - request/store/useTheme 接入 storage;清零 confirm/alert - PipelineManager、TerminalAuditTab 拆分子模块(<700行红线) P2: - api/monitor、api/deploy 子目录化 - hooks/api 扩展:servers/pipelines/alerts/audit/sessionCommands - PipelineManager、AuditOperationsTab 接入 TanStack Query
AIOps 后端服务
AIOps 是一个专业的 AIOps 智能运维平台后端服务,基于 Go + Gin 框架开发。
功能特性
核心模块
- 用户管理: 用户认证、角色权限管理
- 资产管理: 服务器资产、云账号、域名管理
- Kubernetes 管理: 集群、节点、Pod、Deployment、Service、Ingress 管理
- 监控告警: 告警规则、告警事件、通知渠道
- 应用发布: CI/CD 流水线、发布审批
- 自动化运维: 定时任务、脚本管理、任务执行
- 审批流程: 审批模板、审批流程管理
- 站内导航: 导航分组、链接管理
- 审计日志: 操作日志记录、查询、统计
技术栈
- 框架: Gin Web Framework
- ORM: GORM
- 数据库: MySQL / PostgreSQL
- 缓存: Redis (可选)
- 认证: JWT
- 日志: Zap
- 配置: Viper
- 文档: Swagger
快速开始
环境要求
- Go 1.21+
- MySQL 8.0+ 或 PostgreSQL 14+
- Redis 6.0+ (可选)
安装依赖
cd backend
go mod download
配置
- 复制配置文件示例:
cp config.yaml.example config.yaml
- 编辑
config.yaml,根据实际情况修改数据库等配置
数据库初始化
# 创建数据库
mysql -u root -p -e "CREATE DATABASE ezops CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 或者使用 PostgreSQL
# createdb -U postgres ezops
运行
# 开发模式
go run cmd/main.go
# 或者编译后运行
go build -o ezops cmd/main.go
./ezops
服务启动后,访问 http://localhost:8080 查看 API 文档。
API 文档
启动服务后,可以通过以下地址访问 Swagger API 文档:
- Swagger UI: http://localhost:8080/swagger/index.html
- API 规范: http://localhost:8080/swagger/doc.json
项目结构
backend/
├── cmd/
│ └── main.go # 应用入口
├── internal/
│ ├── api/
│ │ ├── handlers/ # HTTP 处理器
│ │ ├── middleware/ # 中间件
│ │ └── routes/ # 路由注册
│ ├── config/ # 配置管理
│ └── models/ # 数据模型
├── pkg/
│ ├── database/ # 数据库连接
│ └── logger/ # 日志工具
├── config.yaml.example # 配置文件示例
├── go.mod # Go 模块定义
├── go.sum # Go 模块校验
└── README.md # 项目说明
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- 清理日志
开发指南
添加新的 API
- 在
internal/models/下定义数据模型 - 在
internal/api/handlers/下创建处理器 - 在
internal/api/routes/routes.go中注册路由
生成 Swagger 文档
go install github.com/swaggo/swag/cmd/swag@latest
swag init -g cmd/main.go
部署
Docker 部署
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux go build -o ezops cmd/main.go
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/ezops .
COPY config.yaml .
EXPOSE 8080
CMD ["./ezops"]
构建并运行:
docker build -t ezops-backend .
docker run -p 8080:8080 -v $(pwd)/config.yaml:/root/config.yaml ezops-backend
生产环境建议
- 使用反向代理(Nginx/Traefik)
- 配置 HTTPS
- 使用环境变量覆盖配置文件
- 配置日志轮转
- 启用数据库连接池
- 配置监控告警
贡献指南
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/xxx) - 提交更改 (
git commit -am 'Add xxx') - 推送到分支 (
git push origin feature/xxx) - 创建 Pull Request
许可证
MIT License