Files
Logan.Li 4010b4fd70 build: 镜像内置 Linux amd64/arm64 + Windows amd64 三平台 Agent,固定版本 v1.0.1
- Dockerfile/backend/Dockerfile: 显式交叉编译 linux-amd64、linux-arm64、
  windows-amd64.exe(原实现只产出容器目标架构,ARM 主机会下载 404)
- 移除 darwin-arm64:服务器采集场景极少见,不再产出也不在清单中声明
- router/agent_static.go、run.sh、文档同步对齐实际产出清单

// Logan.Li
2026-09-14 08:23:36 +00:00

663 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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",
"windows_amd64": "/api/v1/agent/aiops-agent-windows-amd64.exe"
},
"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`)。