1. Einleitung
Die Überwachung von Windows-Servern war von Anfang an eine der wichtigsten Aufgaben von Checkmk. Wie für alle anderen Server-Betriebssysteme liefert Checkmk daher auch für Windows einen eigenen Agenten aus. Dieser hat gegenüber einer Überwachung mit WMI oder SNMP etliche Vorteile, denn er ist:
Minimalistisch, denn er begnügt sich mit minimalen Ressourcen an RAM, CPU und Netzwerk.
Sicher: denn er liest keine Daten aus dem Netzwerk. Dadurch wird jeglicher externe Zugriff auf das System unterbunden.
Umfassend, denn er hat Zugriff auf wichtige Daten, die per WMI oder SNMP nicht erreichbar sind.
Leicht erweiterbar, denn Sie können Erweiterungen in einer beliebigen Programmier- oder Skriptsprache schreiben.
Offen, denn obwohl der Agent als ausführbare Datei ausgeliefert wird, haben Sie jederzeit Zugriff auf den Quellcode und können den Agenten daher prinzipiell auch selbst kompilieren und haben jederzeit Einsicht in die Funktionalität. Es wird kein unbekannter Code verwendet.
Die Installation und Einrichtung des Agenten ist sehr einfach und mit wenigen Schritten erledigt, denn dieser braucht für seine Funktion zum Beispiel keine zusätzlichen Bibliotheken. Zudem wird er mit einer Grundkonfiguration ausgeliefert, welche für die meisten Anwendungsfälle ausreicht.
Im Betrieb besteht der Agent aus einem Windows-Dienst, welcher das mitgelieferte Programm — den Agent — startet. Dieser sammelt bei einem Aufruf Daten zu dem lokalen System und stellt diese dem Monitoring, wie bei anderen Agenten auch, über Port 6556 zur Verfügung.
In den Checkmk Enterprise Editions können Sie den Agenten mithilfe der
automatischen Agenten-Updates automatisch zentral
updaten und konfigurieren. Alternativ können Sie
das MSI-Paket auch über andere Wege, wie zum Beispiel das Microsoft Active
Directory verteilen. Die Installation kann hier durch das MSI-Format komplett
automatisiert werden.
Aus Kompatibilitätsgründen werden nur die Hauptversionen von Windows unterstützt. Die folgende Tabelle listet diese noch einmal explizit auf:
Version | Edition |
---|---|
NT 6.0 | Windows Vista |
NT 6.0 | Windows Server 2008 |
NT 6.1 | Windows 7 |
NT 6.1 | Windows 2008 R2 |
NT 6.2 | Windows 8 |
NT 6.2 | Windows Server 2012 |
NT 6.3 | Windows 8.1 |
NT 6.3 | Windows 2012 R2 |
NT 6.4 / NT 10.0 | Windows 10 |
NT 6.4 / NT 10.0 | Windows Server 2016 |
NT 6.4 / NT 10.0 | Windows Server 2019 |
NT 6.4 / NT 10.0 | Windows Server 2022 |
Wichtig: Editionen, die in der Tabelle nicht erwähnt werden, werden nicht offiziell unterstützt. Dazu gehört zum Beispiel auch Windows Embedded.
2. Installation des Agenten
2.1. Verschiedene Möglichkeiten
Checkmk bietet Ihnen für die Installation des Windows-Agenten verschiedene Wege — von der
manuellen Installation der Einzelteile bis hin zum vollautomatischen Deployment.
Manche davon stehen nur in den Checkmk Enterprise Editions zur Verfügung:
Methode | Beschreibung | CRE | CEE |
---|---|---|---|
Mitgeliefertes MSI-Paket | Einfache Installation eines Standard-Agenten mit manueller Konfiguration. | X | X |
Konfiguration über die GUI, individuelle Konfiguration pro Host möglich. | X | ||
Paket aus Agentenbäckerei wird per Hand Skript installiert, danach automatisch aktualisiert. | X |
2.2. Installation per MSI-Paket
Unabhängig davon, ob Sie die MSI-Pakete über die
Agentenbäckerei erstellen lassen,
oder auf jedem Host manuell konfigurieren: Sie benötigen zuerst die
Installationsdatei. In der Checkmk Raw Edition gelangen Sie über Setup > Agents > Windows
zu den Packaged Agents. Dort finden die benötigte Datei check_mk_agent.msi.

In den Enterprise Editions finden Sie die gebackenen Pakete über Setup > Agents > Windows, Linux, Solaris, AIX. Klicken Sie zum Download einfach auf das Icon in der Spalte Windows.

