Tags: Monitoring, Windows Server, ESXi, Linux
Damit Checkmk von Systemen Daten einsammeln und sie überwachen kann, muss man auf Windows- und Linux-Servern einen Agent installieren. Bei ESXi und vCenter reicht es hingegen aus, Regeln zu definieren, um ihre integrierten Monitoring-APIs anzusprechen. Dieser Beitrag zeigt, wie man dabei vorgeht.
Viele etablierte Monitoring-Lösungen konzentrieren sich auf Ereignisse (Events). Bekannte Quellen dafür sind Nachrichten des Syslog-Systems, SNMP-Traps oder auch das Windows- bzw. ESXi-Eventlog. Ein Ereignis wäre etwa ein Zugriffsfehler auf eine SSD.
Im Gegensatz zu einem Ereignis, das irgendwann spontan und von selbst passiert (asynchron), ist ein Zustand eine anhaltende Situation, wie zum Beispiel "SSD X ist online". Möchte man aber den aktuellen Status einer Komponente überwachen, muss das Monitoring-System diesen regelmäßig abfragen.
Fokus auf zustandsbasiertem Monitoring
Checkmk kann mit beiden Varianten umgehen, gibt aber, wo immer möglich, dem zustandsbasierten Monitoring den Vorrang, da diese Methode einige Vorteile bietet. So kann das Monitoring-System bei der Zustandsüberwachung selbst steuern, in welcher Frequenz es Daten abruft. Bei Meldungen hingegen kann es in systemweiten Problemsituationen zu regelrechten Event-Stürmen kommen.
Für Checkmk ist das zustandsbasierte Monitoring quasi der Normalbetrieb, während für die Verarbeitung von Ereignissen explizit die Checkmk Event Console zuständig ist. Sie ist laut Hersteller auf das Korrelieren und Bewerten von großen Mengen von Events spezialisiert und in das Monitoring integriert.
Beim zustandsbasierten Monitoring differenziert die Software zwischen mehreren Methoden. So kann sie von den überwachten Systemen einfach Dienste wie SMTP, IMAP oder HTTP abfragen, wozu Checkmk sowohl eigene als auch Nagios-Plugins nutzt.
Läuft auf dem Zielsystem ein SMNP-Dienst, dann lässt es sich auch auf diesem Weg überwachen, etwa bei Netzwerkgeräten wie Routern und Switches. Darüber hinaus gibt spezielle Checkmk-Agenten für viele Plattformen, darunter natürlich Windows, Linux, MacOS, BSD aber auch für OpenWRT.
Agenten sind in der Regel Shell-Scripts, die auf Port 6556 lauschen. Sie übermitteln ihre Ergebnisse als passive Checks an den Server, wenn dieser sie im konfigurierten Intervall anfragt.
Nur wenn das Zielsystem kein Installieren von Agenten erlaubt, dann kann der Checkmk-Server selbst welche ausführen, die über unterschiedliche Wege auf die über überwachten Systeme zugreifen.
Hosts in die Überwachung aufnehmen
Wir werden nun exemplarisch je einen Linux, Windows- und ESXi-Server in die Überwachung aufnehmen. Erste Anlaufstelle dazu ist der Abschnitt WATO - CONFIGURATION unten links im sonst noch leeren Web-Interface.
Wir beginnen mit dem Hinzufügen von Linux-Hosts, da es Sinn macht, auch den Checkmk-Server selbst in die Überwachung einzubeziehen. Den hierfür benötigten Agenten bietet Checkmk direkt im Web-Interface zum Download an.
Wir klicken daher zunächst nicht auf Hosts, sondern auf Monitoring Agents und laden die DEB-Version für Linux herunter. Wir tun dies aber nicht auf unserer Windows-Workstation, denn dann müssten wir das Paket anschließend wieder per SCP auf den Monitoring-Server kopieren (das ist die von Checkmk empfohlene Methode). Vielmehr wechseln wir zum Browser direkt auf dem Checkmk-Server.
Das heruntergeladene DEB-Paket speichern wir im Downloads-Verzeichnis des Linux-Nutzers, werden dann wieder zu root und installieren es mit gdebi.
gdebi /home/drilling/Downloads/check-mk-agent_1.6.0p6-fd07a8d8b06b9cdc_all.deb
Ist das geschehen, können wir den Checkmk-Server als Host im Web-Interface (WATO - CONFIGURATION => Hosts) durch Klick auf die Schaltfläche "New host"(oben) oder "Create new host" mit seiner IP-Adresse oder besser per FQDN hinzufügen.
Der bei Hostname fällige Eintrag muss nicht zwingend dem DNS-Namen entsprechen, eine funktionierende DNS-Auflösung macht aber vieles leichter. Ist der Name auflösbar, muss keine IP-Adresse angegeben werden.
Die Seite Create new host ist sehr umfangreich und erlaubt insbesondere im Abschnitt DATA SOURCES die Wahl zwischen den oben beschriebenen Monitoring-Methoden. Hier sind zunächst keine Einstellungen erforderlich und der Host kann mit einem Klick auf Save & go to Services gespeichert werden.
Der Checkmk-Server fragt nun den auf dem Host installierten Agenten ab. Sofern dieser korrekt läuft und erreichbar ist, findet Checkmk automatisch eine Reihe von Services und schlägt diese für das Monitoring vor. Der Nutzer kann nun im Detail festlegen, welche er überwachen möchte.
Mit einem Klick auf die Monitor-Schaltfläche werden alle angebotenen Services in die Überwachung übernommen.
Danach zeigt das Web-Interface oben links einen Button mit der Aufschrift 2 changes (Host hinzufügen, alle Services übernehmen), die man übernehmen muss.
Die geschieht mit einem Klick auf Activate affected.
Danach taucht der neue Host oben links bei TACTIAL OVERVIEW auf und unter VIEWS => Overview => Main Overview trudeln erste Daten ein.
Windows-Server überwachen
Das Installieren eines Agenten auf einem Windows-Host und das Aufnehmen desselben in die Überwachung laufen nach dem gleichen Muster ab. In diesem Fall laden wir das MSI-Paket wieder aus dem Web-Interface herunter.
Dessen Installation ist einfach und erfordert keine Erklärung.
Anschließend nehmen wir den Windows-Host wie gehabt in die Überwachung auf.
ESXi und vCenter überwachen
Beim Hinzufügen von ESXi-Hosts verfahren wir in gleicher Weise, verzichten aber auf das vorherige Installieren eines Agenten. VMware bietet nämlich ein eigenes API an, das der Checkmk-Server direkt ansprechen kann.
Zudem umfasst ESXi bekanntlich eigene CIM-Provider, mit deren Hilfe Monitoring-Software auch Hardware-Informationen vom Host erhalten kann. Damit Checkmk für ESXi-Hosts die vSphere-eigene API nutzt, definiert man eine Art Regel im Dialog unter WATO - CONFIGURATION => Host & Service Parameters. Dazu klickt man auf die Schaltfläche Datasource Programs.
Anschließend wählen wir in der Liste DATASOURCE PROGRAMS den Eintrag Check state of VMWare ESX via vSphere.
Hier erstellen wir jetzt eine neue Regel, die voraussetzt, dass wir zuvor auf dem ESXi-Host einen User checkmk mit Leserechten angelegt haben. Diesen geben wir bei vSphere User name nebst seines Passworts an. Im Abschnitt Retrieve information about wählen wir Host Systems, Datastores und Performance Counters. Bei den übrigen Einstellungen belassen wir die Default-Werte.
Nach dem Speichern der Änderungen liefert der Scan eines Hosts auch ESXi-spezifische Services wie Datastore IO SUMMARY oder CPU utilization, die ins Monitoring aufgenommen werden können.
Dazu klicken wir wieder auf Monitor.
Wir haben in unserem Beispiel ESXi-Hosts, den Checkmk-Server selbst (Linux) und einen Windows-Server der Überwachung hinzugefügt, wobei momentan einer der ESXi-Server down ist, was Checkmk auch sofort erkennt.
Täglich Know-how für IT-Pros mit unserem Newsletter
Seine Themenschwerpunkte sind Virtualisierung und Cloud Computing, speziell VMware, Amazon Web Services, Google Cloud und Microsoft Azure. Thomas ist zertifizierter VMware Professional, Advanced Professional und wurde von VMware in den Jahren 2016, 2017, 2018, 2019 und 2020 mit dem Blogger-Status vExpert ausgezeichnet.
Thomas ist außerdem zertifizierter AWS Solutions Architect, Sysops Engineer und Devops Engineer sowie Microsoft Certified Azure Administrator.
Thomas führt aktuell jeden zweiten Montag einen 4-tägigen Grundlagenkurs in Cloud Computing mit AWS via Zoom-Meeting durch. Weitere Informationen und Anmeldung über sein AWS-Blog.
Verwandte Beiträge
Weitere Links
1 Kommentar
.... und für alle die es gerne unter Windows automatisieren möchten:
------------------
prompt $p_$t$G
SET SOURCE=%~dp0
REM Installing CheckMK
msiexec /i "%SOURCE%check_mk_agent" /qn
REM set Firewall Rules
:: Allow ICMP Echo (Ping)
netsh advfirewall firewall delete rule name="ICMP Allow incoming V4 echo request"
netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action=allow
:: Allow TCP Port 6556 (check-mk-agent)
netsh advfirewall firewall delete rule name="CheckMK" dir=in protocol=TCP localport=6556
netsh advfirewall firewall add rule name="CheckMK" dir=in action=allow protocol=TCP localport=6556