Wer check_mk als seine Monitoring-Lösung benutzen und damit auch Hosts mit Alpine Linux überwachen möchte, der steht erstmal vor einer Frage: Wo Alpine-Agent?
TL;DR
Es gibt keinen offiziellen Alpine Linux-Agent. Wir können uns aber das OpenWRT-Plugin zu nutze machen, welches praktischerweise sehr ähnlich zu Alpine Linux ist. Folgende Schritte sind dafür notwendig:
’socat‘ installieren
apk add socat
Agent vom Monitoring-Server herunterladen
wget http://DEINE-CHECKMK-URL/INSTANZNAME/check_mk/agents/check_mk_agent.openwrt
mv check_mk_agent.openwrt /usr/local/bin/check_mk_agent
chmod +x /usr/local/bin/check_mk_agent
OpenRC-Init-Datei für den Service erstellen: /etc/init.d/checkmk_agent
#!/sbin/openrc-run
description="Check_MK Agent on Alpine Linux"
name=check_mk_agent
command="/usr/bin/socat"
command_args="-U TCP-LISTEN:6556,fork,reuseaddr EXEC:/usr/local/bin/check_mk_agent"
command_user="root"
pidfile="/run/.pid"
command_background="yes"
depend() {
need net
}
Init-Datei ausführbar machen
chmod +x /etc/init.d/checkmk_agent
‚waitmax‘-Tool von check_mk herunterladen und ausführbar machen
wget http://DEINE-CHECKMK-URL/INSTANZNAME/check_mk/agents/waitmax
mv waitmax /usr/local/bin/
chmod +x /usr/local/bin/waitmax
Der check_mk_agent braucht ein paar Bugfixes für Alpine Linux
sed -i 's|CURRENT_SHELL=.*|CURRENT_SHELL="/bin/ash"|' /usr/local/bin/check_mk_agent
sed -i 's|\(_run_cached_internal .* "echo \)<<<\(.*\)>>>\(.*\)|\1\\\<\\\<\\\<\2\\\>\\\>\\\>\3|' /usr/local/bin/check_mk_agent
sed -i 's|echo "AgentOS: openwrt"|echo "AgentOS: alpine linux"|' /usr/local/bin/check_mk_agent
Kurze Erklärung: Mit sed werden bestimmte Zeilen im Script ersetzt. Zuerst wird die Variable CURRENT_SHELL fest auf den Wert /bin/ash gesetzt. Anschließend müssen bestimmte Vorkommen von <<< und >>> mit Backslashes escaped werden. Und zuletzt ersetzen wir openwrt noch mit alpine linux.
checkmk_agent-Dienst registrieren und starten
rc-update add checkmk_agent
rc-service checkmk_agent start
Zu guter Letzt kann der Host nun in check_mk hinzugefügt und eine Service-Erkennung durchgeführt werden.
Was ist mit NTP-Monitoring?
NTP (Network Time Protocol) wird standardmäßig über den Dienst ntpd gemanaged. ntpd läuft im Hintergrund als OpenRC-Dienst und sorgt unsichtbar dafür, dass die Host-Zeit mit dem Zeitserver synchron ist.
Leider bietet ntpd in Alpine keine Möglichkeit, den aktuellen Status abzufragen. Wer also den NTP-Status überwachen möchte, sollte hier auf chrony wechseln.
ntpd-Dienst stoppen und deaktivieren
rc-service ntpd stop
rc-update del ntpd
chrony installieren und konfigurieren
apk add chrony
chrony kommt mit einer Default-Konfiguration, welche rein theoretisch auch so verwendet werden kann. Ich persönlich nutze aber einen zentralen NTP-Server in meinem Heimnetz und passe die Konfiguration in /etc/chrony/chrony.conf entsprechend so an:
pool DEIN-NTP-SERVER iburst
driftfile /var/lib/chrony/chrony.drift
makestep 1.0 3
keyfile /etc/chrony.keys
ntsdumpdir /var/lib/chrony
leapsectz right/UTC
logdir /var/log/chrony
chronyd-Dienst registrieren und starten
rc-update add chronyd
rc-service chronyd start
Dadurch haben wir nun den standartmäßig installierten Dienst ntpd durch chrony ersetzt. Die Funktion von chrony kann mit chronyc tracking getestet werden.
Beispiel:
$ chronyc tracking
Reference ID : C0A8B232 (192.168.178.1)
Stratum : 3
Ref time (UTC) : Sun Mar 22 09:45:25 2026
System time : 0.000015352 seconds fast of NTP time
Last offset : -0.000000014 seconds
RMS offset : 0.000078007 seconds
Frequency : 66.531 ppm slow
Residual freq : +0.000 ppm
Skew : 0.045 ppm
Root delay : 0.024418741 seconds
Root dispersion : 0.012379392 seconds
Update interval : 519.3 seconds
Leap status : Normal
Diese Informationen kann der check_mk Agent nun nutzen und verarbeiten und zeigt im Dashboard dann Warnungen an, wenn die Zeit deines Servers von der NTP-Serverzeit abweicht.