Laden Sie diese MSI-Datei auf den Host und starten Sie die Installation. Prinzipiell müssen Sie nur dem Menü folgen und die Lizenzbedingungen der GNU GENERAL PUBLIC LICENSE lesen und diesen zustimmen.
Nach der Installation wird der Agent sofort als Windows-Dienst gestartet und ist für die Überwachung des Systems bereit.
Unbeaufsichtigte Installation
Windows bietet über msiexec
die Möglichkeit, Installationen von
MSI-Paketen automatisiert durchzuführen. Eine automatisierte Installation kann dann
zum Beispiel folgendermaßen aussehen:
C:\Users\hhirsch\Downloads\> msiexec /i check_mk_agent.msi /qn
In diesem Fall wird der Agent unter dem Standardpfad installiert und ebenfalls sofort als Windows-Dienst gestartet. Diese Methode eignet sich also hervorragend zum automatischen Ausrollen des Agenten auf viele Hosts.
Sie können auf diesem Wege auch die drei Optionen, die Sie im Screenshot im Abschnitt Migration zum neuen Standardagenten sehen, verändern. Um eine Option zu aktivieren hängen sie deren Bezeichner gefolgt von einem Gleichzeichen an:
C:\Users\hhirsch\Downloads\> msiexec /i check_mk_agent.msi /qn WIXUI_CLEANINSTALL=
Um eine der Optionen explizit zu deaktivieren, müssen Sie hinter dem Gleichzeichen noch zwei Anführungszeichen anfügen:
C:\Users\hhirsch\Downloads\> msiexec /i check_mk_agent.msi /qn WIXUI_MIGRATELEGACY=""
Option im graphischen Installer | Bezeichner |
---|---|
Clean installation | WIXUI_CLEANINSTALL |
Remove Legacy Windows Agent (pre 1.6) if present | WIXUI_REMOVELEGACY |
Migrate from Legacy Windows Agent (pre 1.6) configuration if present | WIXUI_MIGRATELEGACY |
Windows Firewall
Der Agent legt bei seiner Installation bereits eine Regel in der Windows-Firewall an, damit er über den Port 6556 von außen erreichbar ist. Sollten Sie allerdings bei der Service-Erkennung oder bei einem Verbindungstest zum Host überhaupt keine Informationen bzw. nur Fehlermeldungen über Timeouts erhalten, so sollten Sie auf dem Host die Inbound Rules der Windows-Firewall prüfen.

In aktuellen Versionen von Windows können Sie die Windows Firewall with Advanced Security über die Windows Einstellungen finden oder über den Aufruf von wf.msc
über die Kommandozeile starten.

Sollten Sie in den Einstellungen der Windows-Firewall keinen solchen Eintrag finden, können Sie diesen genau an dieser Stelle hinzufügen. Klicken Sie dafür im Menü Action auf New Rule.
Daraufhin öffnet sich ein Assistent für die Erstellung einer neuen Firewall-Regel. Stellen Sie die fünf Auswahlmöglichkeiten wie folgt ein:
Rule Type | Belassen Sie die Auswahl hier auf Program. |
Program | Tragen Sie unter This program path |
Action | Belassen Sie die Auswahl auf Allow the connection. |
Profile | Dieser Punkt kommt stark auf die Konfiguration Ihres Netzwerks an. Es empfiehlt sich allerdings in den meisten Fällen hier nur Domain und Private zu aktivieren. |
Name | Geben Sie der Regel einen prägnanten und kurzen Namen. |
Alternativ können Sie auch diesen Schritt automatisieren und die Regel direkt auf der Kommandozeile setzen. Passen Sie den folgenden Befehl gegebenenfalls Ihrem angepassten Installationspfad an:
C:\Windows\System32> netsh advfirewall firewall add rule name="Check_MK" ^
description="Monitoring" dir=in localport=6556 protocol=tcp action=allow ^
program="%ProgramFiles(x86)%\checkmk\service\check_mk_agent.exe" ^
profile=private,domain enable=yes
OK.
Hinweis: Der Befehl wurde zugunsten der Lesbarkeit in vier Zeilen aufgeteilt.
2.3. Installation mit der Agentenbäckerei
Die
Checkmk Enterprise Editions verfügen auch für den Agenten unter Windows über die Möglichkeit, diesen über die Agentenbäckerei individuell über das Setup-Menü zu konfigurieren.
Eine ausführliche Beschreibung finden Sie im allgemeinen Kapitel über die Agenten.
Die Installation des gebackenen MSI-Pakets geschieht dann wieder genau wie oben beschrieben.
2.4. Automatisches Updaten
Wenn Sie die Agentenbäckerei verwenden, können Sie automatische Updates
des Agenten einrichten. Diese werden in einem eigenen Artikel
beschrieben.
3. Architektur des Agenten
3.1. Verzeichnisse des Agenten
Der Agent gliedert sich in zwei Bereiche des Dateisystems auf:
C:\Program Files (x86)\checkmk\service\
- Hier werden programmspezifische Dateien installiert. Anpassungen sind hier nicht nötig. In das VerzeichnisProgram Files (x86)
wird der Agent aus Gründen der Kompatibilität installiert. Dies ist unabhängig davon, ob der Agent auf ein 32- oder 64-Bit Betriebssystem installiert wird. Die Installationsroutine wählt automatisch den richtigen Agenten aus.C:\ProgramData\checkmk\agent\
- Hier werden host-spezifische Dateien gespeichert. Das Verhalten des Agenten wird hier konfiguriert und Plugins, Logs, etc. werden ebenfalls unterhalb dieses Verzeichnisses abgelegt.
Hinweis: Normalerweise ist dieses Verzeichnis vom System als unsichtbar markiert.
3.2. Die Konfigurationsdateien des Agenten
Für die Konfiguration des Agenten liest dieser nacheinander und hierarchisch drei Dateien ein:
C:\Program Files (x86)\checkmk\service\check_mk.yml
- Hier ist die Standardkonfiguration hinterlegt. Diese dürfen Sie nicht ändern.C:\ProgramData\checkmk\agent\bakery\check_mk.bakery.yml
- Diese Datei wird von der Agentenbäckerei erstellt und überschreibt gegebenfalls einen Standardwert aus der vorherigen Datei.C:\ProgramData\checkmk\agent\check_mk.user.yml
- In dieser Datei können Sie von Hand individuelle Anpassungen vornehmen, um eine Einstellung oder eine Erweiterung auf einem Host zu testen. Diese Datei wird nach der Konfiguration aus der Agentenbäckerei eingelesen und überschreibt diese gegebenenfalls.
Wie Sie vielleicht schon an der Dateiendung der Konfigurationsdateien erkannt haben, wird als Konfigurationsformat YAML verwendet. Wir haben uns entschieden, ab Version 1.6.0 dieses Format zu verwenden, da es damit einfacher möglich ist, strukturierte Daten zu konfigurieren, als mit dem klassischen INI-Format.
Für das manuelle Arbeiten mit dem Agenten ist also lediglich die letzte
Konfigurationsdatei (check_mk.user.yaml
) relevant, weil sie als
letzte eingelesen wird und damit das letzte Wort hat. Wenn die
Agentenbäckerei nicht genutzt wird, ist sie sogar die einzige Datei, in
der Anpassungen an der Konfiguration des Agenten vorgenommen werden dürfen.
4. Installation des alten Agenten
4.1. Warum ein zweiter Agent?
In früheren Versionen von Checkmk hatte der Agent eine andere Architektur. Diese hat sehr lange gut funktioniert und wurde erst ab 1.6.0 durch eine neue abgelöst, um alte Enden abzuschneiden, die Konfiguration zu vereinfachen und letztendlich auch, um bessere Werkzeuge an der Hand zu haben, um zum Beispiel Konfigurationsfehlern besser auf die Spur zu kommen.
Der alte Agent ist aus Kompatibilitätsgründen in Checkmk noch enthalten, da nur dieser alte Plattformen wie Windows XP und Windows 2003 zuverlässig überwachen kann. Diese beiden Systeme werden von dem neuen Agenten nicht mehr unterstützt. Zusätzlich soll der alte Agent die Migration zu dem aktuellen komfortabler gestalten. Dieser ist nach wie vor mit Checkmk kompatibel, sodass ein Update Ihres Checkmk-Servers auf Version 1.6.0 nicht automatisch auch ein Update der Agenten erfordert.
4.2. Besonderheiten des Agenten bis Version 1.5.0
Der alte Windows-Agent hat folgende Unterschiede:
Unterschiedliche Nutzung der Verzeichnisse. Im alten Agenten ist das Installationsverzeichnis und das Konfigurationsverzeichnis dasselbe. Es wird ausschließlich das Verzeichnis
C:\Program Files (x86)\check_mk\
genutzt.Dadurch werden die verfügbaren Plugins nicht automatisch mit installiert, sondern müssen individuell vom Checkmk-Server heruntergeladen und korrekt abgelegt werden.
Die Konfiguration wird im alten Agenten in einer Initialisierungsdatei (
check_mk.ini
) festgehalten. Die Standardkonfiguration und die Agentenbäckerei nutzen die identische Datei. Lokale Anpassungen können über die Dateicheck_mk_local.ini
vorgenommen werden, die sich im gleichen Verzeichnis befinden muss.Die Möglichkeiten tiefer in den Agenten einzusteigen sind stark eingeschränkt.
4.3. Migration zum neuen Standardagenten
Die Migration von einem bereits installierten Agenten auf den aktuellen Agenten ist sehr einfach.
Rufen Sie schlicht das Installationspaket des neuen Agenten (check_mk_agent.msi
) auf und folgen Sie wie gewohnt den Anweisungen.
Bei der Installation werden Sie immer gefragt, wie mit alten Konfigurationsdateien umgegangen werden soll:

