Files
Nexus/docs/design/specs/2026-06-09-dashboard-24h-metrics-design.md
T
2026-07-08 22:31:31 +08:00

1.7 KiB
Raw Blame History

Dashboard 24h 资源趋势(B-02)设计

背景与目标

仪表盘当前仅展示 Redis 实时快照的平均 CPU/内存;无历史曲线。运维需要查看近 24 小时全舰队 CPU/内存/磁盘变化趋势。

方案对比

方案 优点 缺点
A. 每机时序表 可下钻单机 367 台 × 144 点/天,存储与查询重
B. 舰队聚合采样(选定) 与 Dashboard 概览一致;10min 一条 无单机曲线
C. 仅 Redis 滑动窗口 无 DB 重启丢失;非 SSOT

选定方案 B

  • heartbeat_flush10min)在写 servers 后,从本轮 Redis 心跳计算舰队均值,写入 fleet_metric_samples
  • 保留 7 天API 默认 hours=24
  • 前端 Dashboard「24h 资源趋势」使用 EChartsvue-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 + 单测通过。