Files
homelab-infra/ops/hermes-agent/skills/homelab-ops-monitor.md
Micha aded9a9cbc update
update
2026-05-06 20:22:14 +02:00

169 lines
5.0 KiB
Markdown

---
name: homelab-ops-monitor
version: 1.0.0
author: Hermes Agent + Micha
license: MIT
metadata:
hermes:
tags: [homelab, nas, gitops, operations, monitoring, health-checks, alerts, ntfy]
description: |
Kontextueller Ops-Assistent fuer das Kallilabcore-Homelab.
Prueft Service-Health via HTTP, liest Backup-Dump-Timestamps,
analysiert Abhaengigkeiten und sendet angereicherte ntfy-Alerts.
Kein Docker CLI noetig — laeuft direkt auf der Hermes-VM.
---
# 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)