Der alte Agent wird dann lediglich gestoppt und deaktiviert. Unabhängig davon
wird die Konfiguration des alten Agenten als Teil des Installationsprozess in
das neue Format übertragen und als Benutzerkonfiguration (check_mk.user.yml
)
abgespeichert. Das gibt Ihnen die Möglichkeit, die Konvertierung anhand der
Originaldatei zu prüfen. Sobald Sie sicher sind, dass die Konvertierung
erfolgreich war, können Sie den alten Agenten deinstallieren.
Eine solche händische Prüfung werden Sie wahrscheinlich nur für einzelne Hosts einer Gruppe machen wollen. Wenn Sie sich sicher sind, dass die Konvertierung korrekt funktioniert, können Sie den alten Agenten entsprechend automatisch deinstallieren lassen. Sie sparen sich dann die manuelle Deinstallation und tauschen lediglich den alten Agenten durch den neuen aus.
Wichtig: Nachdem Sie den alten Agenten entfernt haben, kann es sein, dass das Verzeichnis nicht vollständig gelöscht wurde. Das ist kein Fehler, sondern reguläres Verhalten, wenn sich in dem zu löschenden Verzeichnis Dateien befinden, die nicht über die Installationsroutine auf das System gekommen sind. Das können zum Beispiel Plugins oder eigene Konfigurationsdateien sein, die händisch von einem Benutzer angelegt wurden. Löschen Sie in solchen Fällen schlicht das Installationsverzeichnis des alten Agenten nach der Deinstallation, nachdem Sie sichergestellt haben, dass sich dort keine wichtigen Dateien mehr befinden.
Firewall-Regel auf den neuen Agenten anpassen
Wenn Sie den Agenten nicht frisch installieren, sondern von dem Legacy-Agenten migrieren, müssen Sie gegebenenfalls auch die Firewall-Regel anpassen, die Sie vorher angelegt hatten. Dabei müssen Sie keine neue Regel anlegen, wie das oben beschrieben ist. Stattdessen passen Sie lediglich die bestehende Regel an. In dem folgenden Beispiel gehen wir davon aus, dass die Regel den Namen "Check_MK" hat:
C:\Windows\System32> netsh advfirewall firewall set rule name="Check_MK" ^
new program="%ProgramFiles(x86)%\checkmk\service\check_mk_agent.exe"
Updated 1 rule(s).
Ok.
Wenn das Programm netsh
die angegebene Regel finden konnte, wird das
Kommando dann auch entsprechend der Beispielausgabe quittiert. Sollten Sie
den Namen der Regel nicht (mehr) kennen, können Sie die Regel natürlich
auch über das grafische Tool wf.msc
anpassen.
5. Test und Fehlerdiagnose
5.1. Prüfen der Konfiguration
Um zu prüfen, ob die Konfiguration so eingelesen wurde, wie Sie das erwarten,
rufen Sie den Agenten mit der Option showconfig
auf. Mit
dieser Option bekommen Sie nicht nur die Konfiguration ausgegeben, wie sie
derzeit vom Agenten benutzt wird. Zusätzlich werden auch immer die benutzten
Umgebungsvariablen sowie die verwendeten Konfigurationsdateien angezeigt.
Ist nur ein bestimmter Teil der Konfiguration interessant, schränken Sie
die Ausgabe auf einen bestimmten Teil ein. Hier wird zum Beispiel geprüft,
ob die Optionen der Sektion ps
korrekt gesetzt sind:
C:\Program Files x86\checkmk\service> .\check_mk_agent.exe showconfig ps
# Environment Variables:
# MK_LOCALDIR="C:\ProgramData\checkmk\agent\local"
# MK_STATEDIR="C:\ProgramData\checkmk\agent\state"
# MK_PLUGINSDIR="C:\ProgramData\checkmk\agent\plugins"
# MK_TEMPDIR="C:\ProgramData\checkmk\agent\tmp"
# MK_LOGDIR="C:\ProgramData\checkmk\agent\log"
# MK_CONFDIR="C:\ProgramData\checkmk\agent\config"
# MK_SPOOLDIR="C:\ProgramData\checkmk\agent\spool"
# MK_INSTALLDIR="C:\ProgramData\checkmk\agent\install"
# MK_MSI_PATH="C:\ProgramData\checkmk\agent\update"
# Loaded Config Files:
# system: 'C:\Program Files (x86)\checkmk\service\check_mk.yml'
# bakery: 'C:\ProgramData\checkmk\agent\bakery'
# user : 'C:\ProgramData\checkmk\agent\check_mk.user.yml'
# ps
enabled: yes
use_wmi: yes
full_path: no
Über diesen Weg bekommen Sie einen schnellen Überblick, wie die drei verschiedenen Konfigurationsdateien von dem Agenten zusammengeführt und benutzt werden. Fehler werden somit sofort sichtbar.
5.2. Den Agenten testen
Es gibt unter Windows verschiedene Möglichkeiten, den Agenten auf seine
Funktion zu testen. Mit der Option help
bekommen Sie eine Übersicht,
welche Diagnosemöglichkeiten der Agent im Einzelnen bietet. Die wichtigsten
sollen hier vorgestellt werden.
Lokal testen
Mit der Option test
können Sie den Agenten direkt lokal ausführen
und sofort sehen, ob eine Ausgabe fehlerfrei erzeugt werden kann. Aus
Platzgründen werden hier nur die ersten Zeilen als Beispiel gelistet:
C:\Program Files x86\checkmk\service> .\check_mk_agent.exe test
<<<check_mk>>>
Version: 2.0.0b5
BuildDate: Jan 27 2021
AgentOS: windows
Hostname: MSEDGEWIN10
Architecture: 64bit
WorkingDirectory: C:\Program Files (x86)\checkmk\service
Testen vom Monitoring-Server aus
Wenn ein Problem nicht lokal vorhanden ist, haben Sie mit der Option
-io
eine weitere Möglichkeit, den Agenten auch von außen
zu prüfen. Diese Option startet den Agenten kurzfristig als Service
und protokolliert dann jede Verbindung, die von außen zu diesem Service
hergestellt wird. Auf diese Weise können sie prüfen, ob eine Anfrage auch
wirklich den Host erreicht. Beachten Sie, dass der Windows-Service
des Agenten nicht laufen darf, damit dieser Test funktioniert. Stoppen Sie
daher vorher den Service und führen Sie danach den Test durch:
C:\Program Files x86\checkmk\service> .\check_mk_agent.exe check -io
testing 10 seconds
Starting IO ipv6:false, used port:6556
Connected from '192.168.42.1' ipv6 :false -> queue
Put on queue, size is [1]
Found connection on queue, in queue left[0]
Connected from '192.168.42.1' ipv6:false <- queue
No data to send
Shutting down IO...
Stopping execution
Exiting process queue
cma::world::ExternalPort::ioThreadProc: terminated from outside
IO ends...
Mögliche Fehler werden ebenfalls in diesem Test protokolliert, so dass Sie bei einem Fehlerfall besser herausfinden können, wo die Ursache des Problems zu suchen ist.
5.3. Weitere Debug-Möglichkeiten
Der Agent bietet über die bereits beschriebenen Optionen noch weitere
Möglichkeiten viele Details über das konkrete Verhalten des Agenten
herauszufinden. Mit der Option help
bekommen Sie unter anderem eine
ausführliche und vollständige Liste an Möglichkeiten, die Ihnen über
die hier beschriebenen hinaus zur Verfügung stehen.
6. Einbinden von klassischen Check-Plugins
6.1. Grundsätzliche Konfiguration
Unter Windows können Sie weiterhin ihre Nagios-basierten Plugins auf einem Host ausführen, falls es dazu noch kein Pendant in Checkmk geben sollte. Der Mechanismus dafür ist recht simpel: Sie nutzen dafür das MRPE-Feature von Checkmk, welches sich analog zu dem NRPE von Nagios verhält.
Standardmäßig ist die Berücksichtigung von MRPE-Plugins aktiviert. Falls Sie diese Funktion nicht nutzen wollen, können Sie sie in der Konfigurationsdatei deaktivieren, indem Sie die folgende Definition hinzufügen:
mrpe:
enabled: no
Die Ausführungszeit begrenzen
Manchmal ist die Laufzeit eines Skripts oder Nagios-Plugins nicht vorhersehbar und im schlimmsten Fall wird ein Plugin nie beendet. Um hier die Kontrolle zu wahren, können Sie die maximale Laufzeit der MRPE-Plugins begrenzen. Der hier gezeigte Wert ist auch gleichzeitig der Standardwert in Sekunden. Passen Sie ihn also nur an, wenn Sie ein kürzeres oder längeres Intervall festlegen möchten:
mrpe:
# enabled: yes
timeout: 60
6.2. Plugins über MRPE ausführen
Um dem Agenten mitzuteilen, wo sich die auszuführende Datei befindet und wie diese aufzurufen ist, fügen Sie einen Eintrag in der Konfiguration des MRPE hinzu:
mrpe:
config:
- check = MyServiceName 'C:\ProgramData\checkmk\agent\mrpe\my_check_plugin.bat' -w 10 -c 20 MyParameter
Die Datei ebenfalls in dem Verzeichnis des Agenten abzulegen ist keine Voraussetzung, auch wenn es sich anbietet, um alle an einem gemeinsamen Ort abzulegen. In dieser Beispielkonfiguration sehen Sie nun folgende Elemente der relevanten Zeile:
Element | Beschreibung |
---|---|
| Der Servicename, wie er in Checkmk angezeigt werden soll |
| Auszuführendes Programm; Anführungszeichen für eventuelle Leerzeichen. |
| Übergebene Optionen: Ein Schwellwert von 10 für WARN und 20 für CRIT. |
| Beispielhafte Übergabe weiterer Parameter. |
Nachdem Sie das MRPE-Plugin eingerichtet haben, ist es direkt und ohne Neustart des Agenten aktiv und wird der Ausgabe hinzugefügt. In der Service-Erkennung werden Sie nun Ihren neuen Service automatisch finden:

