Skip to content

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:

  1. Check-Definition - Was wird geprueft? (Name, Kategorie, Scripts)
  2. Severity-Mapping - Wie werden Exit-Codes interpretiert?
  3. Auto-Remediation - Optionale automatische Fehlerbehebung
  4. Zuweisungen - Welche Hosts werden geprueft und wann?

Checks verwalten

Die Check-Verwaltung erreichen Sie ueber den Navigationspunkt Checks.

Check erstellen

  1. Klicken Sie auf Check erstellen
  2. Konfigurieren Sie den Check:
FeldBeschreibungPflicht
NameBezeichnung des ChecksJa
BeschreibungWas prueft dieser Check?Nein
KategorieOrganisationskategorie (frei waehlbar)Nein
ModulFuer welche Module ist der Check verfuegbarJa
ScriptsEin oder mehrere Scripts aus der BibliothekJa
AktiviertOb der Check ausfuehrbar istJa

Kategorien

Kategorien dienen der Organisation Ihrer Checks. Der Kategoriename ist frei waehlbar, gaengige Beispiele:

KategorieTypische Pruefungen
diskFestplattenbelegung, SMART-Status
memoryRAM-Auslastung, Swap-Nutzung
servicesDienst-Verfuegbarkeit, Prozess-Pruefung
securitySicherheitsrichtlinien, Zertifikatsablauf
customBenutzerdefinierte Pruefungen (Standard)

Severity-Mapping

Das Severity-Mapping ordnet Exit-Codes eine Schwere zu:

Exit-CodeSeverityBedeutung
0OKPruefung bestanden
1WarningWarnung
2CriticalKritisch
3+UnknownUnbekannt

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

FeldBeschreibungStandard
Remediation aktiviertAuto-Remediation ein-/ausschaltenNein
Remediation-ScriptScript, das bei Fehler ausgefuehrt wird-
Max. VersucheMaximale Anzahl Remediation-Versuche pro Fehlerserie (1-10)3
AbkuehlzeitMindestzeit zwischen Remediation-Versuchen (in Sekunden, min. 60)300 (5 Min.)

Ablauf

  1. Check wird ausgefuehrt und schlaegt fehl (Status: Warning oder Critical)
  2. Der Zaehler konsekutive Fehler wird erhoeht
  3. 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
  4. Das Remediation-Script laeuft mit erhoehter Prioritaet
  5. 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 zurueckgesetzt

Checks zuweisen

Zuweisung erstellen

  1. Navigieren Sie zu Checks > Zuweisungen
  2. Klicken Sie auf Zuweisung erstellen
  3. Konfigurieren Sie:
FeldBeschreibung
CheckWelcher Check soll ausgefuehrt werden
ModulZiel-Modul
ZielEinzelner Host, Gruppe oder Kunde
ZeitplanWann soll der Check ausgefuehrt werden

Zeitplan-Optionen

TypBeschreibung
EinmaligEinmalige Ausfuehrung zum geplanten Zeitpunkt
TaeglichJeden Tag zur angegebenen Uhrzeit
WoechentlichAm gewaehlten Wochentag zur angegebenen Uhrzeit
MonatlichAm gewaehlten Tag des Monats
CronFreie Cron-Expression (z.B. */5 * * * * fuer alle 5 Minuten)

Einzelzuweisung

  1. Oeffnen Sie einen Host im Detail-Modal
  2. Waehlen Sie den Tab Checks
  3. Klicken Sie auf Check zuweisen
  4. Waehlen Sie den Check aus der Liste
  5. Speichern

Custom Field Mappings

Checks koennen Script-Ausgaben in benutzerdefinierte Felder schreiben. Dazu muss das Check-Script spezielle Zeilen ausgeben:

Script-Ausgabe-Format

bash
#!/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
fi

Zeilen mit dem Praefix FIELD: werden vom Backend geparst:

  • Format: FIELD:feldname=wert
  • Der feldname wird 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

FarbeSeverityBedeutung
GruenOKAlles in Ordnung
GelbWarningAufmerksamkeit erforderlich
RotCriticalSofortiges Handeln noetig
GrauUnknownKonnte 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

bash
#!/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
fi

Dienst pruefen

bash
#!/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
fi

Zertifikat pruefen

bash
#!/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

DATAZONE Control Documentation