Task · TSO-0055

Classify nodemetrics scrape failures beyond transient_failure

Description

Every node-metrics scrape failure classifies uniformly as transient_failure (internal/collector/nodemetrics/nodemetrics.go:121-133). An operator debugging fleet-wide node.up=0 cannot tell “ACL blocks port 5252” from “node down” from “tailscaled too old, no metrics endpoint”. Classify connection-refused / timeout / 404 / non-200 distinctly in the failure-reason attribute and surface a diagnostic hint on the admin status page.

Acceptance Criteria

Definition of Done

Implementation Plan

Lane D implements bounded nodemetrics failure classification and telemetry in its owned packages, with a real panel in its assigned security tab modules.

Lane D also implements and tests the admin status-page dominant failure hint required by AC2; the dashboard panel and admin surface are separate deliverables.

Final Summary

Classified node scrape failures into refused, timeout, missing-endpoint, HTTP-error and other classes, retained concurrent counters, and exposed the deterministic dominant class on the status page. Implementation SHA f35b6ab. Final integrated just check passed at 5b55617; exact-head CI run 33354208183 completed success.

View the source file on GitHub