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