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
- 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.