Repository navigation
Added
FIREPOT_PROBE_TIMEOUTsets the time limit for filesystem probes in seconds (default 10; a negative value is a usage error), so a stuck mount can no longer hang a run.
Fixed
- Fleet mode accepts remote reports that contain
infochecks.sessionsis alwaysinfoandswapisinfowithout swap, so a--hostrun with the default check set now aggregates every node instead of marking each one as an invalid report. - A remote that runs but exits with a code other than 0, 1, or 2 is reported as
remote run failed with exit N;ssh failedis kept for ssh's own exit 255. - Text-mode fleet output prints each failing check's summary decoded from JSON, so quotes and backslashes come through intact.
- Remote reports stream straight into the 1 MiB-bounded validator rather than being buffered in a shell variable first.
ServerAliveInterval(the--ssh-timeoutvalue) with three retries ends dead connections. dfruns under a deadline (10 seconds,FIREPOT_PROBE_TIMEOUT), so a hung mount becomes a critical result instead of stalling the run. The default filesystem list usesdf -l, matching the documented local-filesystem scope.- Lists given to
--services,--peers,--mounts, and the other list options are never glob-expanded against the working directory, and empty items are dropped. - Load per core divides by online CPUs from
/sys/devices/system/cpu/online.nproc(the fallback) follows the caller's CPU affinity andOMP_NUM_THREADS, which do not bound the system-wide load average. - The gateway check follows the first default route: multipath next hops are pinged correctly, and a point-to-point default route (WireGuard, PPP), which has no next hop to ping, is reported as
info. - Mount points containing spaces or
=keep their full names in the disk and inode metrics. - String metrics (
hostname,kernel,name,address,gateway) are always JSON strings, so every hostname, including all-digit names such as007, yields valid JSON. - Port lists accept leading zeros (
022matches port 22), reject numbers above 65535 as usage errors, and work withssbuilds that lack-H. - An empty
/proc/loadavgor an incomplete/proc/meminfois reported as a skipped check. Any unexpected runtime failure exits 3, as documented, rather than with a status that reads as a health state. - Arguments after
--are rejected as usage errors instead of being ignored.
Changed
- A full local check starts 12 processes instead of 559 and finishes in about a tenth of the time (median 76 ms instead of 886 ms on the reference host). JSON escaping, thresholds, and percentages are computed in bash; the hostname, kernel release, CPU count, uptime, and memory figures are read from
/procand/sys; and each probe's output is parsed without awk, sed, sort, or tr. - Configured peers are pinged in parallel, so unreachable peers cost one ping timeout in total rather than one each.
- Configured systemd units are checked with one
systemctl is-activecall, falling back to one call per unit if systemctl cannot answer for the whole list. - The script runs with
LC_ALL=C, so probe output parses the same way in every locale. - Long options and config keys share one table, and fleet mode forwards the effective settings, whether they came from flags or
--config. - awk is no longer required.
- The deprecated
node-healthcheckname keeps working; its stderr note now says it will be removed in a future release.
Full Changelog: v1.2.0...v1.3.0