Agent-Flag-TTL-Cache + Backoff für tote Guest-Agents → Scan-Cap entkappen (offener Teil von #38) #67
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Kontext
Folge-Issue zu #38 (geschlossen, aber nur Cap+Rotation wurde umgesetzt). Der im Titel von #38 genannte Agent-Flag-Cache + Backoff fehlt bis heute — der Code liest den
agent-Flag gar nicht und pingt jede laufende VM jede Rotation blind an (data.rs:95-97, Kommentar: "we just try qemu-agent ping on every running VM ... let identity_scan bail out").Folgen (aktuell)
agent=0werden jede Rotation sinnlos ge-ping't und scheitern.agent=1-Gaeste kosten pro Rotation einen vollen Ping-Timeout (serielle Scans → blockiert die data_loop).data.rsSCAN_CAP=12, Rotation viaSCAN_CURSOR) stammt aus der 30s-Aera. Beiscan_interval=300refresht eine grosse Node pro VM nur alleceil(N/12)x5min, und ein transienter Timeout klebt eine ganze Rotationsrunde (Minuten), obwohl die VM laengst wieder da ist.vm_qemu_scans(agent_ws.py:324-327). Es geht rein um Frische + Kosten.Loesung
1. Agent-Flag-TTL-Cache
proxmox.rs):get_vm_agent_enabled(vmid) -> boolviaqm config <vmid>/ pvesh/nodes/<node>/qemu/<vmid>/config→ Feldagent(enabled wenn Wert mit1beginnt, z. B.1,fstrim_cloned_disks=1).AgentState(Mutex<HashMap<vmid,(enabled, checked_at)>>).collect(): pro laufender VM Cache konsultieren; ist der Flag aelter als TTL → billig neu lesen (nur Config, kein Ping).agent=0→identity_scanueberspringen.agent=0-VM wird nach Ablauf der TTL wieder geprueft (nur der Flag), nicht der teure Ping. Wird der Guest-Agent in Proxmox aktiviert, faengt theProx innerhalb des TTL-Fensters wieder an, voll zu scannen.2. Backoff fuer tote
agent=1agent=1, aber Ping/identity_scantimeoutet → VMID als tot markieren mit exponentiellem Backoff (z. B. 1→2→4→… gedeckelt bei z. B. 1800s),next_retry_atpro VMID.3. Cap entkappen
SCAN_CAP/Rotation entfernen oder stark anheben: alle scanbaren VMs (agent=1, nicht im Backoff) jede Runde → volle Frische alle 5 Min.4. Konfigurierbar + manueller Trigger
agent_flag_ttl(Default 900s),dead_agent_backoff_max(Default 1800s) — getrennt vomscan_interval.Akzeptanz
agent=0-VMs werden nicht mehr ge-ping't, ihr Flag aber alle ~TTL neu evaluiert.agent=1-Gaeste werden mit Backoff uebersprungen statt jede Rotation neu zu timeouten.Bezug
Branch
feat/agent-flag-cache-and-dead-agent-backoff