Files
aiops/backend/README.md
T

8.7 KiB
Raw Blame History

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

配置

  1. 复制配置文件示例:
cp config.yaml.example config.yaml
  1. 编辑 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 文档:

项目结构

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

  1. 在 internal/models/ 下定义数据模型
  2. 在 internal/api/handlers/ 下创建处理器
  3. 在 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

生产环境建议

  1. 使用反向代理(Nginx/Traefik)
  2. 配置 HTTPS
  3. 使用环境变量覆盖配置文件
  4. 配置日志轮转
  5. 启用数据库连接池
  6. 配置监控告警

贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/xxx)
  3. 提交更改 (git commit -am 'Add xxx')
  4. 推送到分支 (git push origin feature/xxx)
  5. 创建 Pull Request

许可证

MIT License