跳到主要内容

服务器管理

管理 SayClaw 的物理/云服务器,以及服务器上的 Docker 容器。

最后更新:2026-03-09


1. 当前服务器

服务器 IDIP说明实例数
ai-jp-135.243.76.69GCP Japan,运行 One API + PG + MySQL + Admin API1(小龙)
ai-jp-234.85.76.114GCP Japan,OC 实例集群10
ai-jp-3OC 实例集群(扩容)8

2. API

服务器列表

GET /api/v1/servers

服务器详情

GET /api/v1/servers/:id/detail

返回服务器详细信息 + 关联的实例列表。

服务器指标

GET /api/v1/servers/:id/stats

返回最近的 CPU/内存/磁盘/负载指标。

创建服务器

POST /api/v1/servers
Body: { id?, name, host, ssh_port?, ssh_user?, ssh_key_path?, notes? }

更新服务器

PATCH /api/v1/servers/:id
Body: { name?, host?, ssh_port?, notes? }

删除服务器

DELETE /api/v1/servers/:id

3. 容器管理

容器列表

GET /api/v1/servers/:id/containers

返回该服务器上的 Docker 容器列表(通过 SSH 执行 docker ps)。

容器操作

POST /api/v1/servers/:id/containers/:cid/:action
  • actionstart | stop | restart | logs
  • 通过 SSH 执行 docker <action> <container_id>

4. 服务器指标采集

定时任务 jobServerMetrics(每 5 分钟)自动采集:

指标来源
CPU 使用率top -bn1
内存使用率free -m
磁盘使用率df -h /
系统负载uptime

数据写入 server_metrics 表。

指标查询 API

GET /api/v1/server-metrics/:id?hours=24

5. 数据库

CREATE TABLE servers (
id VARCHAR(36) PRIMARY KEY,
name VARCHAR(100),
host VARCHAR(255) NOT NULL,
ssh_port INT DEFAULT 22,
ssh_user VARCHAR(50) DEFAULT 'root',
ssh_key_path VARCHAR(500),
status VARCHAR(20) DEFAULT 'active',
notes TEXT,
created_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3),
updated_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)
);

CREATE TABLE server_metrics (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
server_id VARCHAR(36) NOT NULL,
cpu_percent DECIMAL(5,2),
memory_percent DECIMAL(5,2),
disk_percent DECIMAL(5,2),
load_1m DECIMAL(5,2),
created_at DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3),
KEY idx_server_time (server_id, created_at)
);

CREATE TABLE containers (
id VARCHAR(100) PRIMARY KEY,
server_id VARCHAR(36),
name VARCHAR(100),
image VARCHAR(255),
status VARCHAR(50),
ports TEXT,
created_at DATETIME(3)
);