mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-28 07:36:38 +08:00
1.9 KiB
1.9 KiB
055 - 隧道质量定时探测 + 实时展示 + 历史图表
背景
当前隧道质量检测是手动触发的:用户点击"诊断"按钮 → 后端调用节点 TcpPing → 返回结果。 需求:改为后端定时(每10秒)自动探测所有启用隧道的质量(入口→出口延迟、出口→Bing延迟), 结果保留历史(24h),前端隧道 Tab 实时展示 + 图表历史趋势。
设计原则:与服务监控复用
| 复用点 | 服务监控 | 隧道质量 |
|---|---|---|
| 调度方式 | health.Checker.Start(ctx) via jobs.go |
tunnelQualityProber.Start(ctx) via jobs.go |
| 存储模式 | service_monitor_result (history, insert) |
tunnel_quality (history, insert) |
| 清理方式 | PruneServiceMonitorResults(olderThanMs) |
PruneTunnelQualityResults(olderThanMs) |
| 最新查询 | GetLatestServiceMonitorResults() (window func) |
GetLatestTunnelQualities() (window func) |
| 历史查询 | GetServiceMonitorResults(id, limit) |
GetTunnelQualityHistory(id, start, end) |
| API 模式 | GET /monitor/services/{id}/results |
GET /monitor/tunnels/{id}/quality |
| 前端图表 | Recharts LineChart (延迟趋势) | Recharts LineChart (同样模式) |
任务清单
- 1.
TunnelQualitymodel 改为历史存储(composite index, 非 unique) - 2. Repo 改为 insert(非 upsert),复用服务监控的查询模式
- 3. 添加
PruneTunnelQualityResults+GetLatestTunnelQualities+GetTunnelQualityHistory - 4. Prober 生命周期集成到
jobs.go(与 healthCheck 同级) - 5. Prober 添加 24h 清理周期
- 6. 添加 API
GET /monitor/tunnels/{id}/quality返回历史 - 7. 前端添加
getMonitorTunnelQualityHistory()API - 8. 前端详情页添加质量趋势图表(复用服务监控图表组件模式)
- 9. Go 编译 + 测试通过
- 10. TypeScript 编译通过