# Skill: homelab-ops-monitor ## Zweck Dieser Skill macht Hermes zum kontextuellen Ops-Assistenten fuer das Kallilabcore-Homelab. Wenn ein Container unhealthy wird, liefert dieser Skill keine rohe Fehlermeldung, sondern einen angereicherten Alert: Was ist kaputt, welche Abhaengigkeiten sind betroffen, wie alt ist der letzte Backup-Dump, und was ist der erste konkrete Diagnoseschritt. --- ## Wann aktivieren - Wenn ein Container unhealthy gemeldet wird (manuell oder via Cronjob) - Wenn der Benutzer fragt: "Was ist kaputt?" / "Was ist mit [Service]?" - Wenn ein proaktiver Health-Check ausgefuehrt werden soll - Wenn ein ntfy-Alert angereichert werden soll bevor er gesendet wird --- ## Kernprinzipien 1. **Immer check_health.py ausfuehren** — nie raten, immer messen. 2. **Kontext aus services.yaml** — Abhaengigkeiten und Dump-Info sind dort definiert. 3. **ntfy-Alert nur wenn wirklich etwas unhealthy ist** — kein Alert-Spam. 4. **Tier 1 = urgent, Tier 2 = high, Tier 3 = default** — ntfy Priority entsprechend setzen. 5. **Kein Schreiben, kein Neustart** — dieser Skill diagnostiziert, handelt nicht. --- ## Ausfuehrungsschritte ### Schritt 1 — Health-Check ausfuehren Fuehre via Terminal (SSH) auf dem Host aus: ```bash python3 /mnt/user/services/homelab/ops/hermes-agent/scripts/check_health.py ``` Fuer einen gezielten Service: ```bash python3 /mnt/user/services/homelab/ops/hermes-agent/scripts/check_health.py ``` Fuer den Gesamtstatus (Tier 1+2): ```bash python3 /mnt/user/services/homelab/ops/hermes-agent/scripts/check_health.py --summary ``` ### Schritt 2 — JSON-Output interpretieren Der Report enthaelt je Service: - `tier` — Kritikalitaet (1=Control Plane, 2=App, 3=Ops) - `container.healthy` — aktueller Gesundheitsstatus - `unhealthy_deps` — Liste der ebenfalls unhealthy Abhaengigkeiten - `dump.age_hours` — Alter des letzten Dumps in Stunden (>26h = Warnung) - `dump.warn` — true wenn Dump veraltet - `first_check` — erster Diagnoseschritt laut service catalog - `notes` — betriebliche Hinweise ### Schritt 3 — ntfy-Alert bauen Baue eine ntfy-Nachricht nach diesem Format: ``` [Titel] [Tier-Emoji] [service-key] unhealthy (Tier [N]) Beschreibung: [description] Abhaengigkeiten: [✅/❌] [dep-key] — [status] Letzter Dump: [age_hours]h alt [✅/⚠️] (oder: kein Dump konfiguriert) Erster Check: [first_check] Hinweis: [notes] ``` Tier-Emojis: Tier 1 = 🔴, Tier 2 = 🟠, Tier 3 = 🟡 Dump-Warnschwelle: >26 Stunden = ⚠️ ### Schritt 4 — ntfy senden ```bash curl -s \ -H "Title: [Tier N] [service-key] unhealthy" \ -H "Priority: [urgent|high|default]" \ -H "Tags: [warning,tier1|tier2|tier3]" \ -d "[message]" \ https://ntfy.kaleschke.info/homelab-alerts ``` ntfy Prioritaeten: - Tier 1 → `urgent` - Tier 2 → `high` - Tier 3 → `default` --- ## Sonderfaelle ### Unbekannter Container (nicht in services.yaml) -> Alert senden mit Hinweis "nicht in services.yaml — bitte aktualisieren" -> services.yaml Pfad: `/mnt/user/services/homelab/ops/hermes-agent/services.yaml` ### ntfy selbst ist unhealthy -> Alert kann nicht per ntfy gesendet werden -> Hermes sendet stattdessen via Telegram (falls konfiguriert) -> Nachricht: "KRITISCH: ntfy ist unhealthy — kein Push-Alerting aktiv" ### Alle Tier-1-Abhaengigkeiten unhealthy -> Wahrscheinlich kein isoliertes Problem — Host oder Netzwerk pruefen -> Zusammenfassenden Alert senden statt Einzel-Alerts ### check_health.py nicht gefunden -> Meldung: "Script nicht gefunden unter /mnt/user/services/homelab/ops/hermes-agent/scripts/check_health.py" -> Pruefe ob Komodo den Stack zuletzt deployed hat --- ## Cronjob-Empfehlung Fuer automatische Checks ohne Uptime-Kuma-Webhook: ``` # Jede Stunde — prueft alle unhealthy Container 0 * * * * python3 /mnt/user/services/homelab/ops/hermes-agent/scripts/check_health.py # Taeglich 07:00 — Gesamtstatus Tier 1+2 0 7 * * * python3 /mnt/user/services/homelab/ops/hermes-agent/scripts/check_health.py --summary ``` --- ## Nicht-Ziele dieses Skills - **Kein automatischer Neustart** von Containern - **Kein Schreiben** in Compose-Dateien oder Konfigurationen - **Kein Deploy** via Komodo - **Keine Diagnose-Tiefe** jenseits des `first_check`-Hinweises (das ist Aufgabe des Benutzers) --- ## Verwandte Skills und Ressourcen - `kallilab-homelab-ops` — Governance-Skill fuer Aenderungsentscheidungen - `services.yaml` — Wissensbasis: `/mnt/user/services/homelab/ops/hermes-agent/services.yaml` - `check_health.py` — Ausfuehrungs-Script: `/mnt/user/services/homelab/ops/hermes-agent/scripts/check_health.py` - Repo: `https://git.kaleschke.info` (origin/master)