0aa8138bdd
hermes update
154 lines
4.6 KiB
Markdown
154 lines
4.6 KiB
Markdown
# 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 <service-key>
|
|
```
|
|
|
|
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)
|