Health-Checks
Health-Checks ueberwachen den Zustand Ihrer Hosts durch automatisierte Pruefungen. Sie definieren Checks einmal und weisen sie beliebig vielen Hosts zu.
Konzept
Ein Health-Check besteht aus:
- Check-Definition - Was wird geprueft? (Name, Kategorie, Scripts)
- Severity-Mapping - Wie werden Exit-Codes interpretiert?
- Auto-Remediation - Optionale automatische Fehlerbehebung
- Zuweisungen - Welche Hosts werden geprueft und wann?
Checks verwalten
Die Check-Verwaltung erreichen Sie ueber den Navigationspunkt Checks.
Check erstellen
- Klicken Sie auf Check erstellen
- Konfigurieren Sie den Check:
| Feld | Beschreibung | Pflicht |
|---|---|---|
| Name | Bezeichnung des Checks | Ja |
| Beschreibung | Was prueft dieser Check? | Nein |
| Kategorie | Organisationskategorie (frei waehlbar) | Nein |
| Modul | Fuer welche Module ist der Check verfuegbar | Ja |
| Scripts | Ein oder mehrere Scripts aus der Bibliothek | Ja |
| Aktiviert | Ob der Check ausfuehrbar ist | Ja |
Kategorien
Kategorien dienen der Organisation Ihrer Checks. Der Kategoriename ist frei waehlbar, gaengige Beispiele:
| Kategorie | Typische Pruefungen |
|---|---|
disk | Festplattenbelegung, SMART-Status |
memory | RAM-Auslastung, Swap-Nutzung |
services | Dienst-Verfuegbarkeit, Prozess-Pruefung |
security | Sicherheitsrichtlinien, Zertifikatsablauf |
custom | Benutzerdefinierte Pruefungen (Standard) |
Severity-Mapping
Das Severity-Mapping ordnet Exit-Codes eine Schwere zu:
| Exit-Code | Severity | Bedeutung |
|---|---|---|
| 0 | OK | Pruefung bestanden |
| 1 | Warning | Warnung |
| 2 | Critical | Kritisch |
| 3+ | Unknown | Unbekannt |
Nagios-kompatibel
Das Mapping folgt der Nagios-Plugin-Konvention. Bestehende Monitoring-Scripts koennen direkt wiederverwendet werden.
Multi-Script-Checks
Ein Check kann mehrere Scripts enthalten, die nacheinander ausgefuehrt werden:
- Die Scripts werden in der definierten Reihenfolge ausgefuehrt
- Bei aktiviertem Stop on Failure (Standard: Ja) wird die Ausfuehrung beim ersten Fehler abgebrochen
- Der Gesamt-Status ergibt sich aus dem schlechtesten Einzelergebnis
Auto-Remediation
Die automatische Fehlerbehebung fuehrt ein Remediation-Script aus, wenn ein Check fehlschlaegt.
Konfiguration
| Feld | Beschreibung | Standard |
|---|---|---|
| Remediation aktiviert | Auto-Remediation ein-/ausschalten | Nein |
| Remediation-Script | Script, das bei Fehler ausgefuehrt wird | - |
| Max. Versuche | Maximale Anzahl Remediation-Versuche pro Fehlerserie (1-10) | 3 |
| Abkuehlzeit | Mindestzeit zwischen Remediation-Versuchen (in Sekunden, min. 60) | 300 (5 Min.) |
Ablauf
- Check wird ausgefuehrt und schlaegt fehl (Status: Warning oder Critical)
- Der Zaehler konsekutive Fehler wird erhoeht
- Wenn die Fehleranzahl das Grace Failures-Limit (Standard: 1) erreicht:
- Und die maximale Versuchsanzahl nicht ueberschritten ist
- Und die Abkuehlzeit seit dem letzten Versuch abgelaufen ist → Wird das Remediation-Script ausgefuehrt
- Das Remediation-Script laeuft mit erhoehter Prioritaet
- Beim naechsten erfolgreichen Check werden alle Zaehler zurueckgesetzt
Beispiel
Check: "Nginx laeuft"
Script: Prueft ob nginx aktiv ist (exit 0 = ok, exit 2 = critical)
Remediation-Script: systemctl restart nginx
Max. Versuche: 3
Abkuehlzeit: 300 Sekunden
Ablauf:
1. Check ergibt "Critical" → Zaehler: 1/1 (Grace erreicht)
2. → Remediation: nginx wird neugestartet (Versuch 1/3)
3. Naechster Check: Immer noch "Critical" → Zaehler: 2
4. → Abkuehlzeit pruefen: 300s vergangen? → Remediation (Versuch 2/3)
5. Naechster Check: "OK" → Alle Zaehler zurueckgesetztChecks zuweisen
Zuweisung erstellen
- Navigieren Sie zu Checks > Zuweisungen
- Klicken Sie auf Zuweisung erstellen
- Konfigurieren Sie:
| Feld | Beschreibung |
|---|---|
| Check | Welcher Check soll ausgefuehrt werden |
| Modul | Ziel-Modul |
| Ziel | Einzelner Host, Gruppe oder Kunde |
| Zeitplan | Wann soll der Check ausgefuehrt werden |
Zeitplan-Optionen
| Typ | Beschreibung |
|---|---|
| Einmalig | Einmalige Ausfuehrung zum geplanten Zeitpunkt |
| Taeglich | Jeden Tag zur angegebenen Uhrzeit |
| Woechentlich | Am gewaehlten Wochentag zur angegebenen Uhrzeit |
| Monatlich | Am gewaehlten Tag des Monats |
| Cron | Freie Cron-Expression (z.B. */5 * * * * fuer alle 5 Minuten) |
Einzelzuweisung
- Oeffnen Sie einen Host im Detail-Modal
- Waehlen Sie den Tab Checks
- Klicken Sie auf Check zuweisen
- Waehlen Sie den Check aus der Liste
- Speichern
Custom Field Mappings
Checks koennen Script-Ausgaben in benutzerdefinierte Felder schreiben. Dazu muss das Check-Script spezielle Zeilen ausgeben:
Script-Ausgabe-Format
#!/bin/bash
USAGE=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
echo "FIELD:disk_usage=$USAGE"
if [ "$USAGE" -gt 90 ]; then
echo "CRITICAL: Festplatte zu $USAGE% belegt"
exit 2
else
echo "OK: Festplatte zu $USAGE% belegt"
exit 0
fiZeilen mit dem Praefix FIELD: werden vom Backend geparst:
- Format:
FIELD:feldname=wert - Der
feldnamewird ueber die Custom Field Mappings des Checks einem benutzerdefinierten Feld zugeordnet - Der Wert wird automatisch im entsprechenden Custom Field des Hosts gespeichert
Ergebnisse
Im Host-Detail
Im Tab Checks des Detail-Modals sehen Sie:
- Alle zugewiesenen Checks
- Letzte Ergebnisse mit Severity-Farbe
- Zeitpunkt der letzten Pruefung
- Ausgabe des Check-Scripts
- Ob eine Remediation ausgeloest wurde
Farbcodierung
| Farbe | Severity | Bedeutung |
|---|---|---|
| Gruen | OK | Alles in Ordnung |
| Gelb | Warning | Aufmerksamkeit erforderlich |
| Rot | Critical | Sofortiges Handeln noetig |
| Grau | Unknown | Konnte nicht geprueft werden |
Ergebnis-Details
Jedes Check-Ergebnis enthaelt:
- Status (ok/warning/critical/unknown)
- Exit-Code des Scripts
- Stdout - Standardausgabe
- Stderr - Fehlerausgabe
- Custom Field Updates - Welche Felder aktualisiert wurden
- Remediation ausgeloest - Ob Auto-Remediation getriggert wurde
- Start-/Endzeit und Dauer
Aufbewahrung
Check-Ergebnisse werden automatisch nach 30 Tagen geloescht.
Ausfuehrung
Checks werden ausgefuehrt:
- Geplant nach dem konfigurierten Zeitplan der Zuweisung
- Manuell ueber den Button "Jetzt ausfuehren" in der Zuweisung
- Nach Updates als Health-Check in Update-Zeitplaenen
Beispiel-Checks
Festplattenbelegung pruefen
#!/bin/bash
USAGE=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
if [ "$USAGE" -gt 90 ]; then
echo "CRITICAL: Festplatte zu $USAGE% belegt"
exit 2
elif [ "$USAGE" -gt 80 ]; then
echo "WARNING: Festplatte zu $USAGE% belegt"
exit 1
else
echo "OK: Festplatte zu $USAGE% belegt"
exit 0
fiDienst pruefen
#!/bin/bash
SERVICE="nginx"
if systemctl is-active --quiet $SERVICE; then
echo "OK: $SERVICE laeuft"
exit 0
else
echo "CRITICAL: $SERVICE ist nicht aktiv"
exit 2
fiZertifikat pruefen
#!/bin/bash
DOMAIN="example.com"
DAYS=$(echo | openssl s_client -connect $DOMAIN:443 2>/dev/null | openssl x509 -noout -enddate 2>/dev/null | cut -d= -f2)
REMAINING=$(( ($(date -d "$DAYS" +%s) - $(date +%s)) / 86400 ))
if [ "$REMAINING" -lt 7 ]; then
echo "CRITICAL: Zertifikat laeuft in $REMAINING Tagen ab"
exit 2
elif [ "$REMAINING" -lt 30 ]; then
echo "WARNING: Zertifikat laeuft in $REMAINING Tagen ab"
exit 1
else
echo "OK: Zertifikat gueltig fuer $REMAINING Tage"
exit 0
fi