Aditya Tripathi
faca466cd6
fix(metrics): align fleet series by time bucket, harden fleet page inputs
...
Address review findings on the fleet metrics page.
Data correctness:
- bucket raw Sentinel samples into epoch-aligned windows (5m/30m/2h per range)
and average them, replacing per-server LTTB. Every server now reports the
same bucket timestamps, so the fleet sums add up point by point instead of
zigzagging between servers (and RX+TX really combine)
- keep only the root mount in disk history, matching HasMetrics::getDiskMetrics
- leave sparkline gaps as null instead of 0, so absent samples read as gaps
Robustness:
- normalize containerMetric in mount()/updatedContainerMetric(), so
/metrics?cmetric=foo no longer throws an undefined array key
- include the server uuid in the container row wire:key; system containers
share one Sentinel id across servers
- round the range start to the minute so the 60s history cache can hit
- cap the Sentinel curl with --max-time 10, so one hung request cannot stall
the serial per-server loop
UI:
- pass the spark time axis on first paint, so tooltips no longer show 1970
- show the active series name (RX/TX) in the server network chart tooltip
2026-09-18 07:44:22 +00:00
..
2026-08-21 12:15:46 +02:00
2026-09-13 15:25:20 +02:00
2026-09-09 14:27:31 +02:00
2026-08-21 12:15:46 +02:00
2026-09-09 13:10:12 +02:00
2026-08-03 23:08:11 +02:00
2026-09-16 08:43:37 +00:00
2026-07-02 15:50:43 +02:00
2026-08-27 04:45:39 +00:00
2026-08-20 09:32:32 +02:00
2026-09-10 15:12:53 +02:00
2026-08-18 09:08:18 +02:00
2026-09-18 07:44:22 +00:00
2026-09-09 15:01:57 +02:00
2026-09-10 12:33:50 +02:00
2026-08-28 09:46:57 +02:00
2026-07-02 16:27:06 +02:00
2026-07-11 21:35:10 +02:00
2026-08-23 21:33:00 +02:00
2026-08-25 11:50:33 +02:00
2026-09-08 20:33:45 +02:00
2026-08-06 15:37:30 +02:00
2026-07-15 12:29:58 +02:00
2026-08-03 23:08:56 +02:00
2026-08-15 15:51:11 +02:00
2026-07-19 23:15:55 +02:00
2026-09-08 11:49:02 +02:00
2026-07-23 17:25:53 +02:00
2026-08-07 18:17:33 +02:00
2026-09-04 16:29:24 +02:00
2026-07-16 11:57:52 +02:00
2026-08-03 23:11:54 +02:00
2026-08-03 23:08:56 +02:00
2026-08-19 11:25:46 +02:00
2026-08-13 10:58:28 +02:00
2026-08-31 13:13:26 +02:00
2026-08-18 10:41:45 +02:00
2026-08-03 23:11:54 +02:00
2026-08-11 10:55:50 +00:00
2026-08-15 19:13:30 +02:00
2026-06-29 10:35:35 +02:00
2026-09-09 13:43:56 +02:00
2026-08-18 11:55:55 +02:00
2026-08-23 23:03:06 +02:00
2026-08-23 23:03:06 +02:00
2026-06-29 10:17:09 +02:00
2026-09-15 12:28:16 +02:00
2026-07-22 14:52:11 +02:00
2026-08-22 12:53:20 +02:00
2026-07-11 22:52:10 +02:00
2026-07-08 10:42:58 +02:00
2026-07-11 22:52:10 +02:00
2026-07-16 13:42:53 +02:00
2026-08-18 23:40:59 +02:00
2026-08-05 13:50:11 +02:00
2026-08-22 12:53:20 +02:00
2026-09-10 17:39:56 +02:00
2026-09-10 09:03:28 +02:00
2026-09-02 19:39:19 +02:00
2026-07-03 11:40:20 +02:00
2026-08-24 10:57:22 +02:00
2026-08-28 10:49:05 +02:00
2026-08-22 17:22:50 +02:00
2026-08-13 11:17:44 +02:00
2026-08-13 11:17:44 +02:00
2026-09-10 12:33:50 +02:00
2026-08-03 23:08:56 +02:00
2026-08-21 12:04:14 +02:00
2026-07-16 13:42:53 +02:00
2026-08-27 10:39:38 +02:00
2026-07-02 14:54:38 +02:00
2026-09-02 19:39:19 +02:00
2026-08-03 23:08:56 +02:00
2026-07-07 12:24:52 +02:00
2026-07-20 23:21:40 +02:00
2026-07-20 23:21:40 +02:00
2026-07-20 23:21:40 +02:00
2026-07-20 23:21:40 +02:00
2026-07-08 12:20:56 +02:00
2026-08-05 18:26:24 +02:00
2026-07-20 12:18:06 +02:00
2026-09-05 12:32:25 +02:00
2026-07-07 12:20:26 +02:00
2026-08-13 22:56:52 +02:00
2026-08-28 09:46:57 +02:00
2026-09-01 18:44:18 +02:00
2026-08-18 14:03:33 +02:00
2026-08-07 15:21:18 +02:00
2026-08-19 11:52:59 +02:00
2026-09-15 23:00:45 +02:00
2026-08-15 19:13:30 +02:00
2026-07-11 21:35:10 +02:00
2026-07-02 14:46:46 +02:00
2026-08-21 12:15:46 +02:00
2026-08-24 09:10:19 +02:00
2026-08-21 12:15:46 +02:00
2026-08-21 12:15:46 +02:00
2026-08-21 12:15:46 +02:00
2026-09-07 14:08:11 +02:00
2026-08-15 18:38:59 +02:00
2026-09-15 12:58:59 +02:00
2026-08-31 13:13:26 +02:00
2026-07-03 11:40:20 +02:00
2026-08-18 14:03:33 +02:00
2026-08-23 21:33:00 +02:00
2026-08-31 13:13:26 +02:00
2026-08-03 23:11:54 +02:00
2026-08-31 13:13:26 +02:00
2026-09-15 11:38:33 +02:00
2026-08-17 16:05:21 +02:00
2026-08-05 15:15:50 +02:00
2026-09-10 15:12:53 +02:00
2026-08-14 13:34:00 +02:00
2026-08-14 13:34:00 +02:00
2026-08-25 10:30:14 +02:00
2026-08-12 16:27:33 +02:00
2026-09-08 20:33:45 +02:00
2026-08-10 11:08:04 +02:00
2026-08-23 22:33:03 +02:00
2026-07-02 14:46:46 +02:00
2026-07-11 22:52:10 +02:00
2026-07-08 09:42:52 +02:00
2026-09-14 15:43:52 +02:00
2026-07-11 22:52:10 +02:00
2026-07-19 11:42:04 +02:00
2026-09-10 17:39:56 +02:00
2026-09-10 09:24:37 +02:00
2026-07-15 12:29:58 +02:00
2026-09-02 19:39:19 +02:00
2026-07-02 16:56:49 +02:00
2026-07-15 12:29:58 +02:00
2026-09-08 07:05:01 +02:00
2026-08-03 23:11:54 +02:00
2026-08-19 11:25:46 +02:00
2026-08-21 12:15:46 +02:00
2026-08-03 23:11:54 +02:00
2026-08-27 19:38:01 +02:00
2026-09-04 16:38:24 +02:00
2026-08-31 13:13:26 +02:00
2026-07-02 15:05:05 +02:00
2026-08-15 18:31:32 +02:00
2026-09-02 19:39:19 +02:00
2026-07-02 18:52:46 +02:00
2026-08-19 12:18:05 +02:00
2026-09-02 19:39:19 +02:00
2026-09-08 20:33:45 +02:00
2026-07-06 17:40:37 +02:00
2026-09-10 15:12:53 +02:00
2026-07-19 16:47:29 +02:00
2026-08-24 09:04:51 +02:00
2026-07-11 22:52:10 +02:00
2026-07-16 13:42:53 +02:00