routerd soak monitor - 2026-05-13
Scope
This note tracks the Phase 3.Z soak across:
| Host | OS target | Role |
|---|---|---|
| homert02 | Ubuntu | production home router |
| router02 | NixOS | lab router |
| router04 | FreeBSD | lab router |
The soak samples every five minutes into /var/log/routerd-soak-YYYYMMDD.log
using scripts/routerd-soak-sample.sh.
Signals
Each sample captures:
routerctl status -o jsonrouterctl resources -o jsonrouterctl wireguard show wg-mesh -o jsonrouterctl tailscale peers -o json- routerd process RSS and elapsed time when
pssupports it - UDP socket snapshot when
ssis present
Initial state
The monitor is intended to detect generation drift, resource-count churn, WireGuard handshake staleness, Tailscale peer-state regressions, and obvious process RSS growth. The 24h result is pending until the next collection window has elapsed.
Initial deployment on 2026-05-13 UTC:
| Host | Scheduler | Initial result |
|---|---|---|
| homert02 | root cron, every 5 minutes | routerctl status Healthy, resource count 94, wg-mesh handshakes fresh, Tailscale peer list available |
| router02 | runtime systemd timer, every 5 minutes | routerctl status Healthy, wg-mesh handshakes fresh, Tailscale skipped because tailscale is not installed |
| router04 | root cron, every 5 minutes | routerctl status Healthy, wg-mesh handshakes fresh, Tailscale skipped because tailscaled is not running |
NixOS router02 uses a runtime systemd timer under /run/systemd/system because
/etc/systemd/system is read-only on that host. homert02 and router04 use root
crontab entries.
Follow-up checklist
- Confirm each host appends samples for at least 24h.
- Compare first and last resource counts.
- Check that Healthy/Applied resources do not flap.
- Check
wg-meshpeer handshakes remain fresh on Linux and FreeBSD peers. - Record any anomaly here before making a larger follow-up task.