6.3. MRPE mit der Agentenbäckerei
Alternativ zu der Konfiguration direkt auf einem Host in der benutzerspezifischen Konfigurationsdatei können Sie Ihre MRPE-Plugins auch
direkt im Setup-Menü definieren.
Benutzen Sie dazu den Regelsatz Setup > Agents > Windows, Linux, Solaris, AIX > Agent > Agent rules > Execute MRPE checks.
Der notwendige Eintrag wird dann automatisch in der Konfigurationsdatei der Agentenbäckerei erzeugt.
7. Erweiterung um Agentenplugins
7.1. Was sind Plugins?
Der Standardagent enthält eine ganze Reihe von Sektionen, welche Überwachungsdaten für diverse Check-Plugins liefern und dann von der Service-Erkennung automatisch gefunden und als Services ausgegeben werden. Dazu gehören vor allem die wichtigen Überwachungen des Betriebssystems.
Darüber hinaus gibt es die Möglichkeit den Agenten um Agentenplugins zu erweitern. Das sind kleine Skripte oder Programme, die vom Agenten aufgerufen werden und diesen um weitere Sektionen mit zusätzlichen Monitoring-Daten erweitern. Das Checkmk-Projekt liefert hier bereits eine ganze Reihe solcher Plugins mit aus, welche — wenn sie korrekt installiert und konfiguriert sind — in der Service-Erkennung ebenfalls automatisch in neue Services münden.
Warum sind diese Plugins nicht einfach in den Standardagenten fest integriert? Für jedes der Plugins gibt es einen der folgenden Gründe:
Das Plugin kann seine Daten nur über interne Schnittstellen holen, die der Standardagent nicht bereitstellt (Beispiel: PowerShell).
Das Plugin benötigt ohnehin eine Konfiguration, ohne die es nicht funktionieren würde (Beispiel:
mk_oracle.ps1
).Das Plugin ist so speziell, dass es von den meisten Anwendern nicht benötigt wird (Beispiel:
citrix_licenses.vbs
).
7.2. Manuelle Installation von Plugins
Checkmk liefert wie bereits erwähnt eine ganze Reihe an Plugins für Windows
mit. Sie finden diese auf dem überwachten Host in dem Installationsverzeichnis
des Agenten. Dort werden alle verfügbaren Plugins immer direkt mit
dem Agenten abgelegt, damit Sie auch direkt zur Verfügung stehen:
C:\Program Files (x86)\checkmk\service\plugins
. Alternativ
finden Sie die Plugins auch auf dem Checkmk-Server selbst unter
local/share/check_mk/agents/windows/plugins
.
Auch über Setup > Agents > Windows, Linux, Solaris, AIX > Related > Windows files sind diese im Kasten Plugins verfügbar.
Hier ein Auszug:

