Commit Graph
1761 Commits
Author SHA1 Message Date
Sven van GinkelandGitHub 5529d2e15e fix(agent): verify systemd on dbus before starting service monitoring (#2573) 2026-10-09 11:39:09 -04:00
henrygd e30e980854 deps: update npm / bun lockfiles 2026-10-09 11:19:45 -04:00
Sven van GinkelandGitHub 195afc10b8 deps(site): bump npm packages with security alerts (#2575) 2026-10-09 11:17:25 -04:00
henrygd d91f06f3c5 fix(hub): stop keepalive pings after prolonged agent silence
The keepalive ping on a failed fetch re-arms the read deadline without needing
a reply, so a dead peer (power loss, partition) kept its connection until TCP
gave up. Track when the agent last sent a message and only ping while that is
under maxAgentSilence (3m). A live agent always answers within interval + its
own 120s deadline, so slow agents are unaffected; a dead one is now released
by the read deadline and falls back through the normal down/SSH path.
2026-10-09 11:09:43 -04:00
Mario MoharandGitHub 7305eda972 fix(hub): ping a slow agent so its connection survives between polls (#2435) 2026-10-09 10:51:42 -04:00
bc2278e7e9 feat(agent): Handle update package check for xbps package manager (#2522)
Co-authored-by: hank <hank@henrygd.me>
2026-10-06 12:10:12 -04:00
henrygd 4fe1a0a7a4 refactor(agent): share cgroup path vars and v2 mount lookup
Drop the cpu prefix from the cgroup path vars now that memory
accounting uses them too, and extract cgroupV2Dir() for the v2 mount
lookup previously repeated in CPU, memory and the root cgroup check.
2026-10-05 14:54:29 -04:00
ef840e0e6d feat(agent): support opt-in cgroup CPU and memory accounting (#2505)
Co-authored-by: hank <hank@henrygd.me>
2026-10-05 14:52:40 -04:00
Sven van GinkelandGitHub 965518e63c fix(site): restore latency tolerance in 1m realtime charts (#2521) 2026-10-05 12:48:46 -04:00
Sven van GinkelandGitHub ca40b5b38f fix(charts): show isolated points and stop endless spinner on empty values (#2514) 2026-10-05 12:39:14 -04:00
Sven van GinkelandGitHub d89f844a2a feat(monitors): add option to ignore TLS errors for HTTPS monitors (#2500) 2026-10-05 12:01:51 -04:00
Sven van GinkelandGitHub 74c952b879 fix(agent): don't detect zypper-aptitude's apt-get wrapper as apt (#2523) 2026-10-05 11:49:05 -04:00
MarrrrrrrrryandGitHub 36c14e903d fix(agent): stop sending legacy hubs a duplicate stats payload (#2529) 2026-10-05 11:38:33 -04:00
Julio LinsandGitHub dcae7682cd fix(hub): add missing testing build tag to hub tests (#2525) 2026-10-05 10:54:21 -04:00
henrygd 7748651f5c ci: build each docker image once and push to both registries
Previously the matrix had separate entries for Docker Hub and GHCR, so
every image was built twice. Each entry now pushes to both registries
from a single build. Docker Hub is skipped when DOCKERHUB_TOKEN is
unset (e.g. forks).

Also drops the explicit latest tag on the GHCR agent image so latest
comes only from latest=auto, and lowers max-parallel to 3.
2026-10-05 10:53:02 -04:00
hankGitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
4a40d1772c chore(helm): update app version to 0.21.0 (#2498)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-05 10:51:53 -04:00
henrygd ec96c13466 release 0.21.0 v0.21.0 2026-10-02 13:13:54 -04:00
henrygd e597dd94db wifi: add SKIP_WIFI env var to disable signal monitoring 2026-10-02 12:54:22 -04:00
henrygd b115e2aa6a wifi(linux): skip nl80211 when no wireless devices are registered
Check /sys/class/ieee80211 before opening netlink sockets. Looking up
the
nl80211 family while cfg80211 is not loaded makes the kernel run
modprobe,
which loads the module on hosts without wireless hardware, or fails
again
on every poll when the module is unavailable.
2026-10-02 12:47:57 -04:00
henrygd 0cca9d0602 chore: update changelog 2026-10-02 12:31:52 -04:00
henrygd 49f4f652e1 i18n: update translations 2026-10-02 12:20:06 -04:00
henrygd 25132b73ff ui: paginate the package updates table 2026-10-02 11:37:18 -04:00
hankandGitHub 49ad3fe533 New Crowdin updates (#2485) 2026-10-02 10:34:35 -04:00
henrygd da742a70ab ui: bump default layout width to 1600 2026-10-02 10:25:23 -04:00
01d91728f0 fix(agent): report LXC guest CPU usage from cgroup accounting (#2341)
Inside an LXC guest, lxcfs serves /proc/stat with the counters of the
host cores in the guest's cpuset, so an idle guest sharing a core with a
busy neighbor reported near-100% CPU.

When the agent detects it is running in an LXC guest (lxcfs mounted on
/proc/stat, container=lxc, or /run/systemd/container), derive CPU usage
from the guest's own cgroup instead: cpu.stat on cgroup v2, cpuacct on
v1, read at the cgroup mount root so it covers every process in the
guest. Usage is normalized by the usable cores (the smallest of the
affinity mask, cpuset and CPU quota).

Per-core usage is omitted in this mode, since the per-core /proc/stat
counters describe shared host cores and would contradict the total.
Iowait and steal are not available from cgroup accounting and report as
zero.

Hosts and Docker/Podman agents are unaffected and keep reading
/proc/stat, as does an LXC guest whose cgroup accounting is unreadable.

---------

Co-authored-by: hank <hank@henrygd.me>
2026-10-01 19:33:42 -04:00
Santhi PrakashandGitHub c394a6b5b1 fix(agent): resolve device symlinks so LVM volumes map to disk I/O (#2486) 2026-10-01 18:44:29 -04:00
spatiumstasandhenrygd 4ffd83677d fix(agent): improve WebSocket and SSH fallback handling (#2441)
Make WebSocket reconnect and SSH fallback transitions reliable across asynchronous disconnects, stale callbacks, and overlapping connections. Keep the SSH listener available while disconnected and allow a verified WebSocket connection to take precedence when it recovers.

Co-authored-by: henrygd <hank@henrygd.me>
2026-10-01 13:37:57 -04:00
henrygd d8c2b1f310 deps(agent): upgrade gopsutil 2026-10-01 11:30:38 -04:00
8a173e2643 feat(hub): add DISABLE_SSH option to skip SSH fallback (#2469)
Co-authored-by: hank <hank@henrygd.me>
2026-10-01 11:20:00 -04:00
0b101cc6be fix(agent): use nvethernet MAC counters (#2090)
Co-authored-by: hank <hank@henrygd.me>
2026-10-01 10:58:21 -04:00
henrygd 5b0952ffcf ui: persist log timestamp toggle and add tooltips to log buttons 2026-09-30 21:26:28 -04:00
Jeroen De WildeandGitHub 2502dd9626 feat: add toggle for log timestamps (#2471) 2026-09-30 21:14:13 -04:00
hankandGitHub 8a91a0b5ab New Crowdin updates (#2412) 2026-09-30 21:12:07 -04:00
henrygd 6ff9b4cfea feat(ui): add MB/s and GB/s unit select to bandwidth alert
Raises the bandwidth threshold max to 5 GB/s without making the MB/s
slider less precise. Values are still stored in MB/s, and the unit is
inferred from the stored value when the alert sheet opens.
2026-09-30 20:24:04 -04:00
Santhi PrakashandGitHub 65e3e2e768 fix(agent): count ZFS snapshot reads in pool I/O stats (#2474) 2026-09-30 18:22:51 -04:00
Sven van GinkelandGitHub 87f1efdfd9 fix(ui): reject IP targets for DNS monitors (#2483) 2026-09-30 18:12:14 -04:00
Bartu ÖzenandGitHub dd3a769d18 Widen NVMe power-cycle SMART fields to uint (#2484) 2026-09-30 17:50:12 -04:00
henrygd 266f45f104 fix(agent): skip first disk I/O sample of an interval when its window is too short
Right after agent start the hub requests stats immediately, and the first
sample of the interval was measured from the baseline taken at startup, only
a second or so earlier. A burst of startup I/O was then stored as the rate
for the whole minute, causing large spikes in disk I/O charts.

The first sample of an interval now must span at least half the interval.
Otherwise it only stores the snapshot, and the next sample is measured from it.
2026-09-30 13:02:29 -04:00
henrygd e925fafd7b refactor(agent): label windows wifi interfaces by adapter name instead of GUID 2026-09-30 12:50:17 -04:00
Sven van GinkelandGitHub 15c29fee92 feat(site): allow dismissing the active alerts banner and soften its red (#2478) 2026-09-30 12:17:02 -04:00
Sven van GinkelandGitHub 2ca5e727f9 refactor(ui): remove "Copy to system" from network monitor actions (#2480) 2026-09-30 12:13:31 -04:00
e01e2a20e9 feat(ui): compare network monitor targets within the same system (#2477)
Co-authored-by: henrygd <hank@henrygd.me>
2026-09-29 19:56:56 -04:00
spatiumstasandGitHub 3cc19602c1 hotfix: remove unused useLingui (#2476) 2026-09-29 17:21:45 -04:00
spatiumstasandGitHub 6c47ca8ecc fix(site): refresh interpolated translations on locale change (#2405) 2026-09-29 12:57:57 -04:00
JuankersandGitHub 3281055d95 fix(ui): prevent status ping from being clipped on desktop (#2470) 2026-09-29 12:24:44 -04:00
henrygd 02653f8ed9 chore: update go dependencies 2026-09-29 12:12:14 -04:00
spatiumstasandGitHub 67c5905b36 fix(agent): handle partial NVMe SMART data (#2340) 2026-09-29 12:09:32 -04:00
henrygd 1997984325 refactor(hub): make SSHTransport the single owner of each system's SSH connection
The updater and on-demand requests kept separate copies of the SSH client
(sys.client and the transport's client) and synced them after each request.
That allowed a closed client to be reinstalled over a newer one and leaked
connections that were replaced without being closed.

The updater now dials, opens sessions and tears down timed-out connections
through the transport. The dial keeps the TCP keepalive and handshake
deadline, and an OnConnect callback handles the per-connection resets.
The transport is created under a lock and agentVersion is now atomic.
2026-09-29 11:59:15 -04:00
97db8bd199 fix(hub): honor SSH request cancellation (#2450)
Co-authored-by: hank <hank@henrygd.me>
2026-09-29 11:22:17 -04:00
24881fbfdf fix(hub): prevent proxy caching of systemd details (#2456)
Co-authored-by: hank <hank@henrygd.me>
2026-09-29 10:54:17 -04:00