feat: add systemd watchdog, OOM detection, disk growth alerting
MEM-01: OOM kill detection via dmesg checks every 5 minutes
MEM-03: Disk growth rate tracking (288 samples over 24h), warns at >1GB/day
MEM-04: Systemd watchdog (WatchdogSec=60, sd_notify::Watchdog every 30s)
Service Type=notify for proper startup notification
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -241,11 +241,11 @@ Every test must pass **10 consecutive times** from BOTH .228→.198 AND .198→.
|
||||
|
||||
### Sprint 8: Memory & Storage Monitoring
|
||||
|
||||
- [ ] **MEM-01** — Add OOM-kill detection. In health_monitor.rs, check `dmesg | grep -i oom` and `/var/log/kern.log` for OOM kills. If detected, report via WebSocket notification with which process was killed. **Acceptance**: Trigger an intentional OOM (cgroup limit), verify notification fires.
|
||||
- [x] **MEM-01** — Added OOM-kill detection in disk_monitor.rs. `check_oom_kills()` runs `dmesg --level=err,crit` every 5 minutes, filters for "oom-kill" / "Out of memory" lines. New OOM kills logged via `warn!()` and written to `data_dir/oom-alert.json` for frontend consumption. Tracks last_oom_count to only alert on new events.
|
||||
|
||||
- [ ] **MEM-02** — Add container memory leak detection. Track per-container RSS over time in the monitoring collector. If a container's memory grows by >50% in 24h without corresponding workload increase, flag as potential leak. **Acceptance**: Monitoring page shows memory trend per container. Alert fires for simulated leak (container with growing allocation).
|
||||
|
||||
- [ ] **MEM-03** — Add disk growth alerting. Track disk usage trend. If disk is growing > 1GB/day, alert. If disk > 85%, auto-trigger `system.disk-cleanup`. If > 90%, send critical notification. **Acceptance**: Alert fires when disk threshold crossed. Auto-cleanup runs at 90%.
|
||||
- [x] **MEM-03** — Added disk growth alerting in disk_monitor.rs. Tracks 288 disk usage samples (24h at 5min intervals). Calculates daily growth rate from oldest→newest sample. Warns if growth > 1GB/day. 85% warning and 90% auto-cleanup with disk-warning.json already existed.
|
||||
|
||||
- [x] **MEM-04** — Added systemd watchdog. archipelago.service: Type=notify, WatchdogSec=60. main.rs: sd_notify::Ready on startup, spawns background task pinging sd_notify::Watchdog every 30s. Added sd-notify = "0.4" to Cargo.toml. If backend hangs, systemd auto-restarts within 60s.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user