Checkmk
to checkmk.com

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 CEE 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:

VersionEdition

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 CEE Checkmk Enterprise Editions zur Verfügung:

MethodeBeschreibungCRECEE

Mitgeliefertes MSI-Paket

Einfache Installation eines Standard-Agenten mit manueller Konfiguration.

X

X

Agentenbäckerei

Konfiguration über die GUI, individuelle Konfiguration pro Host möglich.

X

Automatisches Updaten

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 CRE Checkmk Raw Edition gelangen Sie über Setup > Agents > Windows zu den Packaged Agents. Dort finden die benötigte Datei check_mk_agent.msi.

agent windows packaged agents

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.

agent windows packaged agents bakery

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 InstallerBezeichner

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.

Fehlermeldung eines nicht erreichbaren Agenten.
Mögliche Ausgabe von Test connection to host

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.

agent windows windows firewall

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 %ProgramFiles% (x86)\checkmk\service\check_mk_agent.exe ein oder wählen Sie über den Knopf Browse die Datei check_mk_agent.exe aus.

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

CEE Die CEE 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

CEE 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 Verzeichnis Program 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:

  1. C:\Program Files (x86)\checkmk\service\check_mk.yml - Hier ist die Standardkonfiguration hinterlegt. Diese dürfen Sie nicht ändern.

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

  3. 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 Datei check_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:

agent windows install agent product features

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:

C:\ProgramData\checkmk\agent\check_mk.user.yml
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:

C:\ProgramData\checkmk\agent\check_mk.user.yml
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:

C:\ProgramData\checkmk\agent\check_mk.user.yml
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:

ElementBeschreibung

MyServiceName

Der Servicename, wie er in Checkmk angezeigt werden soll

'C:\ProgramData\checkmk\agent\mrpe\my_check_plugin.bat'

Auszuführendes Programm; Anführungszeichen für eventuelle Leerzeichen.

-w 10 -c 20

Übergebene Optionen: Ein Schwellwert von 10 für WARN und 20 für CRIT.

MyParameter

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:

agent windows service discovery

6.3. MRPE mit der Agentenbäckerei

CEE 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:

Liste mit Plugin-Dateien.
Die Dateien selbst enthalten häufig nützliche Detailinformationen

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:

C:\ProgramData\checkmk\agent\check_mk.user.yml
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:

OptionWertBeschreibung

pattern

'@user\*.ps1'

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.

run

yes/no

Bestimmt, ob die Ausführung eines Plugins unterdrückt werden soll.

async

yes/no

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.

timeout

60

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.

cache_age

60

Legt in Sekunden fest, wie lange eine Ausgabe gültig ist. Wenn async aktiviert ist, wird automatisch ein Cache von ??? Sekunden angelegt.

retry_count

1

Die Anzahl, wie oft ein Plugin fehlschlagen darf, bevor eine Ausgabe aus dem Cache verworfen wird.

description

'Text'

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):

C:\ProgramData\checkmk\agent\check_mk.user.yml
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

CEE 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:

Liste mit Agentenplugins.
Gekürzter Kasten mit Plugins

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:

C:\ProgramData\checkmk\agent\check_mk.user.yml
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.

CEE 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:

~\.ssh\authorized_keys:
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 (CRE Checkmk Raw Edition) oder mit der Agentenbäckerei (CEE 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.

Dialog mit Verschlüsselungsoptionen.
Auf dem Server selbst ist das Passwort nicht verschlüsselt

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:

C:\ProgramData\checkmk\agent\check_mk.user.yml
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

CEE 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

PfadBedeutung

C:\Program Files (x86)\checkmk\service\

Installationsverzeichnis für die programmspezifischen Dateien inklusive des eigentlichen Agenten check_mk_agent.exe.

C:\ProgramData\checkmk\agent\

Installationsverzeichnis für die host-spezifischen Dateien. Hier befinden sich Erweiterungen, Logs und Konfigurationsdateien, welche spezifisch für diesen Host gelten.

C:\ProgramData\checkmk\agent\check_mk.user.yml

Konfigurationsänderungen durch den Benutzer werden hier hinterlegt.

C:\ProgramData\checkmk\agent\bakery\check_mk.bakery.yml

Konfigurationsanpassungen durch die Agentenbäckerei sind hier gespeichert.

C:\ProgramData\checkmk\agent\plugins

Hier werden die Plugins abgelegt, welche automatisch vom Agenten ausgeführt werden sollen.

C:\ProgramData\checkmk\agent\local

Das Verzeichnis für lokale Checks.

C:\ProgramData\checkmk\agent\mrpe

MRPE-Erweiterungen können hier gespeichert werden.

C:\ProgramData\checkmk\agent\backup

Nach jeder Änderung des Checkmk-Agenten-Service wird von der Benutzerkonfiguration hier ein Backup angelegt.

11.2. Pfade auf dem Checkmk-Server

PfadBedeutung

local/share/check_mk/agents/custom/

Basisverzeichnis für eigene Dateien, die mit einem gebackenen Agenten mit ausgeliefert werden sollen.

share/check_mk/agents/windows/

Die Agenten und ihre MSI-Pakete sind hier hinterlegt. In diesem Verzeichnis finden Sie auch Konfigurationsbeispiele und alle Plugins für den Agenten.

Auf dieser Seite