Rogue
3e052c42b8
feat(probe): history store + whole-machine traffic ledger in probe.db (item 7 B2)
...
New internal/web/service/probe package keeps probe history in its own
probe.db beside the panel DB (single connection, WAL), so history
writes never contend with the panel write lock.
- Minute rows per hub semantics: a held-reading rhythm books traffic
against each reading own arrival; minute buckets merge (means,
rounded int means, peaks) and the stored net rate derives from the
kernel counters between row marks, falling back to agent rates at
epoch breaks.
- probe_traffic ledger: accumulate is a line port of hub traffic.rs
(baseline alignment, same-boot shrink books 0, epoch change books 0,
unseen-boot exception books the whole counters-since-boot measured
against the master last-seen stamp, per-direction period resets,
saturating adds); reads gate stale day/month stamps to zero.
- probe_meta rows are ensured for every reporting agent (B3 edits
them in place); probe_ping_* tables are created now, written by B4.
- Hourly roll_up behind a watermark (hour-aligned, late grace,
pre-retention hours skipped unfoldered) and watermark-guarded
chunked prune (minute tier 7 days or the retention window when
shorter; hourly tier to retention_days, default 7, cap 365).
- Wiring: heartbeat files probe samples after the snapshot update
(last-seen captured before touch); housekeeping hangs off the
existing robfig/cron in web.startTask (@hourly + one pass a minute
after startup, mirroring the hub boot pass); Server.stop books held
readings. Every failure path logs and degrades - a broken probe.db
never fails a heartbeat or the panel.
2026-10-22 19:43:59 +00:00
..
2026-08-24 15:07:15 +02:00
2026-10-21 16:35:53 +00:00
2026-10-22 13:33:08 +00:00
2026-10-22 19:43:59 +00:00
2026-10-22 13:01:50 +00:00
2026-10-22 15:25:08 +00:00
2026-10-22 15:25:08 +00:00
2026-10-20 10:13:06 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-20 10:13:06 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-20 11:07:10 +00:00
2026-10-21 17:40:42 +00:00
2026-10-21 17:40:42 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-20 11:07:10 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-22 15:33:51 +00:00
2026-10-21 06:44:00 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-21 18:43:55 +00:00
2026-10-20 11:07:10 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-22 10:25:15 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-21 13:49:57 +00:00
2026-10-22 09:19:20 +00:00
2026-08-24 15:07:15 +02:00
2026-10-21 06:44:00 +00:00
2026-10-22 10:25:15 +00:00
2026-10-22 15:35:21 +00:00
2026-10-20 10:24:28 +00:00
2026-10-20 10:24:28 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-21 17:16:32 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-21 17:16:32 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-23 00:34:33 +08:00
2026-08-24 15:07:15 +02:00
2026-10-21 06:44:00 +00:00
2026-10-21 13:49:43 +00:00
2026-10-21 18:43:55 +00:00
2026-10-22 11:33:56 +00:00
2026-10-22 13:14:24 +00:00
2026-10-21 18:43:55 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-22 15:33:46 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-23 00:22:58 +08:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-21 18:43:55 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-22 15:33:46 +00:00
2026-10-22 15:33:46 +00:00
2026-10-22 10:25:15 +00:00
2026-10-22 09:19:20 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-21 18:43:55 +00:00
2026-10-21 13:49:43 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-21 18:43:55 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-21 18:43:55 +00:00
2026-10-21 17:16:32 +00:00
2026-10-20 10:11:35 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-20 10:11:35 +00:00
2026-10-21 17:16:32 +00:00
2026-10-21 18:43:55 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-20 10:13:06 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-21 18:43:55 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-20 10:18:37 +00:00
2026-10-19 12:29:38 +00:00
2026-10-21 18:43:55 +00:00
2026-10-21 18:43:55 +00:00
2026-10-21 18:43:55 +00:00
2026-10-21 22:04:49 +00:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-08-24 15:07:15 +02:00
2026-10-21 18:43:55 +00:00
2026-08-24 15:07:15 +02:00
2026-10-21 18:43:55 +00:00
2026-08-24 15:07:15 +02:00
2026-10-21 22:04:49 +00:00