mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-09 05:24:49 +09:00
Two dishonesty directions, one rule (plan 75 §A3/A4): a probe answers a value or None, never 0 when undetermined — and a real 0 must survive. Live paths normalized every missing reading to 0 while the history path stored NULL for the same probe: agent counters an LXC agent can't determine rendered as a perfectly idle box; load average on unsupported platforms read 0.00 (and silenced the load alert); CPU freq read 0 MHz; an empty history window summarized as '0.0 avg'. The mobile summary called a method that does not exist and rendered 0/0/0 permanently. One unavailable network counter raised uncaught and froze the entire live broadcast. Reverse direction: falsy traps (x if x else None) collapsed a genuinely idle 0.0 into 'no data' in rollups, averages, and the history model. Fleet: KPI tiles read '0.0 ms latency' / '100% success' with no data; never-probed servers exported serverkit_server_up 0 to external alertmanagers — the up-series now emits only for determined connectivity. get_all_metrics is per-section fault-tolerant so one failed probe can't blank the other six.