Zu allen von uns mitgelieferten Agentenplugins gibt es auch passende Check-Plugins, welche die erhobenen Daten auswerten und Services erzeugen können. Sie müssen also nichts zusätzlich auf dem Checkmk-Server installieren.
Wichtig: Werfen sie einen Blick in ein Agentenplugin, bevor Sie es auf einem Host installieren. Oft finden Sie dort wichtige Hinweise zu der korrekten Verwendung.
Die eigentliche Installation ist dann einfach. Kopieren Sie das gewünschte
Plugin entweder vom Checkmk-Server oder aus dem Installationsverzeichnis
nach C:\ProgramData\checkmk\agent\plugins
. Wenn das Plugin in diesem
Verzeichnis liegt, wird es vom Agenten automatisch aufgerufen und es entsteht
eine neue Sektion in der Agentenausgabe. Diese trägt üblicherweise den
gleichen Namen wie das Plugin. Komplexe Plugins (z.B. mk_oracle.ps1
)
erzeugen sogar eine ganze Reihe an neuen Sektionen.
7.3. Konfiguration der Plugins
Manche Plugins benötigen eine Konfigurationsdatei in
C:\ProgramData\checkmk\agent\config
, damit sie funktionieren
können. Bei anderen ist eine Konfiguration optional (z.B. mssql.vbs
)
und ermöglicht besondere Features oder Anpassungen. Wieder andere
funktionieren ohne weitere Schritte. Sie haben verschiedene Quellen, um an
Informationen zu kommen:
Die Dokumentation der zugehörigen Check-Plugins, zu finden unter Setup > Services > Catalog of check plugins
Kommentare im Plugin selbst (oft sehr hilfreich!)
Einen passenden Artikel in diesem Handbuch (z.B. über das Überwachen von Oracle)
Auch bei speziellen (Skript)-Sprachen kann es notwendig sein, diese erst in
der Konfiguration des Agenten freizuschalten. So werden beispielsweise
Python-Skripte nicht ausgeführt, wenn sie nicht explizit freigegeben
wurden. Sie können hier schlicht in der check_mk.user.yml
in der
Sektion global
die Dateiendungen erweitern, wie in dem folgenden
Ausschnitt zu sehen:
global:
execute: exe bat vbs cmd ps1 py
Wichtig: Der Einsatz solcher Plugins setzt natürlich voraus, dass die Dateien auch in einer regulären Kommandozeile ohne spezielle Pfade aufgerufen werden können. Im Fall von Python muss dieses entsprechend korrekt installiert und der Pfad zu dem Interpreter in den Umgebungsvariablen vorhanden sein. Anleitungen, wie Sie Python korrekt einrichten, finden Sie direkt auf den Seiten der Python Software Foundation.
7.4. Ausführung eines speziellen Plugins anpassen
Jedes Plugin kann in unterschiedlichen Modi ausgeführt werden. Dabei stehen die folgenden Optionen zur Verfügung. Der jeweils fett gedruckte Wert ist der Standardwert:
Option | Wert | Beschreibung |
---|---|---|
|
| Setzt die Reichweite der nachfolgenden Optionen. Hier kann auch mit Wildcards gearbeitet werden. Dann beziehen sich die nachfolgenden Optionen auf alle Plugins, auf die der Ausdruck zutrifft. Führend wird bestimmt, ob das Plugin direkt aus dem Installations-, oder aus dem Datenverzeichnis ausgeführt werden soll. |
|
| Bestimmt, ob die Ausführung eines Plugins unterdrückt werden soll. |
|
| Führt ein Plugin asynchron aus und legt die Daten in einer Datei ab. Bei synchroner Ausführung wird die Ausgabe direkt an den Agenten übergeben. |
|
| Setzt die maximale Ausführungszeit. Danach wird das Plugin beendet, auch wenn keine Ausgabe gekommen ist. Der Standardwert orientiert sich an dem Standard für das Abfrageintervall des Agenten. |
|
| Legt in Sekunden fest, wie lange eine Ausgabe gültig ist. Wenn |
|
| Die Anzahl, wie oft ein Plugin fehlschlagen darf, bevor eine Ausgabe aus dem Cache verworfen wird. |
|
| Hier können Sie einen freien Text eintragen, der den Logs angefügt werden soll. |
Eine Konfiguration für das Veeam-Plugin sieht dann zum Beispiel so aus (der Auszug ist gekürzt und enthält nur den relevanten Teil für das Beispiel):
plugins:
enabled: yes
execution:
- pattern: $CUSTOM_PLUGINS_PATH$\veeam_backup_status.ps1
async: yes
timeout: 120
cache_age: 300
retry_count: 2
Das Plugin wird nach der Definition oben Asynchron alle fünf Minuten (300 Sekunden) ausgeführt und darf dabei maximal zwei Minuten (120 Sekunden) laufen. Falls das Plugin in diesen Timeout läuft, wird ein zweites Mal versucht ein Ergebnis zu bekommen.
7.5. Plugins über die Agentenbäckerei installieren
Die von Checkmk mitgelieferten Plugins können über die
Agentenbäckerei konfiguriert werden. Diese sorgt
sowohl für die Installation des Plugins selbst, als auch für die korrekte
Erstellung der Konfigurationsdatei, falls eine notwendig sein sollte.
Jedes Plugin wird über eine Agentenregel konfiguriert. Sie finden die passenden Regelsätze in Setup > Agents > Windows, Linux, Solaris, AIX > Agents > Agent rules:

