71 lines
3.1 KiB
Markdown
71 lines
3.1 KiB
Markdown
# 审计 — 监测探针 SSH 优先 + 移除 IO + 宝塔圆环 UI
|
||
|
||
**Changelog**:
|
||
- `docs/changelog/2026-06-14-watch-probe-ssh-first-no-io-skip.md`
|
||
- `docs/changelog/2026-06-14-watch-remove-io-metrics.md`
|
||
- `docs/changelog/2026-06-14-watch-metric-ring-baota-style.md`
|
||
|
||
**范围**:实时监测探针与槽卡片 UI,对齐宝塔 CPU/内存/磁盘/负载展示。
|
||
|
||
## 审计范围
|
||
|
||
| 文件 | 变更 | 状态 |
|
||
|------|------|------|
|
||
| `server/background/watch_probe_runner.py` | 5s 一律 SSH;去掉 IO 速率差分 | ☑ |
|
||
| `server/utils/watch_metrics.py` | merge/live 优先 SSH;去掉 bps | ☑ |
|
||
| `server/infrastructure/ssh/remote_probe.py` | 精简探针命令;load 补位 | ☑ |
|
||
| `tests/test_watch_metrics.py` | 适配无 IO / SSH 优先 | ☑ |
|
||
| `frontend/src/components/watch/WatchMetricRing.vue` | 新建圆环组件 | ☑ |
|
||
| `frontend/src/components/watch/WatchSlotCard.vue` | 三圆环 + 负载圆环 | ☑ |
|
||
| `frontend/src/components/watch/WatchProbeRecordsTable.vue` | 去掉 IO 列 | ☑ |
|
||
| `frontend/src/components/watch/WatchTrendChart.vue` | 去掉 IO 曲线 | ☑ |
|
||
| `frontend/src/components/watch/WatchSparkline.vue` | 去掉 IO 指标 | ☑ |
|
||
| `frontend/src/composables/useWatchPins.ts` | 类型去掉 bps | ☑ |
|
||
| `frontend/src/pages/WatchMetricsPage.vue` | 去掉 IO 展示 | ☑ |
|
||
| `frontend/src/utils/watchFormat.ts` | `metricRingColor` / `loadUsagePct` | ☑ |
|
||
| `frontend/src/components/watch/WatchMetricBar.vue` | 删除(横条弃用) | ☑ |
|
||
|
||
## Step 3 规则扫描
|
||
|
||
| H | 规则 | 结论 |
|
||
|---|------|------|
|
||
| H1 | SSH 凭据与命令注入 | SAFE — 仍走既有 `remote_probe` 封装;无用户输入拼入 shell |
|
||
| H2 | 探针频率与负载 | NOTE — 有 SSH 时每 5s 一次 SSH(与宝塔同源,用户明确要求) |
|
||
| H3 | 数据合并优先级 | SAFE — SSH 覆盖 Agent stale 心跳;SSH 全失败才回退 Agent |
|
||
| H4 | 前端 XSS | SAFE — 圆环仅数值与固定标签;tooltip 文本插值 |
|
||
| H5 | IO 字段移除 | SAFE — DB 列保留 NULL;API 不再推送 bps |
|
||
| H6 | 密钥 / 凭据 | SAFE — 无 `.env` 或密钥变更 |
|
||
|
||
## Closure
|
||
|
||
| H | 判定 | 依据 |
|
||
|---|------|------|
|
||
| H1 | SAFE | `remote_probe.py` 固定 psutil 脚本 |
|
||
| H2 | 接受 | 用户要求与宝塔一致;仅监测开启槽 |
|
||
| H3 | SAFE | `merge_redis_and_ssh` CPU/mem/disk/load 优先 SSH |
|
||
| H4 | SAFE | `WatchMetricRing.vue` 无 `v-html` |
|
||
| H5 | SAFE | `to_live_dict` 无 bps 键 |
|
||
| H6 | SAFE | diff 无 secrets |
|
||
|
||
## 验证
|
||
|
||
| 项 | 结果 |
|
||
|----|------|
|
||
| `pytest tests/test_watch_metrics.py tests/test_watch_pins.py -q` | 22 passed(本机无 psutil 的 SSH 本地探针 1 skip/fail 为环境) |
|
||
| `cd frontend && npx vite build` | ✅ |
|
||
| `bash deploy/pre_deploy_check.sh` | 部署前执行 |
|
||
|
||
## DoD
|
||
|
||
- [x] changelog 三份(≥10 行)
|
||
- [x] 本审计含 Step 3 / Closure / DoD / 文件清单
|
||
- [x] `vite build` 通过
|
||
- [ ] 提交并 push
|
||
- [ ] 生产 `/health` ok、`/app/` 200
|
||
- [ ] 浏览器终验:`#/watch-metrics` 圆环与宝塔数值接近
|
||
|
||
## 部署说明
|
||
|
||
- **后端 + 前端**:需 API 重启(Docker upgrade)+ `vite build` 同步 `web/app`
|
||
- **无** 数据库迁移
|