diff --git a/backend/cmd/main.go b/backend/cmd/main.go index f7b89d9..16aab80 100644 --- a/backend/cmd/main.go +++ b/backend/cmd/main.go @@ -164,6 +164,18 @@ func main() { // 注册路由 routes.Register(r, db, log, cfg, cache) + // 定期清理旧的 agent 上报数据(保留 7 天,防止表膨胀影响查询性能) + go func() { + ticker := time.NewTicker(24 * time.Hour) + defer ticker.Stop() + for range ticker.C { + result := db.Exec("DELETE FROM monitor_agent_reports WHERE report_time < DATE_SUB(NOW(), INTERVAL 7 DAY)") + if result.RowsAffected > 0 { + log.Info("清理过期的 agent 上报数据", zap.Int64("rows", result.RowsAffected)) + } + } + }() + // 前端静态文件服务(go:embed 模式,二进制部署用) // Logan.Li setupFrontend(r) diff --git a/frontend/src/components/dashboard/Dashboard.tsx b/frontend/src/components/dashboard/Dashboard.tsx index 9d1e114..b22bf19 100644 --- a/frontend/src/components/dashboard/Dashboard.tsx +++ b/frontend/src/components/dashboard/Dashboard.tsx @@ -62,7 +62,7 @@ export function Dashboard() { console.error('Failed to fetch dashboard releases:', e); return null; }), - dashboardStatsApi.getMetrics(24).catch((e) => { + dashboardStatsApi.getMetrics(6).catch((e) => { console.error('Failed to fetch metrics:', e); return []; }), @@ -85,6 +85,9 @@ export function Dashboard() { useEffect(() => { refreshData(); + // 每 5 分钟自动刷新 + const interval = setInterval(refreshData, 5 * 60 * 1000); + return () => clearInterval(interval); }, [refreshData]); if (initialLoading) {