7.6. Plugins von Hand ausführen
Da Agentenplugins ausführbare Programme sind, können Sie diese zu Test- und Diagnosezwecken auch von Hand ausführen. Es gibt allerdings Plugins, welche bestimmte vom Agenten gesetzte Umgebungsvariablen brauchen, um z.B. ihre Konfigurationsdatei zu finden. Setzen Sie diese gegebenenfalls von Hand, wenn Sie in dem Skript oder Programm benötigt werden.
8. Absicherung
8.1. Vorüberlegung
Wie auch bei dem Linux-Agent muss auch der Zugriff auf den Agent für Windows abgesichert werden. Immerhin handelt es sich um potentiell sensible Server, die vor Angriffen von außen geschützt werden müssen. Aus dem Grund gelten hier auch die gleichen Grundgedanken, wie unter Linux. Auch unter Windows liest der Agent keinerlei Daten vom Netzwerk, so dass ein Angreifer über den Überwachungsport 6556 niemals Befehle oder Skripte einschleusen kann.
Wird das überwachte System über eine unsichere (Internet-)Verbindung abgefragt, werden zusätzliche Maßnahmen notwendig. So verfügt der Agent über eine optionale eingebaute Verschlüsselung, um die übermittelten Daten vor Angriffen aus dem Netzwerk zu schützen. Auf neueren Windows-Versionen ist zusätzlich natives SSH möglich, so dass eine Verschlüsselung über die gesamte Verbindungsdauer gewährleistet werden kann, wie man das unter Linux bereits kennt.
Diese und andere Methoden der Absicherung werden im Folgenden näher beschrieben.
8.2. Beschränkung des Zugriffs über IP-Adressen
Die Einschränkung auf bestimmte IP-Adressen können Sie zwar auch über die Firewall konfigurieren. Zusätzlich bietet aber auch der Agent selbst die Möglichkeit, Anfragen von fremden IP-Adressen schlicht zu ignorieren. Fügen Sie der Konfigurationsdatei lediglich die folgende Einschränkung in den globalen Optionen hinzu. Beachten Sie, dass davor oder danach noch andere Parameter in der Konfigurationsdatei gesetzt sein können und dies nur ein Ausschnitt ist:
global:
only_from: 127.0.0.1/32 192.168.42.73/32
Wie in dem Beispiel gut zu sehen, können Sie prinzipiell beliebig viele
Subnetze erlauben. Mit einem /32
geben Sie z.B. ein Subnetz der
Größe 1 an, so dass nur diese eine Adresse erlaubt ist, während sie mit
mit 192.168.42.0/24
alle Adressen zwischen 192.168.42.0
und 192.168.42.255
erlauben.
In der Agentenbäckerei können Sie die erlaubten IP-Adressen über folgenden Regelsatz konfigurieren:
Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules > Allowed agent access via IP address (Linux, Windows)
Natürlich kann ein Angreifer sehr leicht seine IP-Adresse fälschen und so eine Verbindung zum Agenten bekommen. Aber dann ist es sehr wahrscheinlich, dass er die Antwort nicht bekommt — weil diese zum echten Monitoring-Server geht. Oder er bekommt sie tatsächlich, aber der Checkmk-Server bekommt keinerlei Daten und wird sehr bald einen Fehler melden.
8.3. Aufruf über SSH
Neuere Versionen von Windows haben eine native Unterstützung für
SSH. Aber auch bei älteren Versionen können Sie einen SSH-Server über
Cygwin nachrüsten und damit eine
identische Konfiguration nachstellen, wie Sie unter Linux
möglich ist. Beachten Sie dabei die aktuellen Hilfestellungen seitens Cygwin
oder Microsoft für die Einrichtung. Sobald ein SSH-Server gestartet und
erreichbar ist, ist die weitere Einrichtung identisch zu der unter Linux:
Sie richten die authorized_keys
auf dem überwachten Host ein und
beschränken den Zugriff auf die Ausführung des Agenten.
Der Eintrag in der Datei authorized_keys
ist auf Windows Hosts allerdings etwas
holprig, da hier viele Zeichen maskiert werden müssen. Orientieren Sie sich
bitte an dem folgenden (gekürzten) Beispiel:
command="\"C:\\Program Files (x86)\\checkmk\\service\\check_mk_agent.exe\" test" ssh-rsa AAAA...pb48 mysite@mycmkserver
Beachten Sie, dass Sie den Windows-Dienst danach stoppen können und auch eine eventuell eingerichtete Firewall-Regel damit obsolet ist.
8.4. Eingebaute Verschlüsselung
Der Windows-Agent (wie auch sein Linux-Pendant) kann seine Daten ohne Zusatzmittel selbst verschlüsseln. Dies ist streng genommen kein Ersatz für eine Zugangskontrolle. Da aber ein Angreifer ja keine Befehle senden und mit verschlüsselten Ausgabedaten nichts anfangen kann, kommt es einer solchen schon sehr nahe.
Der Aufwand für die Verwendung der Verschlüsselung und die nötige zusätzliche CPU-Last sind beide geringer, als bei der oben beschriebenen Methode mit SSH, welche wir aber nach wie vor bei der Übertragung über das Internet empfehlen.
Die Verschlüsselung braucht natürlich sowohl auf dem Agenten als auch auf
dem Server eine passende Konfiguration. Diese kann entweder von Hand
erstellt werden ( Checkmk Raw Edition) oder mit der Agentenbäckerei (
Checkmk Enterprise Editions).
Aufsetzen ohne Agentenbäckerei
Auch ohne Agentenbäckerei geht der erste Schritt über das Anlegen einer Regel im Regelsatz Setup > Agents > Agent access rules > Encryption (Linux, Windows). Die Regel soll auf alle Hosts greifen, für die Sie Verschlüsselung einsetzen möchten. SNMP-Hosts ignorieren diese Einstellung, daher müssen Sie sie nicht explizit ausschließen.

