Mit CheckMK kann man auch bei OpenBSD-Maschinen (oder VMs) überwachen, ob es neue Versionen oder anstehende Updates gibt.

Grundvoraussetzung dafür ist der CheckMK Agent für OpenBSD. Wenn der installiert ist, können neben den üblichen Parametern (CPU, Ram, Disk Space etc.) mit einem bisschen Scripting auch noch ein paar andere Dinge abgefragt werden. Wie das geht, zeige ich hier.

OpenBSD Agent installieren

  • Inetd in /etc/rc.conf.local aktivieren
    inetd_flags=
  • Inetd aktivieren
    rcctl enable inetd
  • CheckMK Service in /etc/services eintragen (richtige Stelle suchen!)
    check_mk 6556/tcp
  • Den OpenBSD Agent vom CheckMK Host herunterladen
    OpenBSD-Agent
  • Auf die OpenBSD Maschine transferieren, nach /usr/local/sbin/ kopieren und mit chmod 700 ausführbar machen
  • Dann den CheckMK Agent als Service in die /etc/inetd.conf eintragen
    check_mk stream tcp nowait root /usr/local/sbin/checkmk-agent
  • Den inetd mit rcctl start inetd starten

That’s it. Jetzt noch den Host in CheckMK eintragen, Services discovern, Pflicht fertig. Nun zur Kür.

Lokale Checks

Anstehende Updates für Pakete und System abfragen

Updates für installierte Paktete werden bei OpenBSD mit syspatch eingespielt. Aus Laufzeit-Gründen (syspatch -c läuft ca. 30 Sekunden, curl ist immer abhängig vom Internet) ist dieser Check zweigeteilt: Der erste Teil (/usr/local/sbin/upgrade-check) läuft per Cron-Job zweimal am Tag und schreibt die Anzahl der verfügbaren System-Updates in die Datei /var/upgrade-check/syspatch.state und legt die Startseite der OpenBSD Website zwecks Ermittlung der aktuellen Version im gleichen Verzeichnis ab.

#!/usr/local/bin/bash

if [ ! -d /var/upgrade-check ]; then
   mkdir /var/upgrade-check
fi

NUM=`syspatch -c|wc -l|xargs echo -n`
if [[ $NUM == "" ]]; then
   echo "0" > /var/upgrade-check/syspatch.state
else
   echo "$NUM" > /var/upgrade-check/syspatch.state
fi
curl -s -o /var/upgrade-check/openbsd.org.html https://www.openbsd.org/

Anstehende Updates für Pakete

Der zweite Teil (/usr/lib/check_mk_agent/local/patches.sh) wertet diese Datei /var/upgrade-check/syspatch.state aus und erzeugt eine Meldung in CheckMK, wenn Pakete aktualisiert werden können.

#!/usr/local/bin/bash
NUM=`cat /tmp/syspatch.state`
if [[ $NUM == "0" ]]; then
   echo "0 \"Available Patches\" - None"
else
   echo "1 \"Available Patches\" - $NUM packages need updates"
fi

Patches installieren muss man selber, dazu per SSH am System anmelden, root werden und syspatch aufrufen.

Anstehende Updates für’s System

Für die Auswertung der Versionsinformationen von der OpenBSD Website verwenden wir hier die Scraping-Software pup, die wir mit pkg_add pup installieren müssen.

Der lokale CheckMK-Check (/usr/lib/check_mk_agent/local/version.sh) extrahiert die aktuelle Version da raus und vergleicht mit der lokal installierten Version

#!/usr/local/bin/bash
OVER=`cat /var/upgrade-check/openbsd.org.html | pup ':contains("current") text{}' | grep -i openbsd`
LVER=`uname -a | awk '{ print $1 " " $3 }'`
if [ "$LVER" = "$OVER" ]; then
   echo "0 \"OS Version\" - $LVER"
else
   echo "1 \"OS Version\" - Update available. Local: $LVER, Online: $OVER"
fi

Mit diesen beiden Checks werden auch für OpenBSD Systeme anstehende Updates in CheckMK alarmiert.