- 支持 Windows Agent 构建、安装脚本和统一上报协议 - 增强 RDP 剪贴板、虚拟盘和文件传输能力 - 新增 AIOps 上下文工具、告警 RCA trace 落库和回放接口 - 重构 docs 模块文档并补充终端、堡垒机、监控、AI Agent 设计
211 lines
4.9 KiB
Markdown
211 lines
4.9 KiB
Markdown
# 数据库设计
|
||
|
||
## 概述
|
||
|
||
AIOps 使用 GORM 作为 ORM 框架,支持 SQLite / MySQL / PostgreSQL。
|
||
|
||
- **默认**: SQLite(零配置,数据文件 `backend/data/aiops.db`)
|
||
- **生产**: 推荐使用 MySQL 或 PostgreSQL
|
||
|
||
首次启动时,`AutoMigrate` 会自动创建所有表。
|
||
|
||
## 数据模型
|
||
|
||
### 用户体系
|
||
|
||
#### users - 用户表
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | uint | 主键 |
|
||
| username | string | 用户名(唯一) |
|
||
| password | string | 密码(bcrypt 加密) |
|
||
| email | string | 邮箱 |
|
||
| phone | string | 手机号 |
|
||
| real_name | string | 真实姓名 |
|
||
| avatar | string | 头像 URL |
|
||
| status | int | 状态(1=正常 0=禁用) |
|
||
| last_login | time | 最后登录时间 |
|
||
| created_at | time | 创建时间 |
|
||
| updated_at | time | 更新时间 |
|
||
|
||
#### roles - 角色表
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | uint | 主键 |
|
||
| name | string | 角色名称 |
|
||
| code | string | 角色代码 |
|
||
| description | string | 角色描述 |
|
||
| sort | int | 排序 |
|
||
|
||
#### permissions - 权限表
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | uint | 主键 |
|
||
| name | string | 权限名称 |
|
||
| code | string | 权限代码 |
|
||
| type | string | 权限类型(menu/btn/api) |
|
||
| path | string | 路由路径 |
|
||
| method | string | HTTP 方法 |
|
||
|
||
### 服务器管理
|
||
|
||
#### servers - 服务器表
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | uint | 主键 |
|
||
| name | string | 服务器名称 |
|
||
| hostname | string | 主机名 |
|
||
| ip | string | IP 地址 |
|
||
| port | int | SSH 端口 |
|
||
| os | string | 操作系统 |
|
||
| cpu | int | CPU 核数 |
|
||
| memory | int64 | 内存(MB) |
|
||
| disk | int64 | 磁盘(GB) |
|
||
| status | string | 状态(online/offline/maintenance) |
|
||
| tags | string | 标签(JSON) |
|
||
| cloud_id | uint | 关联云账号 |
|
||
| region | string | 地域 |
|
||
|
||
#### clouds - 云平台表
|
||
#### cloud_accounts - 云账号表
|
||
#### regions - 地域表
|
||
#### domains - 域名表
|
||
|
||
### K8s 管理
|
||
|
||
#### k8s_clusters - K8s 集群表
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | uint | 主键 |
|
||
| name | string | 集群名称 |
|
||
| version | string | K8s 版本 |
|
||
| api_server | string | API Server 地址 |
|
||
| kubeconfig | string | Kubeconfig 内容 |
|
||
| status | string | 集群状态 |
|
||
|
||
#### k8s_nodes, k8s_pods, k8s_deployments, k8s_services, k8s_ingresses
|
||
|
||
### 监控告警
|
||
|
||
#### alert_rules - 告警规则表
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | uint | 主键 |
|
||
| name | string | 规则名称 |
|
||
| description | string | 规则描述 |
|
||
| type | string | 告警类型 |
|
||
| source | string | 数据源 |
|
||
| expression | string | PromQL 表达式 |
|
||
| severity | string | 严重级别(critical/warning/info) |
|
||
| duration | string | 持续时间 |
|
||
| notify_channels | string | 通知渠道(JSON) |
|
||
| enabled | bool | 是否启用 |
|
||
|
||
#### alert_events - 告警事件表
|
||
#### notify_channels - 通知渠道表
|
||
#### metric_data - 指标数据表
|
||
|
||
### CI/CD
|
||
|
||
#### pipelines - 流水线表
|
||
#### pipeline_runs - 流水线执行记录表
|
||
#### app_releases - 应用发布表
|
||
|
||
### 自动化运维
|
||
|
||
#### cron_jobs - 定时任务表
|
||
#### scripts - 脚本表
|
||
#### task_executions - 任务执行记录表
|
||
#### playbooks - Ansible Playbook 表
|
||
|
||
### 审批流程
|
||
|
||
#### approval_templates - 审批模板表
|
||
#### approval_processes - 审批流程表
|
||
#### approval_steps - 审批步骤表
|
||
|
||
### 其他
|
||
|
||
#### navigation_groups - 导航分组表
|
||
#### navigation_links - 导航链接表
|
||
#### audit_logs - 审计日志表
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| id | uint | 主键 |
|
||
| user_id | *uint | 操作用户 ID |
|
||
| module | string | 模块 |
|
||
| action | string | 操作类型 |
|
||
| resource | string | 资源标识 |
|
||
| request | string | 请求内容 |
|
||
| response | string | 响应内容 |
|
||
| error | string | 错误信息 |
|
||
| ip | string | 操作 IP |
|
||
| created_at | time | 操作时间 |
|
||
|
||
## 表关系
|
||
|
||
```
|
||
users ──< user_roles >── roles ──< role_permissions >── permissions
|
||
|
||
servers ──> cloud_accounts ──> clouds
|
||
servers ──> regions
|
||
|
||
alert_rules ──< alert_events
|
||
alert_rules ──> notify_channels
|
||
|
||
pipelines ──< pipeline_runs
|
||
app_releases ──> pipelines
|
||
|
||
approval_templates ──< approval_processes ──< approval_steps
|
||
|
||
navigation_groups ──< navigation_links
|
||
```
|
||
|
||
## AutoMigrate
|
||
|
||
表结构在 `backend/pkg/database/database.go` 中定义,服务启动时自动执行:
|
||
|
||
```go
|
||
func AutoMigrate(db *gorm.DB) error {
|
||
return db.AutoMigrate(
|
||
&models.User{}, &models.Role{}, &models.Permission{},
|
||
&models.Server{}, &models.Cloud{}, ...
|
||
)
|
||
}
|
||
```
|
||
|
||
## 切换数据库
|
||
|
||
### MySQL
|
||
|
||
编辑 `backend/config.yaml`:
|
||
```yaml
|
||
database:
|
||
driver: mysql
|
||
host: localhost
|
||
port: 3306
|
||
user: root
|
||
password: your_password
|
||
dbname: aiops
|
||
charset: utf8mb4
|
||
```
|
||
|
||
### PostgreSQL
|
||
|
||
```yaml
|
||
database:
|
||
driver: postgres
|
||
host: localhost
|
||
port: 5432
|
||
user: postgres
|
||
password: your_password
|
||
dbname: aiops
|
||
```
|