Wichtig ist die Einstellung für Encryption for Agent. Solange Sie die Regel auf dem Default Disable lassen, bleibt natürlich alles beim Alten. Sie haben also die Wahl zwischen:
Enable: Verschlüsselung wird aktiviert, aber Daten von Agenten ohne Verschlüsselung werden weiter akzeptiert.
Enforce: Verschlüsselung wird aktiviert, nur noch verschlüsselte Daten werden akzeptiert.
Sinnvoll ist es, zunächst mit Enable zu beginnen. Sobald Sie meinen, dass alle Agenten auf Verschlüsselung umgestellt sind, stellen Sie auf Enforce, um dadurch Hosts zu finden, die noch Daten im Klartext senden.
Die Verschlüsselung funktioniert mit einem gemeinsamen Passwort (shared secret), das Sie hier angeben und sowohl auf dem Checkmk-Server als in der Konfiguration des Agenten im Klartext gespeichert werden muss. Wählen Sie ein zufälliges Passwort aus und halten Sie es parat für den zweiten Schritt: die Konfiguration des Agenten.
Auf dem Windows-Server fügen Sie nun das Passwort der Konfiguration des Agenten in den globalen Optionen hinzu:
global:
encrypted: yes
passphrase: MyPassword
Jetzt können Sie folgende Tests machen (siehe dazu auch den Artikel über die Kommandozeile von Checkmk):
Ein
telnet myhost123 6556
vom Checkmk-Server muss nun wirren Zeichensalat ausgeben.Ein
cmk -d myhost123
auf dem Checkmk-Server muss die sauberen Klartextdaten anzeigen.
Aufsetzen mit der Agentenbäckerei
Das Aufsetzen der Verschlüsselung mit der Agentenbäckerei ist sehr einfach.
Sie erreichen die entsprechende Regel in den Enterprise Editions über Setup > Agents > Agent access rules > Encryption (Linux, Windows).
Mit dem Erstellen einer solchen Regel sind Sie im Grunde fertig. Sie brauchen nur noch neue Agenten zu backen und zu verteilen.
Der notwendige Eintrag wird dann automatisch in der
Konfigurationsdatei der Agentenbäckerei erzeugt.
9. Überwachen von Windows per SNMP
Es gibt ein paar wenige Situationen, in denen eine Überwachung per SNMP zusätzlich zum normalen Agenten sinnvoll sein kann. Und zwar ist das der Fall, wenn entweder eine eigene Anwendungssoftware oder ein Hardwareüberwachungstool des Serverherstellers Überwachungsdaten nur per SNMP liefert und — entweder aufgrund der eingesetzten Windows-Version oder weil es für die Anwendung keine Cmdlets gibt — eine Abfrage über PowerShell nicht möglich ist.
Setzen Sie in so einem Fall in den Eigenschaften des Hosts im Setup im Kasten Monitoring agents die Einstellung SNMP auf die geeignete Verbindungsart (SNMP v2 or v3 oder SNMP v1). Services, die sowohl per SNMP als auch per Checkmk-Agent verfügbar sind (z.B. CPU-Auslastung, Dateisysteme, Netzwerkkarten), werden dann automatisch vom Checkmk-Agenten geholt und nicht per SNMP. Damit wird eine Doppelübertragung automatisch vermieden.
10. Deinstallation des Agenten
Für die Deinstallation des Agenten haben Sie in Windows mehrere Möglichkeiten. In allen Versionen von Windows finden Sie einen Eintrag in der Systemsteuerung unter Control Panel > Programs > Uninstall a program. In neueren Versionen finden Sie den Eintrag für den Checkmk-Agenten zudem in den Einstellungen unter Settings > Apps & features.
Über die Kommandozeile haben Sie mehrere Möglichkeiten den Agenten zu entfernen. Sollte Ihnen das zuletzt installierte MSI-Paket noch vorliegen, können Sie dieses wie folgt für die Deinstallation nutzen:
C:\Users\hhirsch\Downloads\> msiexec /x check_mk_agent.msi /qn
Alternativ können Sie auch das Windows Management Instrumentation Command (WMIC) für die Deinstallation verwenden:
C:\> wmic product where name="Check MK Agent 2.0" call uninstall /nointeractive
War die Deinstallation erfolgreich, erhalten Sie als Bestätigung die Meldung Method execution successful.
Hinweis: Der String hinter name=
muss exakt stimmen.
Wenn Sie hier eine andere Version des Agenten deinstallieren wollen, finden Sie ein Auflistung aller installierten Produkte mit folgendem Aufruf:
C:\> wmic product get name
Der Vorgang kann bisweilen recht lange dauern und gibt derweil keinerlei Statusmeldungen aus, dafür dann aber sehr lange Listen. Zum Filtern können Sie den Befehl zur Pipe ausbauen:
C:\> wmic product get name | findstr Check
Beachten Sie dabei die Groß- und Kleinschreibung!
Da die verschiedenen Routinen von Windows nur Dateien entfernen, welche auch durch den Installationsprozess dort hin gekommen sind, ist es vollkommen normal, dass in den Verzeichnissen des Agenten noch Dateien übrig bleiben. Diese können manuell gelöscht werden.
11. Dateien und Verzeichnisse
11.1. Pfade auf dem überwachten Windows-Host
Pfad | Bedeutung |
---|---|
| Installationsverzeichnis für die programmspezifischen Dateien inklusive des eigentlichen Agenten |
| Installationsverzeichnis für die host-spezifischen Dateien. Hier befinden sich Erweiterungen, Logs und Konfigurationsdateien, welche spezifisch für diesen Host gelten. |
| Konfigurationsänderungen durch den Benutzer werden hier hinterlegt. |
| Konfigurationsanpassungen durch die Agentenbäckerei sind hier gespeichert. |
| Hier werden die Plugins abgelegt, welche automatisch vom Agenten ausgeführt werden sollen. |
| Das Verzeichnis für lokale Checks. |
| MRPE-Erweiterungen können hier gespeichert werden. |
| Nach jeder Änderung des Checkmk-Agenten-Service wird von der Benutzerkonfiguration hier ein Backup angelegt. |
11.2. Pfade auf dem Checkmk-Server
Pfad | Bedeutung |
---|---|
| Basisverzeichnis für eigene Dateien, die mit einem gebackenen Agenten mit ausgeliefert werden sollen. |
| Die Agenten und ihre MSI-Pakete sind hier hinterlegt. In diesem Verzeichnis finden Sie auch Konfigurationsbeispiele und alle Plugins für den Agenten. |