1.7 KiB
1.7 KiB
Dashboard 24h 资源趋势(B-02)设计
背景与目标
仪表盘当前仅展示 Redis 实时快照的平均 CPU/内存;无历史曲线。运维需要查看近 24 小时全舰队 CPU/内存/磁盘变化趋势。
方案对比
| 方案 | 优点 | 缺点 |
|---|---|---|
| A. 每机时序表 | 可下钻单机 | 367 台 × 144 点/天,存储与查询重 |
| B. 舰队聚合采样(选定) | 与 Dashboard 概览一致;10min 一条 | 无单机曲线 |
| C. 仅 Redis 滑动窗口 | 无 DB | 重启丢失;非 SSOT |
选定方案 B
heartbeat_flush(10min)在写servers后,从本轮 Redis 心跳计算舰队均值,写入fleet_metric_samples。- 保留 7 天;API 默认
hours=24。 - 前端 Dashboard「24h 资源趋势」使用 ECharts(
vue-echarts,按需分包):四序列、图例、十字线 tooltip、dataZoom。
数据模型
fleet_metric_samples (
id INT PK,
recorded_at DATETIME NOT NULL, -- UTC naive
online_count INT,
sample_count INT,
cpu_avg FLOAT NULL,
mem_avg FLOAT NULL,
disk_avg FLOAT NULL,
INDEX (recorded_at)
)
API
GET /api/servers/fleet-metrics?hours=24
{
"hours": 24,
"interval_minutes": 10,
"points": [
{ "recorded_at": "2026-06-09 12:00:00", "cpu_avg": 12.5, "mem_avg": 45.2, "disk_avg": 60.1, "online_count": 366 }
]
}
安全与性能
- 需
get_current_admin;只读聚合。 - 每 10min 1 行;7 天约 1008 行,可忽略。
- purge 在 flush 循环末尾批量 DELETE。
验收标准
- 部署 24h 后曲线有数据;新环境至少显示空状态文案。
- 时间轴按北京时间展示。
local_verify+ 单测通过。