Check_MK erlaubt die Überwachung eines Hosts über mehrere Wege, z.B. per SNMP, SSH, Agent oder APIs des jeweiligen Services (z.B. beim VMware ESXi Server). Wer noch keine laufende Check_MK Instanz hat, kann sich in meinem Beitrag "Check_MK in OMD einrichten" ansehen, wie eine Monitoring Site installiert wird.
In diesem Beitrag gehe ich davon aus, dass die OMD Site prod heißt und grundsätzliches Verständnis von Linux vorhanden ist.
SSH Keypair erstellen
Für eine automatische Authentifizierung empfehle ich SSH mit private / public Key. Der SSH Key darf kein Passwort haben, sonst kann sich die Monitoring Site nicht per SSH am Linux Client einloggen da ein Passwort für den SSH Key verlangt wird. Den Key am besten im Kontext des Monitoring Users, in diesem Fall prod, erstellen. Ansonsten muss der Key zusätzlich in den .ssh Ordner des Users kopiert werden.
su - prod ssh-keygen -t ed25519
Die aufkommenden Fragen einfach bestätigen und bei der Frage nach der Passphrase nichts eingeben.
Passt gut auf den private SSH Key auf und schützt den Zugang zum Monitoring System! Da der public Key auf jedem System eingetragen wird, kann sich der Besitzer des private SSH Keys ohne Authentifizierung auf jedes System verbinden.
Benutzer auf dem Linux Client einrichten
Da wir einen passwortlosen private SSH Key haben, empfehle ich einen dedizierten Monitoring User für jedes Linux System zu erstellen. Hinterlegt den public Key nicht für den root User! Der public Key von der Monitoring Site ist unter ~/.ssh/id_ed25519.pub zu finden und muss auf dem zu überwachenden Linux Client in die ~./ssh/authorized_keys Datei kopiert werden.
Ein dedizierter User für das Monitoring lässt sich z.B. mit Hilfe von useradd einrichten. Anschließend das Homeverzeichnis des Users mit Unterordner .ssh für den public SSH Key erstellen und optional die Shell des neuen Users in die /bin/bash ändern. In der Vergangenheit hat mir das Probleme bei Skripten erspart, die durch den check_mk_agent ausgeführt wurden.
useradd monitoring chsh monitoring -s /bin/bash mkdir -p /home/monitoring/.ssh chown -R monitoring: /home/monitoring
Agent einrichten
Der check_mk_agent ist ein Bash Script, dass alle Daten sammelt die von der Monitoring Site ausgewertet werden sollen. Das Script wird von der Monitoring Site heruntergeladen, auf dem Linux Client unter /usr/local/bin/check_mk_agent abgelegt und ausführbar gemacht.
chmod +x /usr/local/bin/check_mk_agent
Um sich den Output des Scripts mal anzusehen, kann es auch manuell ausgeführt werden.
Sudo einrichten
Die meisten Werte bekommt man mit Hilfe des Agents auch ohne sudo. Einige erfordern allerdings root Rechte. Deswegen führen wir den Agent mit sudo aus. Das ganze soll natürlich ohne Passwortabfrage passieren. Deswegen wird der sudo Eintrag um NOPASSWD ergänzt. Ob man die dadurch zusätzlichen gewonnenen Werte benötigt, muss jeder selber abwägen.
visudo %monitoring ALL=NOPASSWD:/usr/local/bin/check_mk_agent
Dieser sudoers Eintrag erlaubt der lokalen Linux Gruppe monitoring das Skript /usr/local/bin/check_mk_agent unter sudo mit root Rechten und ohne Passwortabfrage auszuführen.
Check_MK konfigurieren
Jetzt muss in Check_MK die Verbindung per SSH noch konfiguriert werden. Dafür legen wir Host Tags an und verknüpfen mit Hilfe der Host Tags die Abfrage per SSH mit dem Linux Client.
Host Tags einrichten
In Wato unter Host Tags fügen wir drei neue Tag Choices hinzu. Die Tag Group agent editieren wir als erstes und fügen die erste neue Tag choice hinzu.
Tag ID: cmk-agent-ssh
Description: Check_MK Agent (SSH)
Bei Bedarf kann die Tag choice mit Hilfe der Pfeile noch an eine andere Position geschoben werden. Die in diesem Menü abgebildete Reihenfolge spiegelt die Reihenfolge später beim Hinzufügen des Hosts wieder.
Anschließend erstellen wir unter Host Tags eine neue Tag Group mit folgenden Werten:
Internal ID: OS
Title: Operating System
Tag choices:
none-os None
linux Linux
Datasource in Check_MK hinzufügen
Im letzten Schritt wird eine neue Datasource eingerichtet die endlich den benötigten SSH Befehl konfiguriert. Dafür erstellen wir in Wato unter Host & Service Parameters --> Datasource Programs --> Individual program call instead of agent access eine neue Regel.
Unter Command line to execute wird folgender Befehl eingetragen:
ssh -o UserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no -l monitoring <IP> sudo check_mk_agent
Anschließend noch die Conditions einstellen:
Agent type is Check_MK Agent (SSH)
Operating System is Linux
Die Conditions stellen sich aus den konfigurierten Host Tags zusammen und die hier getätigten Einstellungen bedeuten, dass nur Hosts mit diesem SSH Befehl abgefragt werden sollen, die als Agent type den Check_MK Agent (SSH) und als Operating System Linux eingestellt haben. So lässt sich der SSH Befehl für unterschiedliche Systeme variieren. Für ein FreeBSD ließe sich z.B. ein anderer SSH Befehl einstellen. Komplett andere Bedingungen sind natürlich auch möglich, müssen nur vorher unter den Host Tags definiert werden.
Host einrichten
Jetzt kann unter Hosts der erste Host per SSH überwacht werden. Dafür erstellen wir einen neuen Host, setzen den Hostname, die IP Adresse und unter Host Tags den Agent type auf Check_MK Agent (SSH) und Operating System Linux.
Ein Klick auf Save & go to Services führt ein Service Discovery auf dem Host aus und listet alle gefundenen Services. Ein Klick auf Activate missing fügt die gefundenen Services zu Check_MK hinzu.
Im letzten Schritt muss die neue Konfiguration mit einem Klick auf X Changes --> Activate Changes aktiviert werden.
Jetzt noch ein paar Minuten warten und man kann sich die gesammelten Daten des Hosts in der Service Übersicht des Hosts ansehen. Diese erreicht man unter Views --> All hosts --> [Hostname]
Fazit
Jetzt ist die Grundlage gelegt, um das Monitoring weiter ausbauen zu können. Der Check_MK Agent erlaubt nicht nur das Sammeln der schon vorgegebenen Werte sondern kann um verschiedene weitere Abfragen erweitert werden, z.B. per MRPE oder Agent Plugins.
Hi,
Danke für den tollen Einstieg. 🙂
Zusätzlich zu Deinen Ausführungen habe ich noch den Key Command eingeschränkt, sodass der monitoring Key wirklich nur den check_mk Agent ausführt.
Aus der Data Source kann dann der sudo Befehl entfernt werden, da der Agent nun bei jedem SSH Login automatisch ausgeführt wird und die Verbindung danach wieder geschlossen wird.
Es gibt also keine „mach was Du willst“ Shell mehr. 🙂
VG
Christian
Das ist eine sehr gute Idee und werde ich übernehmen. Danke!