Lokale Volumes (inkl. /boot) als Telemetrie + backend-seitiger /boot-Watch (Trigger für #26) #64

Closed
opened 2026-06-02 15:29:13 +00:00 by chinux · 1 comment
Owner

Ziel

Lokale Filesystem-/Volume-Auslastung (insb. /boot) in die Node-Telemetrie aufnehmen und einen backend-seitigen /boot-Watch darauf bauen. Damit bekommt der proaktive Kernel-Cleanup (#26) seine Datenquelle.

Problem

Aktuell meldet der Agent nur die PVE-Storage-Liste (get_storage() = pvesh /nodes/<node>/storage, proxmox.rs:291). Das sind PVE-Datastores (local, local-lvm …) — nicht die echten lokalen Filesystems. /boot (und z. B. /, /var/lib/vz) tauchen damit nirgends auf → der /boot-Watch hat nichts auszuwerten.

Umsetzung

1. Agent — lokale Volumes erfassen (generisches Telemetrie-Lesen, KEINE Cleanup-Logik)

  • Neue Funktion in Node-Agent/src/proxmox.rs (bei get_storage/get_node_status), z. B. get_host_filesystems() -> Value:
    • df -B1 --output=source,target,fstype,size,used,avail,pcent ausführen.
    • Echte lokale FS behalten, Pseudo-FS rauswerfen (tmpfs, devtmpfs, overlay, squashfs, proc, sysfs, efivarfs, …).
    • Pro Mount: {source, mountpoint, fstype, size, used, avail, use_percent}.
  • In Node-Agent/src/data.rs collect() in den data_update-JSON aufnehmen (neben "storage", ~Zeile 129):
    "host_filesystems": proxmox::get_host_filesystems(),
    

2. Backend — persistieren & ausliefern

  • host_filesystems in die Node-Status-Aufbereitung übernehmen:
    • server/routers/monitor_router.py:152 — Key-Liste um "host_filesystems" ergänzen.
    • server/routers/admin_router.py:198 — analog zu host_updates durchreichen.

3. Backend — /boot-Watch (der eigentliche „Watch")

  • Auswertung von host_filesystems → Mount /boot (Fallback /): wenn use_percent >= BOOT_WATCH_THRESHOLD → Node-Flag kernel_cleanup_recommended = true setzen.
  • Schwellwert konfigurierbar (Default z. B. 70 %), als Setting.
  • Optional: gleiches Prinzip für „lokales Volume voll" generell (häufige Incident-Ursache).

4. Frontend (optional in diesem Issue, sonst Folge-Issue)

  • Lokale Volumes (inkl. /boot) im Node-Panel anzeigen.
  • Badge/Hinweis „Kernel-Cleanup empfohlen" bei gesetztem Flag → Einstieg ins #26-Modal.

Abgrenzung

  • Dieses Issue: Telemetrie der lokalen Volumes + /boot-Watch/Threshold-Flag.
  • #26: die eigentliche Cleanup-Action (backend-owned Skript via agent.run_script, Dry-Run-Modal, notify-Event). Der Watch hier ist der proaktive Trigger dafür.

Härtung (Bezug #56)

  • df-Parsing robust: fehlendes /boot (Single-Partition-Setups) sauber behandeln, nicht alle Hosts haben eine separate /boot-Partition.
  • Nur auf PVE-Nodes relevant; auf VMs/CTs nicht anbieten.

Akzeptanz

  • last_data.host_filesystems enthält / und (falls vorhanden) /boot mit use_percent.
  • Bei /boot-Auslastung ≥ Schwellwert wird das Node-Flag gesetzt und ist im UI sichtbar.
  • Keine Pseudo-Filesystems in der Liste.

Branch

feat/local-volume-telemetry-and-boot-watch

## Ziel Lokale Filesystem-/Volume-Auslastung (insb. **`/boot`**) in die Node-Telemetrie aufnehmen und einen **backend-seitigen `/boot`-Watch** darauf bauen. Damit bekommt der proaktive Kernel-Cleanup (#26) seine Datenquelle. ## Problem Aktuell meldet der Agent nur die **PVE-Storage-Liste** (`get_storage()` = `pvesh /nodes/<node>/storage`, `proxmox.rs:291`). Das sind PVE-Datastores (local, local-lvm …) — **nicht** die echten lokalen Filesystems. `/boot` (und z. B. `/`, `/var/lib/vz`) tauchen damit nirgends auf → der `/boot`-Watch hat nichts auszuwerten. ## Umsetzung ### 1. Agent — lokale Volumes erfassen (generisches Telemetrie-Lesen, KEINE Cleanup-Logik) - Neue Funktion in `Node-Agent/src/proxmox.rs` (bei `get_storage`/`get_node_status`), z. B. `get_host_filesystems() -> Value`: - `df -B1 --output=source,target,fstype,size,used,avail,pcent` ausführen. - **Echte lokale FS** behalten, Pseudo-FS rauswerfen (`tmpfs`, `devtmpfs`, `overlay`, `squashfs`, `proc`, `sysfs`, `efivarfs`, …). - Pro Mount: `{source, mountpoint, fstype, size, used, avail, use_percent}`. - In `Node-Agent/src/data.rs` collect() in den `data_update`-JSON aufnehmen (neben `"storage"`, ~Zeile 129): ``` "host_filesystems": proxmox::get_host_filesystems(), ``` ### 2. Backend — persistieren & ausliefern - `host_filesystems` in die Node-Status-Aufbereitung übernehmen: - `server/routers/monitor_router.py:152` — Key-Liste um `"host_filesystems"` ergänzen. - `server/routers/admin_router.py:198` — analog zu `host_updates` durchreichen. ### 3. Backend — `/boot`-Watch (der eigentliche „Watch") - Auswertung von `host_filesystems` → Mount `/boot` (Fallback `/`): wenn `use_percent >= BOOT_WATCH_THRESHOLD` → Node-Flag `kernel_cleanup_recommended = true` setzen. - Schwellwert **konfigurierbar** (Default z. B. 70 %), als Setting. - Optional: gleiches Prinzip für „lokales Volume voll" generell (häufige Incident-Ursache). ### 4. Frontend (optional in diesem Issue, sonst Folge-Issue) - Lokale Volumes (inkl. `/boot`) im Node-Panel anzeigen. - Badge/Hinweis „Kernel-Cleanup empfohlen" bei gesetztem Flag → Einstieg ins #26-Modal. ## Abgrenzung - **Dieses Issue:** Telemetrie der lokalen Volumes + `/boot`-Watch/Threshold-Flag. - **#26:** die eigentliche Cleanup-Action (backend-owned Skript via `agent.run_script`, Dry-Run-Modal, notify-Event). Der Watch hier ist der proaktive Trigger dafür. ## Härtung (Bezug #56) - `df`-Parsing robust: fehlendes `/boot` (Single-Partition-Setups) sauber behandeln, nicht alle Hosts haben eine separate `/boot`-Partition. - Nur auf PVE-Nodes relevant; auf VMs/CTs nicht anbieten. ## Akzeptanz - `last_data.host_filesystems` enthält `/` und (falls vorhanden) `/boot` mit `use_percent`. - Bei `/boot`-Auslastung ≥ Schwellwert wird das Node-Flag gesetzt und ist im UI sichtbar. - Keine Pseudo-Filesystems in der Liste. ## Branch `feat/local-volume-telemetry-and-boot-watch`
Author
Owner

Second Claude succeed

Verifiziert: Agent get_host_filesystems() via df -B1 mit Pseudo-FS-Filter (proxmox.rs:293) → data.rs:215. Backend reicht host_filesystems durch (admin_router.py:201, monitor_router.py:152). Watch-Flag kernel_cleanup_recommended = use_percent >= BOOT_WATCH_THRESHOLD (Default 70, admin_router.py:205-207).

**Second Claude succeed** ✅ Verifiziert: **Agent** `get_host_filesystems()` via `df -B1` mit Pseudo-FS-Filter (`proxmox.rs:293`) → `data.rs:215`. **Backend** reicht `host_filesystems` durch (`admin_router.py:201`, `monitor_router.py:152`). **Watch-Flag** `kernel_cleanup_recommended` = `use_percent >= BOOT_WATCH_THRESHOLD` (Default 70, `admin_router.py:205-207`).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
chinux/theProx#64
No description provided.