diff --git a/atsf_agent/agent.json b/atsf_agent/agent.json index 0c41f8f6..a436fe65 100644 --- a/atsf_agent/agent.json +++ b/atsf_agent/agent.json @@ -1,6 +1,6 @@ { "server_url": "http://127.0.0.1:3000", - "agent_token": "123", + "agent_token": "2bae8c0eef58c3d7cf84464d983052ca", "data_dir": "./data", "openresty_container_name": "atsflare-openresty", "openresty_docker_image": "openresty/openresty:alpine", diff --git a/atsf_agent/internal/agent/runner.go b/atsf_agent/internal/agent/runner.go index 496172b7..07734a8a 100644 --- a/atsf_agent/internal/agent/runner.go +++ b/atsf_agent/internal/agent/runner.go @@ -113,12 +113,9 @@ func (r *Runner) Run(ctx context.Context) error { if !r.hasAgentToken() { continue } - log.Printf("agent sync tick: node_id=%s", nodeID) if err = r.SyncService.SyncOnce(ctx); err != nil { r.recordSyncError(err) log.Printf("agent sync failed: %v", err) - } else { - log.Printf("agent sync completed") } } } diff --git a/atsf_agent/internal/httpclient/client.go b/atsf_agent/internal/httpclient/client.go index cd744e50..265f65d4 100644 --- a/atsf_agent/internal/httpclient/client.go +++ b/atsf_agent/internal/httpclient/client.go @@ -54,7 +54,6 @@ func (c *Client) Heartbeat(ctx context.Context, payload protocol.NodePayload) (* } func (c *Client) GetActiveConfig(ctx context.Context) (*protocol.ActiveConfigResponse, error) { - log.Printf("http get active config request") resp := protocol.APIResponse[protocol.ActiveConfigResponse]{} if err := c.getJSON(ctx, "/api/agent/config-versions/active", &resp); err != nil { return nil, err @@ -100,9 +99,6 @@ func (c *Client) postJSON(ctx context.Context, path string, body any, target any } func (c *Client) do(req *http.Request, target any) error { - if !isHeartbeatRequest(req) { - log.Printf("http request start: method=%s path=%s", req.Method, req.URL.Path) - } res, err := c.httpClient.Do(req) if err != nil { log.Printf("http request failed: method=%s path=%s error=%v", req.Method, req.URL.Path, err) @@ -123,24 +119,11 @@ func (c *Client) do(req *http.Request, target any) error { log.Printf("http api response failed: method=%s path=%s message=%s", req.Method, req.URL.Path, wrapper.Message) return errors.New(wrapper.Message) } - if !isHeartbeatRequest(req) { - log.Printf("http request succeeded: method=%s path=%s", req.Method, req.URL.Path) - } return nil } if err = json.NewDecoder(res.Body).Decode(target); err != nil { log.Printf("http response decode failed: method=%s path=%s error=%v", req.Method, req.URL.Path, err) return err } - if !isHeartbeatRequest(req) { - log.Printf("http request succeeded: method=%s path=%s", req.Method, req.URL.Path) - } return nil } - -func isHeartbeatRequest(req *http.Request) bool { - if req == nil || req.URL == nil { - return false - } - return req.Method == http.MethodPost && req.URL.Path == "/api/agent/nodes/heartbeat" -} diff --git a/atsf_agent/internal/nginx/manager.go b/atsf_agent/internal/nginx/manager.go index 98e9c8cc..1a939a90 100644 --- a/atsf_agent/internal/nginx/manager.go +++ b/atsf_agent/internal/nginx/manager.go @@ -416,7 +416,7 @@ func (m *Manager) backup() (*backupState, error) { return nil, err } state.Files = files - log.Printf("nginx backup captured: route_exists=%t support_files=%d", state.RouteExisted, len(state.Files)) + log.Printf("backup captured: route_exists=%t support_files=%d", state.RouteExisted, len(state.Files)) return state, nil } @@ -450,7 +450,6 @@ func (m *Manager) restore(state *backupState) error { return err } } - log.Printf("nginx backup restored") return nil } @@ -458,7 +457,6 @@ func (m *Manager) writeSupportFiles(supportFiles []protocol.SupportFile) error { if m.CertDir == "" { return nil } - log.Printf("writing nginx support files: cert_dir=%s count=%d", m.CertDir, len(supportFiles)) if err := os.RemoveAll(m.CertDir); err != nil && !os.IsNotExist(err) { return err } @@ -474,7 +472,6 @@ func (m *Manager) writeSupportFiles(supportFiles []protocol.SupportFile) error { return err } } - log.Printf("nginx support files written: cert_dir=%s count=%d", m.CertDir, len(supportFiles)) return nil } diff --git a/atsf_agent/internal/sync/service.go b/atsf_agent/internal/sync/service.go index 0273efaf..827dd6f8 100644 --- a/atsf_agent/internal/sync/service.go +++ b/atsf_agent/internal/sync/service.go @@ -51,7 +51,6 @@ func (s *Service) sync(ctx context.Context, startup bool) error { if startup { mode = "startup" } - log.Printf("sync started: mode=%s", mode) snapshot, err := s.stateStore.Load() if err != nil { return err @@ -61,12 +60,10 @@ func (s *Service) sync(ctx context.Context, startup bool) error { log.Printf("fetch active config failed: mode=%s error=%v", mode, err) return err } - log.Printf("active config fetched: mode=%s version=%s checksum=%s support_files=%d", mode, config.Version, config.Checksum, len(config.SupportFiles)) currentChecksum, err := s.nginxManager.CurrentChecksum() if err != nil { return err } - log.Printf("current local checksum loaded: mode=%s checksum=%s", mode, currentChecksum) if currentChecksum == config.Checksum { log.Printf("local openresty config already up to date: mode=%s version=%s", mode, config.Version) if startup { diff --git a/atsf_server/docs/docs.go b/atsf_server/docs/docs.go index e3cdf89c..0303e64d 100644 --- a/atsf_server/docs/docs.go +++ b/atsf_server/docs/docs.go @@ -1589,8 +1589,6 @@ var SwaggerInfo = &swag.Spec{ Description: "ATSFlare Server 管理端与 Agent API 文档。", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, - LeftDelim: "{{", - RightDelim: "}}", } func init() { diff --git a/atsf_server/web/features/nodes/components/node-detail-page.tsx b/atsf_server/web/features/nodes/components/node-detail-page.tsx index faf667a5..2ad3046c 100644 --- a/atsf_server/web/features/nodes/components/node-detail-page.tsx +++ b/atsf_server/web/features/nodes/components/node-detail-page.tsx @@ -344,19 +344,31 @@ export function NodeDetailPage({ nodeId }: { nodeId: string }) { updateAgentMutation.mutate(selectedAgentRelease ?? null); }; + const isRefreshing = nodesQuery.isFetching || applyLogsQuery.isFetching; + + const handleRefresh = async () => { + setFeedback(null); + await Promise.all([ + queryClient.invalidateQueries({ queryKey: nodesQueryKey }), + queryClient.invalidateQueries({ + queryKey: ['apply-logs', node.node_id], + }), + ]); + }; + return ( <>
- {node.restart_openresty_requested - ? '已等待节点在下一次心跳后执行 OpenResty 重启。' - : node.openresty_message || '当前未上报额外错误。'} -
-+ 健康状态 +
++ {node.restart_openresty_requested + ? '已等待节点在下一次心跳后执行 OpenResty 重启。' + : '系统会在每次心跳前自动采集健康状态。'} +
++ 状态消息 +
++ {node.openresty_message || '当前未上报额外错误。'} +
+- {node.openresty_message || '无额外错误'} -