feat: 完善堡垒机与 Agent 智能运维能力
- 支持 Windows Agent 构建、安装脚本和统一上报协议 - 增强 RDP 剪贴板、虚拟盘和文件传输能力 - 新增 AIOps 上下文工具、告警 RCA trace 落库和回放接口 - 重构 docs 模块文档并补充终端、堡垒机、监控、AI Agent 设计
This commit is contained in:
1 parent
a9513c2056
commit
e0d652d211
169 files changed
+12192
-9116
No files matched your search
@@ -0,0 +1,8 @@
|
||||
# 参考文档
|
||||
|
||||
本目录保存跨模块的接口和数据结构参考。模块级实现细节优先查看对应模块目录。// Logan.Li
|
||||
|
||||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| [api-reference.md](./api-reference.md) | HTTP API 概览 |
|
||||
| [database-schema.md](./database-schema.md) | 数据库表和模型概览 |
|
||||
@@ -0,0 +1,662 @@
|
||||
# API 接口文档
|
||||
|
||||
## 基础信息
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|---|
|
||||
| Base URL | `http://localhost:8080/api/v1` |
|
||||
| 认证方式 | JWT Bearer Token |
|
||||
| 请求格式 | JSON |
|
||||
| 响应格式 | JSON |
|
||||
|
||||
## 通用响应结构
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": {}
|
||||
}
|
||||
```
|
||||
|
||||
分页响应:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"list": [],
|
||||
"total": 100
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 认证
|
||||
|
||||
### POST /auth/login
|
||||
|
||||
用户登录,获取 JWT Token。
|
||||
|
||||
**请求体:**
|
||||
```json
|
||||
{
|
||||
"username": "admin",
|
||||
"password": "admin123"
|
||||
}
|
||||
```
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "登录成功",
|
||||
"data": {
|
||||
"token": "eyJhbGciOiJIUzI1NiIs...",
|
||||
"expires_in": 86400,
|
||||
"user": {
|
||||
"id": 1,
|
||||
"username": "admin",
|
||||
"real_name": "管理员"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### POST /auth/register
|
||||
|
||||
用户注册。
|
||||
|
||||
### GET /user/profile
|
||||
|
||||
获取当前登录用户信息。(需认证)
|
||||
|
||||
### PUT /user/profile
|
||||
|
||||
更新当前用户信息。(需认证)
|
||||
|
||||
### PUT /user/password
|
||||
|
||||
修改密码。(需认证)
|
||||
|
||||
## 用户管理(管理员)
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/admin/users` | 用户列表 |
|
||||
| GET | `/admin/users/:id` | 用户详情 |
|
||||
| POST | `/admin/users` | 创建用户 |
|
||||
| PUT | `/admin/users/:id` | 更新用户 |
|
||||
| DELETE | `/admin/users/:id` | 删除用户 |
|
||||
|
||||
## 仪表盘
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/dashboard/stats` | 统计数据 |
|
||||
| GET | `/dashboard/recent-alerts` | 最近告警 |
|
||||
| GET | `/dashboard/recent-releases` | 最近发布 |
|
||||
| GET | `/dashboard/metrics` | 性能指标 |
|
||||
|
||||
## 服务器管理
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/servers` | 服务器列表 |
|
||||
| GET | `/servers/stats` | 服务器统计 |
|
||||
| GET | `/servers/:id` | 服务器详情 |
|
||||
| POST | `/servers` | 添加服务器 |
|
||||
| PUT | `/servers/:id` | 更新服务器 |
|
||||
| DELETE | `/servers/:id` | 删除服务器 |
|
||||
| POST | `/servers/batch-delete` | 批量删除 |
|
||||
|
||||
## 云平台管理
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/cloud-accounts` | 云账号列表 |
|
||||
| POST | `/cloud-accounts` | 添加云账号 |
|
||||
| DELETE | `/cloud-accounts/:id` | 删除云账号 |
|
||||
| GET | `/domains` | 域名列表 |
|
||||
| POST | `/domains` | 添加域名 |
|
||||
| DELETE | `/domains/:id` | 删除域名 |
|
||||
|
||||
## K8s 集群
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/k8s-clusters` | 集群列表 |
|
||||
| GET | `/k8s-clusters/:id` | 集群详情 |
|
||||
| POST | `/k8s-clusters` | 添加集群 |
|
||||
| PUT | `/k8s-clusters/:id` | 更新集群 |
|
||||
| DELETE | `/k8s-clusters/:id` | 删除集群 |
|
||||
| GET | `/k8s-clusters/:id/nodes` | 节点列表 |
|
||||
| GET | `/k8s-clusters/:id/pods` | Pod 列表 |
|
||||
| GET | `/k8s-clusters/:id/deployments` | Deployment 列表 |
|
||||
| GET | `/k8s-clusters/:id/services` | Service 列表 |
|
||||
| GET | `/k8s-clusters/:id/ingresses` | Ingress 列表 |
|
||||
|
||||
## 监控告警
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/alerts` | 告警事件列表 |
|
||||
| GET | `/alerts/rules` | 告警规则列表 |
|
||||
| POST | `/alerts/rules` | 创建告警规则 |
|
||||
| PUT | `/alerts/rules/:id` | 更新规则 |
|
||||
| DELETE | `/alerts/rules/:id` | 删除规则 |
|
||||
| POST | `/alerts/rules/:id/toggle` | 启用/禁用规则 |
|
||||
| POST | `/alerts/:id/ack` | 确认告警 |
|
||||
|
||||
## CI/CD 流水线
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/pipelines` | 流水线列表 |
|
||||
| POST | `/pipelines` | 创建流水线 |
|
||||
| GET | `/pipelines/:id` | 流水线详情 |
|
||||
| PUT | `/pipelines/:id` | 更新流水线 |
|
||||
| DELETE | `/pipelines/:id` | 删除流水线 |
|
||||
| POST | `/pipelines/:id/trigger` | 触发流水线 |
|
||||
| GET | `/pipelines/:id/runs` | 执行记录 |
|
||||
|
||||
## 应用发布
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/releases` | 发布列表 |
|
||||
| POST | `/releases` | 创建发布 |
|
||||
| POST | `/releases/:id/approve` | 审批发布 |
|
||||
| POST | `/releases/:id/deploy` | 部署发布 |
|
||||
| POST | `/releases/:id/rollback` | 回滚发布 |
|
||||
|
||||
## 自动化运维
|
||||
|
||||
### 定时任务
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/cron-jobs` | 任务列表 |
|
||||
| POST | `/cron-jobs` | 创建任务 |
|
||||
| GET | `/cron-jobs/:id` | 任务详情 |
|
||||
| PUT | `/cron-jobs/:id` | 更新任务 |
|
||||
| DELETE | `/cron-jobs/:id` | 删除任务 |
|
||||
| POST | `/cron-jobs/:id/toggle` | 启用/禁用 |
|
||||
| POST | `/cron-jobs/:id/execute` | 手动执行 |
|
||||
|
||||
### 脚本管理
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/scripts` | 脚本列表 |
|
||||
| POST | `/scripts` | 创建脚本 |
|
||||
| GET | `/scripts/:id` | 脚本详情 |
|
||||
| PUT | `/scripts/:id` | 更新脚本 |
|
||||
| DELETE | `/scripts/:id` | 删除脚本 |
|
||||
| POST | `/scripts/:id/execute` | 执行脚本 |
|
||||
|
||||
## 审批流程
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/approvals/templates` | 审批模板列表 |
|
||||
| POST | `/approvals/templates` | 创建模板 |
|
||||
| GET | `/approvals/templates/:id` | 模板详情 |
|
||||
| PUT | `/approvals/templates/:id` | 更新模板 |
|
||||
| DELETE | `/approvals/templates/:id` | 删除模板 |
|
||||
| GET | `/approvals/processes` | 审批流程列表 |
|
||||
| POST | `/approvals/processes` | 发起审批 |
|
||||
| GET | `/approvals/processes/:id` | 流程详情 |
|
||||
| POST | `/approvals/processes/:id/approve` | 审批通过 |
|
||||
| POST | `/approvals/processes/:id/reject` | 审批驳回 |
|
||||
|
||||
## 导航管理
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/navigations/groups` | 导航分组列表 |
|
||||
| POST | `/navigations/groups` | 创建分组 |
|
||||
| PUT | `/navigations/groups/:id` | 更新分组 |
|
||||
| DELETE | `/navigations/groups/:id` | 删除分组 |
|
||||
| GET | `/navigations/links` | 导航链接列表 |
|
||||
| POST | `/navigations/links` | 创建链接 |
|
||||
| PUT | `/navigations/links/:id` | 更新链接 |
|
||||
| DELETE | `/navigations/links/:id` | 删除链接 |
|
||||
| POST | `/navigations/links/:id/favorite` | 收藏/取消收藏 |
|
||||
|
||||
## 审计日志
|
||||
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/audit/logs` | 审计日志列表 |
|
||||
| GET | `/audit/logs/:id` | 日志详情 |
|
||||
| GET | `/audit/modules` | 审计模块列表 |
|
||||
| GET | `/audit/actions` | 审计操作列表 |
|
||||
| GET | `/audit/logs/export` | 导出日志 |
|
||||
| GET | `/audit/statistics` | 审计统计 |
|
||||
| POST | `/audit/logs/clear` | 清空日志 |
|
||||
|
||||
## 健康检查
|
||||
|
||||
### GET /health
|
||||
|
||||
无需认证。
|
||||
|
||||
```json
|
||||
{
|
||||
"status": "ok"
|
||||
}
|
||||
```
|
||||
|
||||
### GET /version
|
||||
|
||||
无需认证。
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "dev",
|
||||
"build_time": "unknown",
|
||||
"git_commit": "unknown"
|
||||
}
|
||||
```
|
||||
|
||||
## Agent 监控
|
||||
|
||||
### POST /agent/report — Agent 上报指标 (无需 JWT)
|
||||
|
||||
Agent 向服务端上报主机性能指标数据。
|
||||
|
||||
**请求体:**
|
||||
```json
|
||||
{
|
||||
"hostname": "web-server-01",
|
||||
"cpu": {
|
||||
"usage_percent": 45.2,
|
||||
"cores": 8
|
||||
},
|
||||
"memory": {
|
||||
"total_gb": 16,
|
||||
"used_gb": 8.5,
|
||||
"usage_percent": 53.1
|
||||
},
|
||||
"disk": [
|
||||
{
|
||||
"mount": "/",
|
||||
"total_gb": 100,
|
||||
"used_gb": 60,
|
||||
"usage_percent": 60.0
|
||||
}
|
||||
],
|
||||
"network": {
|
||||
"rx_bytes": 1024000,
|
||||
"tx_bytes": 512000
|
||||
},
|
||||
"uptime_seconds": 864000
|
||||
}
|
||||
```
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "上报成功",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
### GET /agent/latest — 各主机最新指标 (需 JWT)
|
||||
|
||||
获取所有在线主机的最近一次上报指标。仅返回 3 分钟内活跃且匹配 servers 表的主机。
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": [
|
||||
{
|
||||
"hostname": "web-server-01",
|
||||
"cpu": { "usage_percent": 45.2 },
|
||||
"memory": { "usage_percent": 53.1 },
|
||||
"disk": [{"usage_percent": 60.0}],
|
||||
"network": { "rx_bytes": 1024000, "tx_bytes": 512000 },
|
||||
"uptime_seconds": 864000,
|
||||
"reported_at": "2025-06-18T10:30:00Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### GET /agent/history/:hostname — 历史趋势 (?hours=N)
|
||||
|
||||
查询指定主机在最近 N 小时内的指标历史数据。
|
||||
|
||||
**查询参数:**
|
||||
|
||||
| 参数 | 类型 | 默认值 | 说明 |
|
||||
|------|------|--------|------|
|
||||
| `hours` | int | 24 | 查询最近多少小时的数据 |
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": [
|
||||
{
|
||||
"hostname": "web-server-01",
|
||||
"cpu": { "usage_percent": 45.2 },
|
||||
"memory": { "usage_percent": 53.1 },
|
||||
"reported_at": "2025-06-18T10:30:00Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Agent 告警规则
|
||||
|
||||
#### GET /agent/rules — 规则列表
|
||||
|
||||
获取所有 Agent 告警规则。
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "CPU 使用率过高",
|
||||
"metric": "cpu.usage_percent",
|
||||
"condition": ">",
|
||||
"threshold": 80,
|
||||
"hostname": "*",
|
||||
"enabled": true,
|
||||
"created_at": "2025-06-18T10:00:00Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### POST /agent/rules — 创建规则
|
||||
|
||||
创建一条 Agent 告警规则。
|
||||
|
||||
**请求体:**
|
||||
```json
|
||||
{
|
||||
"name": "CPU 使用率过高",
|
||||
"metric": "cpu.usage_percent",
|
||||
"condition": ">",
|
||||
"threshold": 80,
|
||||
"hostname": "*"
|
||||
}
|
||||
```
|
||||
|
||||
#### POST /agent/rules/quick-setup — 一键创建默认规则
|
||||
|
||||
一键创建默认告警规则(CPU / 内存 / 磁盘 / 网络,阈值 80%),作用于所有在线主机。
|
||||
|
||||
**请求体:** 无(可选传空 JSON `{}`)
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "默认规则创建成功",
|
||||
"data": {
|
||||
"created": 4
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
默认创建的规则包括:
|
||||
|
||||
| 规则名称 | 指标 | 条件 | 阈值 |
|
||||
|----------|------|------|------|
|
||||
| CPU 使用率过高 | `cpu.usage_percent` | `>` | 80 |
|
||||
| 内存使用率过高 | `memory.usage_percent` | `>` | 80 |
|
||||
| 磁盘使用率过高 | `disk.usage_percent` | `>` | 80 |
|
||||
| 网络带宽过高 | `network.total_bytes` | `>` | 80 |
|
||||
|
||||
#### PUT /agent/rules/:id — 更新规则
|
||||
|
||||
更新指定告警规则。
|
||||
|
||||
#### DELETE /agent/rules/:id — 删除规则
|
||||
|
||||
删除指定告警规则。
|
||||
|
||||
---
|
||||
|
||||
### Agent 告警事件
|
||||
|
||||
#### GET /agent/alerts — 告警事件列表
|
||||
|
||||
获取 Agent 触发的告警事件列表。
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"list": [
|
||||
{
|
||||
"id": 1,
|
||||
"rule_id": 1,
|
||||
"rule_name": "CPU 使用率过高",
|
||||
"hostname": "web-server-01",
|
||||
"metric": "cpu.usage_percent",
|
||||
"value": 92.5,
|
||||
"threshold": 80,
|
||||
"status": "firing",
|
||||
"fired_at": "2025-06-18T10:30:00Z",
|
||||
"resolved_at": null
|
||||
}
|
||||
],
|
||||
"total": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### POST /agent/alerts/:id/resolve — 恢复告警
|
||||
|
||||
手动将指定告警事件标记为已恢复。
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "告警已恢复",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Agent 远程任务
|
||||
|
||||
#### POST /agent/tasks — 下发远程任务
|
||||
|
||||
向指定主机下发远程任务(如执行脚本、重启服务等)。
|
||||
|
||||
**请求体:**
|
||||
```json
|
||||
{
|
||||
"hostname": "web-server-01",
|
||||
"command": "systemctl restart nginx",
|
||||
"description": "重启 Nginx 服务",
|
||||
"timeout_seconds": 30
|
||||
}
|
||||
```
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "任务已下发",
|
||||
"data": {
|
||||
"task_id": "550e8400-e29b-41d4-a716-446655440000",
|
||||
"status": "pending"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### GET /agent/tasks — 任务列表
|
||||
|
||||
获取所有远程任务的列表(支持分页和筛选)。
|
||||
|
||||
**查询参数:**
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| `hostname` | string | 按主机名筛选 |
|
||||
| `status` | string | 按状态筛选:`pending`、`running`、`success`、`failed` |
|
||||
| `page` | int | 页码 (默认 1) |
|
||||
| `page_size` | int | 每页数量 (默认 20) |
|
||||
|
||||
#### GET /agent/tasks/:id — 任务详情
|
||||
|
||||
获取指定远程任务的详细信息及执行结果。
|
||||
|
||||
#### GET /agent/tasks/poll?hostname=xx — Agent 拉取任务 (无需 JWT)
|
||||
|
||||
Agent 主动轮询拉取分配给自己的待执行任务。
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": [
|
||||
{
|
||||
"task_id": "550e8400-e29b-41d4-a716-446655440000",
|
||||
"command": "systemctl restart nginx",
|
||||
"timeout_seconds": 30
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
#### POST /agent/tasks/:task_id/result — Agent 回传结果 (无需 JWT)
|
||||
|
||||
Agent 执行完任务后,回传执行结果。
|
||||
|
||||
**请求体:**
|
||||
```json
|
||||
{
|
||||
"status": "success",
|
||||
"stdout": "nginx restarted successfully\n",
|
||||
"stderr": "",
|
||||
"exit_code": 0,
|
||||
"duration_ms": 2500
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Agent K线聚合
|
||||
|
||||
#### POST /agent/aggregate — 触发聚合
|
||||
|
||||
手动触发 K 线数据聚合任务(通常由定时任务自动执行)。
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "聚合任务已触发",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
#### GET /agent/kline — 查询 K 线
|
||||
|
||||
查询主机性能指标的 K 线(聚合)数据。
|
||||
|
||||
**查询参数:**
|
||||
|
||||
| 参数 | 类型 | 必填 | 说明 |
|
||||
|------|------|------|------|
|
||||
| `hostname` | string | 否 | 主机名,不传则返回所有主机 |
|
||||
| `metric` | string | 否 | 指标名,如 `cpu.usage_percent` |
|
||||
| `interval` | string | 否 | 聚合间隔:`1m`、`5m`、`15m`、`1h`、`1d` |
|
||||
| `from` | string | 否 | 起始时间 (ISO 8601) |
|
||||
| `to` | string | 否 | 结束时间 (ISO 8601) |
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": [
|
||||
{
|
||||
"hostname": "web-server-01",
|
||||
"metric": "cpu.usage_percent",
|
||||
"timestamp": "2025-06-18T10:00:00Z",
|
||||
"open": 45.0,
|
||||
"high": 92.5,
|
||||
"low": 40.0,
|
||||
"close": 55.0,
|
||||
"avg": 53.2,
|
||||
"count": 60
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Agent 二进制分发 (无需 JWT)
|
||||
|
||||
提供 Agent 二进制文件及安装脚本的下载。
|
||||
|
||||
#### GET /agent/arch — 版本信息 + 下载链接
|
||||
|
||||
获取当前 Agent 版本信息及各架构对应的下载链接。
|
||||
|
||||
**响应:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"version": "v1.2.3",
|
||||
"released_at": "2025-06-18",
|
||||
"downloads": {
|
||||
"linux_amd64": "/api/v1/agent/aiops-agent-linux-amd64",
|
||||
"linux_arm64": "/api/v1/agent/aiops-agent-linux-arm64",
|
||||
"darwin_arm64": "/api/v1/agent/aiops-agent-darwin-arm64"
|
||||
},
|
||||
"install_script": "/api/v1/agent/install.sh"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### GET /agent/aiops-agent-linux-amd64 — x86_64 二进制
|
||||
|
||||
下载 Linux x86_64 架构的 Agent 二进制文件。
|
||||
|
||||
响应为二进制流 (`Content-Type: application/octet-stream`)。
|
||||
|
||||
#### GET /agent/aiops-agent-linux-arm64 — ARM64 二进制
|
||||
|
||||
下载 Linux ARM64 架构的 Agent 二进制文件。
|
||||
|
||||
响应为二进制流 (`Content-Type: application/octet-stream`)。
|
||||
|
||||
#### GET /agent/aiops-agent-darwin-arm64 — macOS 二进制
|
||||
|
||||
下载 macOS Apple Silicon (ARM64) 架构的 Agent 二进制文件。
|
||||
|
||||
响应为二进制流 (`Content-Type: application/octet-stream`)。
|
||||
|
||||
#### GET /agent/install.sh — 一键安装脚本
|
||||
|
||||
下载 Agent 一键安装脚本。
|
||||
|
||||
响应为 Shell 脚本文本 (`Content-Type: text/plain`)。
|
||||
@@ -0,0 +1,210 @@
|
||||
# 数据库设计
|
||||
|
||||
## 概述
|
||||
|
||||
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
|
||||
```
|
||||
Reference in new issue
Block a user