1. Der Linux-Agent
Linux-Systeme können Sie mit Checkmk besonders gut überwachen. Das liegt weniger daran, dass sich das Checkmk-Entwicklerteam auf Linux „zu Hause“ fühlt, sondern vielmehr daran, dass Linux ein sehr offenes System ist und zahlreiche gut dokumentierte und einfach abzufragende Schnittstellen für eine detaillierte Überwachung bereitstellt.
Da die meisten der Schnittstellen per se nicht über das Netzwerk erreichbar sind, ist die Installation eines Monitoring-Agenten unumgänglich. Deswegen hat Checkmk einen eigenen Agenten für die Überwachung von Linux. Dieser ist ein simples Shellskript, das minimalistisch, transparent und sicher ist.
In der Checkmk-Version 2.1.0 wurde diesem Agentenskript mit dem Agent Controller eine neue Komponente zur Seite gestellt. Der Agent Controller ist dem Agentenskript vorgeschaltet, fragt dieses ab und kommuniziert an dessen Stelle mit dem Checkmk-Server. Dazu registriert er sich am Agent Receiver, einem Prozess, der auf dem Checkmk-Server läuft.
Der Linux-Agent übernimmt also zum einen das Agentenskript, und damit dessen Vorteile. Zum anderen ergänzt er das Skript so, dass neue Funktionen hinzugefügt werden können wie die TLS-Verschlüsselung der Kommunikation oder die Datenkomprimierung.
Der registrierte, verschlüsselte und komprimierte Pull-Modus mit dem Agent Controller ist für alle Checkmk-Editionen verfügbar – sofern sowohl Checkmk-Server als auch Agent mindestens Version 2.1.0 haben. Den Push-Modus gibt es ab Checkmk Cloud, d. h. in Checkmk Cloud und Checkmk MSP. Die Umkehrung der Kommunikationsrichtung erleichtert die Überwachung von Hosts, die sich hinter Firewalls befinden. Kombiniert wird der Push-Modus meist mit der automatischen Registrierung des Checkmk-Agenten, die ebenfalls ab Checkmk Cloud verfügbar ist.
Standard-Agentenpakete öffnen sofort nach der Installation Port 6556. Sie geben darüber die unverschlüsselte Agentenausgabe an jeden, der sie anfordert aus. Bei Hosts, die aus dem Internet erreichbar sind, sollten Sie daher vor der Installation per Firewall sicherstellen, dass der Zugriff auf diesen Port nur ausgewählten Hosts erlaubt ist. Führen Sie die Registrierung und die damit verbundene Aktivierung der TLS-Verschlüsselung zeitnah nach der Installation durch. |
Der Agent Controller wird als Hintergrundprozess (Daemon) vom init-System systemd
gestartet, daher setzt der Agent eine Linux-Distribution mit systemd
voraus.
Wahrscheinlich wird diese Voraussetzung auf Ihrem Host erfüllt sein, da seit 2015 die meisten Linux-Distributionen systemd
als init-System übernommen haben.
Allerdings beherrscht der Agent auch einen sogenannten Legacy-Modus, um Linux-Systeme zu unterstützen mit einer anderen Rechnerarchitektur als x86_64, ohne RPM- bzw. DEB-Paketmanagement und ohne init-System systemd
.
In diesem Legacy-Modus arbeitet der Agent nur als Agentenskript, d.h. ohne Agent Controller und damit auch ohne Registrierung am Checkmk-Server.
Der Artikel, den Sie gerade lesen, behandelt Installation, Konfiguration und Erweiterungen des Linux-Agenten mit Agent Controller. Er zeigt Ihnen aber auch, wie Sie herausfinden können, ob der Agent auf Ihrem Linux-System ohne Agent Controller im Legacy-Modus eingerichtet werden muss. Im Artikel Linux überwachen im Legacy-Modus finden Sie dann dazu alle Informationen.
2. Architektur des Agenten
Der Checkmk-Agent besteht aus dem Agentenskript und dem Agent Controller, der mit dem Agent Receiver auf dem Checkmk-Server kommuniziert. Im allgemeinen Artikel über die Monitoring-Agenten finden Sie Einzelheiten zur gemeinsamen Architektur von Linux-Agent und Windows-Agent. In diesem Kapitel geht es um die für Linux spezifische Implementierung.
Das Agentenskript check_mk_agent
ist zuständig für die Sammlung der Monitoring-Daten und ruft für die Datensammlung der Reihe nach vorhandene Systembefehle auf.
Um auch diejenigen Informationen zu erhalten, zu deren Beschaffung root
-Rechte erforderlich sind, wird check_mk_agent
unter root
ausgeführt.
Das Agentenskript ist minimalistisch, sicher, leicht erweiterbar und transparent, denn es ist ein Shellskript, in dem Sie sehen können, welche Befehle es aufruft.
Der Agent Controller cmk-agent-ctl
kümmert sich um den Transport der vom Agentenskript gesammelten Daten.
Er wird unter dem Benutzer cmk-agent
ausgeführt, der nur beschränkte Rechte besitzt, z.B. keine Login-Shell hat und nur zur Datenübertragung genutzt wird.
Der Benutzer cmk-agent
wird während der Installation des Agentenpakets angelegt.
Der Agent Controller wird als Daemon von systemd
gestartet und ist als Service an diesen gekoppelt.
Im Pull-Modus lauscht er am TCP-Port 6556 auf eingehende Verbindungen der Checkmk-Instanz und fragt das Agentenskript über einen Unix-Socket (einer systemd
Unit) ab.
3. Installation
Checkmk bietet Ihnen für die Installation des Linux-Agenten verschiedene Wege — von der manuellen Installation des Software-Pakets bis hin zur vollautomatischen Verteilung inklusive Update-Funktion. Manche davon stehen nur in den kommerziellen Editionen zur Verfügung:
Methode | Beschreibung | Checkmk Raw | Kommerzielle Editionen |
---|---|---|---|
Mitgeliefertes RPM/DEB-Paket |
Einfache Installation eines Standard-Agenten mit manueller Konfiguration über Konfigurationsdateien.
Die Installationsroutine überprüft und konfiguriert in allen Editionen |
X |
X |
RPM/DEB-Paket aus der Agentenbäckerei |
Konfiguration über die GUI, individuelle Konfiguration pro Host möglich. |
X |
|
Das Paket aus der Agentenbäckerei wird erstmalig von Hand oder per Skript installiert und von da an automatisch aktualisiert. |
X |
3.1. Download des RPM/DEB-Pakets
Sie installieren den Linux-Agenten durch Installation des RPM- oder des DEB-Pakets. Ob Sie RPM oder DEB benötigen, hängt von der Linux-Distribution ab, auf der Sie das Paket installieren möchten:
Paket | Endung | Installation auf |
---|---|---|
RPM |
|
Red Hat Enterprise Linux (RHEL) basierte Systeme, SLES, Fedora, openSUSE, Derivate davon |
DEB |
|
Debian, Ubuntu, alle anderen DEB-basierten Distributionen |
Vor der Installation müssen Sie das Paket holen und auf den Host bringen (zum Beispiel mit scp
oder WinSCP), auf dem der Agent laufen soll.
Paket per Checkmk-GUI holen
In Checkmk Raw finden Sie die Linux-Pakete des Agenten über Setup > Agents > Linux. In den kommerziellen Editionen gelangen Sie im Setup-Menü über Agents > Windows, Linux, Solaris, AIX zunächst in die Agentenbäckerei, wo Sie die gebackenen Pakete finden. Von dort aus kommen Sie mit dem Menüeintrag Related > Linux, Solaris, AIX files zur Liste der Agentendateien:
Alles was Sie brauchen, finden Sie gleich im ersten Kasten mit dem Namen Packaged Agents: die fertigen RPM- und DEB-Paketdateien für die Installation des Linux-Agenten mit Standardeinstellungen.
Paket per HTTP holen
Manchmal ist der Download auf einen Rechner und das anschließende Kopieren auf den Zielrechner mit scp
oder WinSCP sehr umständlich.
Sie können das Paket vom Checkmk-Server auch direkt per HTTP auf das Zielsystem laden.
Für diesen Zweck sind die Downloads der Agentendateien bewusst ohne Anmeldung möglich.
Immerhin enthalten die Dateien keine Geheimnisse.
Jeder kann sich Checkmk selbst herunterladen und installieren und so auf die Dateien zugreifen.
Am einfachsten geht das mit wget
.
Die URL können Sie über den Browser ermitteln.
Wenn Sie den Namen des Pakets bereits kennen, können Sie die URL einfach selbst zusammensetzen.
Setzen Sie /mysite/check_mk/agents/
vor den Dateinamen, im folgenden Beispiel für das RPM-Paket:
root@linux# wget http://mycmkserver/mysite/check_mk/agents/check-mk-agent-2.3.0p16-1.noarch.rpm
Tipp: RPM hat sogar ein eingebautes wget
.
Hier können Sie Download und Installation mit einem Kommando durchführen:
root@linux# rpm -U http://mycmkserver/mysite/check_mk/agents/check-mk-agent-2.3.0p16-1.noarch.rpm
Paket per REST-API holen
Die REST-API von Checkmk bietet die folgenden Möglichkeiten Agentenpakete vom Checkmk-Server herunterzuladen:
Herunterladen des mitgelieferten Agenten.
Herunterladen eines gebackenen Agenten nach Host-Name und Betriebssystem.
Herunterladen eines gebackenen Agenten nach Hash des Agenten und Betriebssystems.
Per REST-API haben Sie die Möglichkeit, das Paket vom Checkmk-Server direkt auf den Zielrechner zu holen.
Das mitgelieferte DEB-Paket des Linux-Agenten lässt sich beispielsweise mit dem folgenden curl
-Kommando holen:
root@linux# curl -OJG "http://mycmkserver/mysite/check_mk/api/1.0/domain-types/agent/actions/download/invoke" \
--header 'Accept: application/octet-stream' \
--header 'Authorization: Bearer automation myautomationsecret' \
--data-urlencode 'os_type=linux_deb'
Hinweis: Der Befehl wurde zugunsten der Lesbarkeit in vier Zeilen aufgeteilt.
Hierbei handelt es sich nur um ein einfaches Beispiel, um die Funktionsweise dieses einen REST-API-Endpunkts zum Herunterladen des Agenten zu demonstrieren. Details zu diesem und anderen REST-API-Endpunkten finden Sie in der API-Dokumentation, die Sie in Checkmk über Help > Developer resources > REST API documentation aufrufen können.
3.2. Paket installieren
Nachdem Sie das RPM- oder das DEB-Paket geholt und — falls nötig — mit scp
, WinSCP oder anderen Mitteln auf den zu überwachenden Host kopiert haben, ist die Installation mit einem Kommando erledigt.
Die Installation des RPM-Pakets erfolgt unter root
mit dem Befehl rpm -U
:
root@linux# rpm -U check-mk-agent-2.3.0p16-1.noarch.rpm
Die Option -U
steht übrigens für „Update“, kann aber auch eine Erstinstallation korrekt durchführen.
Das bedeutet auch, dass Sie mit diesem Befehl einen bereits installierten Agenten auf die aktuelle Version updaten können — und ihn auch zukünftig für Updates des Agentenpakets nutzen können.
Die Installation des DEB-Pakets — und ein Update — erfolgt unter root
mit dem Befehl dpkg -i
:
root@linux# dpkg -i check-mk-agent_2.3.0p16-1_all.deb
(Reading database ... 739920 files and directories currently installed.)
Preparing to unpack .../check-mk-agent_2.3.0p16-1_all.deb ...
Unpacking check-mk-agent (2.3.0p16-1) ...
Setting up check-mk-agent (2.3.0p16-1) ...
Deploying systemd units: check-mk-agent.socket check-mk-agent-async.service cmk-agent-ctl-daemon.service check-mk-agent@.service
Deployed systemd
Creating/updating cmk-agent user account ...
WARNING: The agent controller is operating in an insecure mode! To secure the connection run cmk-agent-ctl register
.
Reloading xinetd
Activating systemd unit 'check-mk-agent.socket'...
Created symlink /etc/systemd/system/sockets.target.wants/check-mk-agent.socket → /lib/systemd/system/check-mk-agent.socket.
Activating systemd unit 'check-mk-agent-async.service'...
Created symlink /etc/systemd/system/multi-user.target.wants/check-mk-agent-async.service → /lib/systemd/system/check-mk-agent-async.service.
Activating systemd unit 'cmk-agent-ctl-daemon.service'...
Created symlink /etc/systemd/system/multi-user.target.wants/cmk-agent-ctl-daemon.service → /lib/systemd/system/cmk-agent-ctl-daemon.service.
Hier wurde das Paket auf einem zuvor agentenlosen Host erstmalig installiert.
Der Benutzer cmk-agent
wurde erstellt und systemd
konfiguriert.
Auf die dazwischen angezeigte Warnung zum insecure mode
, also dem Legacy-Pull-Modus, gehen wir gleich ein.
3.3. Installation mit der Agentenbäckerei
Die kommerziellen Editionen verfügen mit der Agentenbäckerei über ein Software-Modul zum automatischen Paketieren von individuell angepassten Agenten. Eine ausführliche Beschreibung dazu finden Sie im allgemeinen Artikel über die Agenten. Die Installation der gebackenen Pakete geschieht genauso wie es für die mitgelieferten Pakete oben beschrieben ist.
Ab Checkmk Cloud können Sie die Agentenbäckerei zusätzlich nutzen, um Agentenpakete mit einer Konfiguration für die Autoregistrierung zu versehen, was die automatische Erstellung von Hosts ermöglicht. In diesem Fall erfolgt die Registrierung des Agenten automatisch nach der Installation des Agentenpakets und eine manuelle Registrierung, wie im folgenden Kapitel beschrieben, ist nicht mehr notwendig.
3.4. Automatisches Update
Wenn Sie die Agentenbäckerei verwenden, können Sie automatische Updates des Agenten einrichten. Diese werden in einem eigenen Artikel beschrieben.
3.5. Wie geht es weiter nach der Installation?
Falls der Agent Controller bei der Installation mit systemd
konfiguriert werden konnte, ist der nächste Schritt die Registrierung, mit der die TLS-Verschlüsselung eingerichtet wird, so dass die verschlüsselte Agentenausgabe vom Checkmk-Server entschlüsselt und im Monitoring angezeigt werden kann.
Eine Besonderheit gibt es, falls der Agent mit Agent Controller erstmalig installiert wurde. Dann schaltet der Agent in den unverschlüsselten Legacy-Pull-Modus, damit der Checkmk-Server nicht von den Monitoring-Daten abgeschnitten wird und diese weiterhin anzeigen kann. Das betrifft sowohl eine Neuinstallation als auch das Update eines Agenten der Version 2.0.0 und älter.
Einen Hinweis auf den aktivierten Legacy-Pull-Modus erhalten Sie bereits in der Kommandoausgabe bei der Installation des Agenten. Im Monitoring sieht das dann etwa so aus:
Die Checkmk-Instanz erkennt an der Agentenausgabe, dass der Agent Controller vorhanden und damit die TLS-Verschlüsselung möglich ist — aber noch nicht eingeschaltet ist. Der Service Check_MK Agent wechselt in den Zustand WARN und bleibt es solange, bis Sie die Registrierung durchgeführt haben. Nach der Registrierung wird nur noch im verschlüsselten Pull-Modus kommuniziert. Der Legacy-Pull-Modus wird abgeschaltet und bleibt es auch. Allerdings kann er im Bedarfsfall per Kommando wieder eingeschaltet werden.
Anders liegt der Fall, wenn der Agent Controller sich während der Installation nicht als Daemon bei systemd
registrieren konnte.
Ohne Agent Controller ist die Registrierung des Hosts nicht möglich und der einzige Kommunikationsweg verbleibt der Legacy-Modus.
Im nächsten Kapitel können Sie durch Test von Agent Controller und Systemumgebung feststellen, ob Sie mit der Registrierung fortsetzen können.
Hinweis: Im Regelsatz Checkmk Agent installation auditing finden Sie verschiedene Einstellungen, um den Zustand des Agenten zu prüfen und im Monitoring sichtbar zu machen. Unter anderem können Sie hier festlegen, welchen Zustand der Service Check_MK Agent bei einer noch nicht durchgeführten TLS-Konfiguration haben soll.
4. Registrierung
4.1. Übersicht und Voraussetzungen
Unmittelbar nach der Installation des Agenten (auch als Update eines Agenten der Version 2.0.0 und älter) ist nur unverschlüsselte Kommunikation im Legacy-Pull-Modus möglich. Eine ausschließlich verschlüsselte Datenübertragung ist erst nach Aufbau eines Vertrauensverhältnisses aktiv.
Eine Ausnahme hiervon sind die für die Autoregistrierung vorkonfigurierten und via Agentenbäckerei heruntergeladene Pakete. Diese Pakete führen die Registrierung automatisch nach der Installation durch.
In allen anderen Fällen führen Sie die manuelle Registrierung zeitnah nach der Installation des Agenten durch. Wie Sie dies bewerkstelligen, zeigt dieses Kapitel.
Die Registrierung und damit die Herstellung des gegenseitigen Vertrauensverhältnisses erfolgt unter einem Checkmk-Benutzer mit Zugriff auf die REST-API.
Dafür bietet sich der Automationsbenutzer agent_registration
an, der nur die Berechtigung zur Registrierung von Agenten besitzt und bei jeder Checkmk-Installation automatisch angelegt wird.
Das zugehörige Automationspasswort (automation secret) können Sie mit auswürfeln.
Voraussetzungen auf dem Host
Die Registrierung mit dem Agent Controller setzt ein Linux-System voraus mit einem init-System systemd
ab Version 219 und einer x86_64-Rechnerarchitektur.
Im Abschnitt Agent Controller und Systemumgebung testen erfahren Sie, wie Sie diese Voraussetzungen überprüfen.
Voraussetzungen auf dem Checkmk-Server
Damit die Registrierung direkt auf dem ins Monitoring aufzunehmenden Host durchgeführt werden kann, muss dieser die REST-API des Checkmk-Servers (Port 443 oder 80) und den Agent Receiver (Port 8000 bei der ersten Instanz, 8001 bei der zweiten…) erreichen können. Lesen Sie den Abschnitt Netzwerkumgebung für die Registrierung, falls in Ihrer IT-Infrastruktur eine dieser Bedingungen nicht erfüllt werden kann.
4.2. Host ins Setup aufnehmen
Erstellen Sie zunächst den neuen Host über Setup > Hosts > Add host. Ein Host muss in der Konfigurationsumgebung existieren, bevor er registriert werden kann.
Ab Checkmk Cloud finden Sie in den Eigenschaften des Hosts im Abschnitt zu den Monitoring-Agenten die Option Checkmk agent connection mode. Hier können Sie alternativ zum Pull-Modus, der in allen Editionen verfügbar ist, für den Checkmk-Agenten den Push-Modus aktivieren.
4.3. Agent Controller und Systemumgebung testen
Der Agent mit Agent Controller setzt eine Linux-Distribution mit systemd
voraus, präziser systemd
in einer Version 219 oder neuer.
Die Chance ist groß, dass diese Voraussetzung auf Ihrem Host erfüllt ist, da seit 2015 die meisten Linux-Distributionen systemd
als init-System übernommen und damit andere init-Systeme wie SysVinit ersetzt haben, z.B. SUSE Linux Enterprise Server ab Version 12, openSUSE ab Version 12.1, Red Hat Enterprise Linux ab Version 7, Fedora ab Version 15, Debian ab Version 8 und Ubuntu ab Version 15.04.
Leider bringt der Vergleich der Versionsnummer alleine keine Gewissheit, da systemd
auch auf einem aktuellen Linux-System fehlen kann, wenn dieses Jahre lang „nur“ aktualisiert wurde.
Neben der Version von systemd
sind einige weitere Voraussetzungen zu erfüllen, die in diesem Kapitel abgeprüft werden.
Achtung: Push-Modus und Autoregistrierung sind zwingend an den Agent Controller gebunden und daher nicht nutzbar im Legacy-Modus, auf den wir in diesem Kapitel mehrfach verweisen.
Prüfen Sie zunächst auf dem Host, auf dem der Agent installiert werden soll, ob und in welcher Version systemd
läuft:
root@linux# systemctl --version
systemd 245 (245.4-4ubuntu3.15)
Die obige Kommandoausgabe zeigt, dass systemd
in der richtigen Version installiert ist.
Falls systemd
nicht, oder nur in einer zu alten Version läuft, kann der Agent Controller nicht verwendet werden.
Schließen Sie die Einrichtung ab, wie im Artikel Linux überwachen im Legacy-Modus beschrieben.
Prüfen Sie nun, ob der Agent Controller gestartet werden kann:
root@linux# cmk-agent-ctl --version
Als Ausgabe sollte die Versionsnummer zu sehen sein, beispielsweise:
cmk-agent-ctl 2.3.0p16
In seltenen Fällen erscheint die folgende Fehlermeldung:
bash: /usr/bin/cmk-agent-ctl: cannot execute binary file: Exec format error
Ursache hierfür ist, dass Ihr Linux eine andere Rechnerarchitektur als x86_64 nutzt, zum Beispiel das ältere 32-Bit x86 oder ARM. In diesem Fall kann der Agent Controller nicht verwendet werden. Schließen Sie die Einrichtung ab, wie im Artikel Linux überwachen im Legacy-Modus beschrieben.
Im nächsten Schritt gilt es herauszufinden, welches Programm auf Port 6556 auf Anfragen wartet:
root@linux# ss -tulpn | grep 6556
tcp LISTEN 0 1024 0.0.0.0:6556 0.0.0.0:* users:(("cmk-agent-ctl",pid=1861810,fd=9))
Hier ist es cmk-agent-ctl
.
Die Voraussetzungen für verschlüsselte Kommunikation sind also erfüllt.
Steht innerhalb der Klammer stattdessen systemd
, xinetd
oder inetd
, sind die Voraussetzungen für die Verwendung des Agent Controllers nicht gegeben.
Schließen Sie auch in diesem Fall die Einrichtung ab, wie im Artikel Linux überwachen im Legacy-Modus beschrieben.
4.4. Host beim Server registrieren
Die Registrierung erfolgt mit dem Agent Controller cmk-agent-ctl
, der für die Konfiguration der Verbindungen eine Kommandoschnittstelle bietet.
Sie können sich mit cmk-agent-ctl help
die Kommandohilfe anzeigen lassen, auch spezifisch für die verfügbaren Subkommandos, z.B. mit cmk-agent-ctl help register
.
Ob der Host dabei für den Pull-Modus oder den Push-Modus konfiguriert ist, macht für die Befehlsbeispiele keinen Unterschied. In welchem Modus der Agent Controller arbeiten soll, teilt ihm der Agent Receiver bei der Registrierung mit.
Begeben Sie sich nun zum Host, der registriert werden soll.
Hier ist mit root
-Rechten eine Anfrage an die Checkmk-Instanz zu stellen:
root@linux# cmk-agent-ctl register --hostname mynewhost \
--server cmkserver --site mysite \
--user agent_registration --password 'PTEGDYXBFXVGNDPRL'
Dabei ist der Host-Name hinter der Option --hostname
exakt so anzugeben, wie zuvor beim Erstellen im Setup.
Die Optionen --server
und --site
geben den Namen des Checkmk-Servers und der Instanz an.
Der Server-Name darf auch die IP-Adresse sein, der Instanzname (hier mysite
) entspricht demjenigen, den Sie im URL-Pfad der Weboberfläche sehen.
Komplettiert werden die Optionen durch Name und Passwort des Automationsbenutzers.
Wenn Sie die Option --password
auslassen, wird das Passwort interaktiv abgefragt.
Waren die angegebenen Werte korrekt, werden Sie aufgefordert, die Identität der Checkmk-Instanz zu bestätigen, zu der Sie die Verbindung herstellen wollen. Das zu bestätigende Server-Zertifikat haben wir aus Gründen der Übersichtlichkeit stark verkürzt:
Attempting to register at cmkserver:8000/mysite. Server certificate details:
PEM-encoded certificate:
---BEGIN CERTIFICATE---
MIIC6zCCAdOgAwIBAgIUXbSE8FXQfmFqoRNhG9NpHhlRJ40wDQYJKoZIhvcNAQEL
[...]
nS+9hN5ILfRI+wkdrQLC0vkHVYY8hGIEq+xTpG/Pxw==
---END CERTIFICATE---
Issued by:
Site 'mysite' local CA
Issued to:
localhost
Validity:
From Thu, 10 Feb 2022 15:13:22 +0000
To Tue, 13 Jun 3020 15:13:22 +0000
Do you want to establish this connection? [Y/n]
> Y
Bestätigen Sie mit Y
, um den Vorgang abzuschließen.
Falls keine Fehlermeldung angezeigt wird, ist die verschlüsselte Verbindung hergestellt. Über diese Verbindung werden alle Daten komprimiert übertragen.
Wenn Sie die interaktive Zertifikatsprüfung – beispielsweise, um die Registrierung komplett automatisieren zu können – abschalten wollen, können Sie den zusätzlichen Parameter --trust-cert
verwenden.
Dem übermittelten Zertifikat wird dann automatisch vertraut.
Beachten Sie in diesem Fall, dass Sie auf anderem Weg die Integrität des Zertifikats sicher stellen sollten.
Dies kann (von Hand oder per Skript) durch Kontrolle der Datei /var/lib/cmk-agent/registered_connections.json
erfolgen.
4.5. Host beim Server automatisch registrieren lassen
Checkmk bietet ab Checkmk Cloud die Möglichkeit, Hosts automatisch bei der Registrierung anzulegen. Für die Autoregistrierung benötigen Sie zusätzlich zu einem Benutzer mit der Berechtigung Hosts zu registrieren, mindestens einen Ordner, der für die Aufnahme der automatisch zu erstellenden Hosts konfiguriert ist.
Ist dies der Fall, können Sie die Registrierung inklusive automatischer Erstellung des Hosts auch per Kommandozeile vornehmen.
In der Regel werden Sie den Weg über die Einstellungen der Agentenbäckerei gehen,
welche die Konfigurationsdatei /var/lib/cmk-agent/pre_configured_connections.json
ins Agentenpaket integrieren und die Registrierung automatisch bei der Installation vornehmen.
Der hier vorgestellte Kommandozeilenaufruf dient daher primär dem Test und der Fehlersuche, beispielsweise dem Ausprobieren eigener Agenten-Labels mit der Option --agent-labels <KEY=VALUE>
.
root@linux# cmk-agent-ctl register-new \
--server cmkserver --site mysite \
--agent-labels testhost:true \
--user agent_registration --password 'PTEGDYXBFXVGNDPRL'
Größter Unterschied hier ist das geänderte Subkommando register-new
, mit dem die Registrierung und die Erstellung eines neuen Hosts in der Checkmk-Instanz angefragt wird.
Als Name des Hosts wird der in der Umgebungsvariable $HOSTNAME
hinterlegte verwendet.
Die anschließende Bestätigung des Zertifikats entspricht der im letzten Abschnitt gezeigten.
Ob der Host im Pull-Modus, im Push-Modus oder überhaupt nicht angelegt wird, entscheiden Ihre Einstellungen des Regelsatzes Agent registration. Nach erfolgreicher Registrierung können mehrere Minuten vergehen, bis der Host im Monitoring auftaucht.
4.6. Vertrauensverhältnis überprüfen
Das Kommando cmk-agent-ctl status
zeigt nun genau ein Vertrauensverhältnis zum Checkmk-Server:
root@linux# cmk-agent-ctl status
Connection: 12.34.56.78:8000/mysite
UUID: d38e7e53-9f0b-4f11-bbcf-d19617971595
Local:
Connection type: pull-agent
Certificate issuer: Site 'mysite' local CA
Certificate validity: Mon, 21 Feb 2022 11:23:57 +0000 - Sat, 24 Jun 3020 11:23:57 +0000
Remote:
Connection type: pull-agent
Host name: mynewhost
Ist die Information in einem maschinenlesbaren Format erforderlich, hängen Sie den zusätzlichen Parameter --json
an, um die Ausgabe als JSON-Objekt formatiert zu erhalten.
Hinweis: Es kann stets nur ein Vertrauensverhältnis zwischen Host und Instanz geben.
Wenn Sie beispielsweise den bereits registrierten Host mynewhost
unter anderem Namen (mynewhost2
), aber mit der gleichen IP-Adresse registrieren, dann ersetzt die neue Verbindung die bestehende.
Die Verbindung von mynewhost
zur Instanz wird gelöst und für den Host werden keine Agentendaten mehr für das Monitoring geliefert.
4.7. Im Auftrag registrieren
Zur leichteren Registrierung mehrerer Hosts kann ein beliebiger Host, auf dem der Agent installiert ist, eine Registrierung im Auftrag anderer durchführen. Dabei wird eine JSON-Datei exportiert, die dann auf den Ziel-Host übertragen und dort importiert werden kann. Auch hier gilt wie zuvor: Der im Auftrag registrierte Host muss in der Instanz bereits eingerichtet sein.
Zunächst wird auf einem beliebigen im Setup befindlichen Host die Registrierung stellvertretend durchgeführt.
Hier bietet sich natürlich der Checkmk-Server an, der in der Regel als erster Host eingerichtet wird.
Wie beim Beispiel oben gilt, dass Sie das Passwort per Option übergeben können oder interaktiv danach gefragt werden, wenn Sie die Option --password
weglassen.
Die JSON-Ausgabe leiten wir im Beispiel in eine Datei um:
root@linux# cmk-agent-ctl proxy-register \
--hostname mynewhost3 \
--server cmkserver --site mysite \
--user agent_registration > /tmp/mynewhost3.json
Nun übertragen wir die Datei /tmp/mynewhost3.json
auf den Host, für den wir die Registrierung durchgeführt haben, und importieren die Datei:
root@linux# cmk-agent-ctl import /tmp/mynewhost3.json
Der gesamte Vorgang ist auch in einer Pipeline möglich, in der Sie die Ausgabe von cmk-agent-ctl proxy-register
an ssh hostname cmk-agent-ctl import
übergeben:
root@linux# cmk-agent-ctl proxy-register --hostname mynewhost3 \
--server cmkserver --site mysite \
--user agent_registration --password 'PTEGDYXBFXVGNDPRL' | \
ssh root@mynewhost3 cmk-agent-ctl import
4.8. Host ins Monitoring aufnehmen
Sobald die Registrierung fertiggestellt ist, führen Sie im Setup des Checkmk-Servers einen Verbindungstest und eine Service-Erkennung durch. Anschließend nehmen Sie die gefundenen Services ins Monitoring auf, indem Sie als letzten Schritt die Änderungen aktivieren.
Falls der Verbindungstest fehlschlägt, finden Sie im folgenden Kapitel Informationen zu Test und Fehlerdiagnose.
4.9. Host deregistrieren
Die Registrierung eines Hosts können Sie auch wieder rückgängig machen.
Auf einem Host, der mit dem Checkmk-Server verbunden ist, können Sie das Vertrauensverhältnis widerrufen.
Dabei ist im folgenden Kommando der anzugebende Universally Unique Identifier (UUID) derjenige, der beim Kommando cmk-agent-ctl status
ausgegeben wird:
root@linux# cmk-agent-ctl delete d38e7e53-9f0b-4f11-bbcf-d19617971595
Um alle Verbindungen des Hosts zu entfernen und zusätzlich den Legacy-Pull-Modus wiederherzustellen, geben Sie folgendes Kommando ein:
root@linux# cmk-agent-ctl delete-all --enable-insecure-connections
Anschließend verhält sich der Agent wie nach der erstmaligen Installation und vor der ersten Registrierung und sendet seine Daten unverschlüsselt.
Komplettiert wird die Deregistrierung auf dem Checkmk-Server: Im Setup wählen Sie auf der Seite Properties of host den Menüeintrag Host > Remove TLS registration aus und bestätigen die Nachfrage.
Falls Sie die Kommandozeile bevorzugen: Auf dem Checkmk-Server existiert für jede Verbindung eines registrierten Hosts, der sich im Monitoring befindet, ein Softlink mit der UUID, welcher auf den Ordner mit der Agentenausgabe zeigt:
OMD[mysite]:~$ cd ~/var/agent-receiver/received-outputs
OMD[mysite]:~$ ls -l d38e7e53-9f0b-4f11-bbcf-d19617971595
lrwxrwxrwx 1 mysite mysite 67 Feb 23 07:18 d38e7e53-9f0b-4f11-bbcf-d19617971595 -> /omd/sites/mysite/tmp/check_mk/data_source_cache/push-agent/mynewhost
4.10. Umstellung zwischen Push- und Pull-Modus
Ab Checkmk Cloud können Sie Hosts vom Push- zum Pull-Modus und umgekehrt umstellen. Dies kann in Einzelfällen nötig sein, wenn Änderungen an der Netzwerktopologie anstehen oder ein Downgrade auf Checkmk Enterprise durchgeführt werden soll, wo nur der Pull-Modus möglich sind.
Stellen Sie zunächst im Setup, in den Eigenschaften des Hosts, den Zugriffsmodus mit der Option Checkmk agent connection mode um.
Innerhalb der nächsten Minute werden alle Services den Status UNKNOWN annehmen, weil keine Monitoring-Daten eingehen.
Führen Sie anschließend eine erneute Registrierung durch.
Bei dieser erneuten Registrierung teilt der Agent Receiver des Checkmk-Servers dem Agent Controller mit, ob er Daten im Pull- oder im Push-Modus erwartet.
Die anschließende Kontrolle mit cmk-agent-ctl status
zeigt dann eine neue UUID und den Modus konsistent mit der Änderung im Setup an.
5. Test und Fehlerdiagnose
Ein modulares System kann an vielen Stellen nicht wie vorgesehen funktionieren. Da mit dem Agenten seit der Version 2.1.0 die beiden Komponenten Agent Controller auf dem Host und Agent Receiver auf dem Checkmk-Server eingeführt wurden, steigt die Zahl der Stellen, an denen etwas schiefgehen kann.
Bei der Fehlersuche ist daher eine strukturierte Vorgehensweise sinnvoll. Selbstverständlich können Sie die hier beschriebene schrittweise Analyse auch nutzen, die Datenerhebung und Kommunikation von Checkmk näher kennenzulernen.
Alle Möglichkeiten, die es vom Checkmk-Server aus gibt, sind im allgemeinen Artikel über die Monitoring-Agenten beschrieben. Aber natürlich gibt es noch weitere Diagnosemöglichkeiten, wenn man direkt auf dem überwachten Host angemeldet ist.
Wir arbeiten uns im Folgenden vom Agentenskript über den Agent Controller und den TCP-Port 6556 bis zur Checkmk-Instanz durch. Beim Agent Controller im Push-Modus überspringen Sie Tests auf Port 6556 – selbst wenn der Port 6556 vor der Registrierung geöffnet ist, wird er nach der Registrierung im Push-Modus geschlossen. In den meisten Fällen können Sie nach Korrektur eines Fehlers die Service-Erkennung erneut starten und die Aufnahme ins Monitoring abschließen.
Beim direkten Aufruf des Agentenskripts in einer Shell stehen möglicherweise andere Umgebungsvariablen zur Verfügung als beim Aufruf durch den Agent Controller. Um die Ausgabe des Agentenskripts zu analysieren, sollten Sie daher nach Möglichkeit den Agent Controller im Dump-Modus verwenden. |
5.1. Ausgabe des Agentenskripts
Das Agentenskript ist ein einfaches Shellskript, welches Daten über Ihr System beschafft und als lose formatierten Text ausgibt.
Sie können es direkt auf der Kommandozeile aufrufen.
Da die Ausgabe etwas länger sein kann, ist der Pager less
zum Scrollen der Ausgabe hier sehr praktisch.
Sie können Ihn mit der Taste Q verlassen:
root@linux# check_mk_agent | less
<<<check_mk>>>
Version: 2.3.0p16
AgentOS: linux
Hostname: mynewhost
AgentDirectory: /etc/check_mk
DataDirectory: /var/lib/check_mk_agent
SpoolDirectory: /var/lib/check_mk_agent/spool
PluginsDirectory: /usr/lib/check_mk_agent/plugins
LocalDirectory: /usr/lib/check_mk_agent/local
AgentController: cmk-agent-ctl 0.1.0
So ermitteln Sie, ob das Agentenskript und Ihre Plugins und lokalen Checks richtig installiert sind.
Sie müssen übrigens nicht unbedingt root
sein, um den Agenten aufzurufen.
Allerdings werden dann in der Ausgabe einige Informationen fehlen, zu deren Beschaffung root
-Rechte erforderlich sind (z.B. Multipath-Informationen und die Ausgaben von ethtool
).
5.2. Agentenskript im Debug-Modus
Damit eventuelle Fehlerausgaben von nicht funktionierenden Plugins oder Befehlen nicht die eigentlichen Daten „verunreinigen“, unterdrückt das Agentenskript generell den Standardfehlerkanal (STDERR). Sind Sie auf der Suche nach einem bestimmten Problem, können Sie diesen wieder aktivieren, indem Sie das Agentenskript in einem speziellen Debug-Modus aufrufen.
Vorbereitend sollten Sie prüfen, ob das Agentenskript und der Agent Controller im Dump-Modus eine identische Ausgabe liefern und gegebenenfalls eine identische Umgebung (environment) sicherstellen. Dies kann durch Setzen von Variablen in einem Plugin/lokalen Check oder der Shell geschehen. Einen Dump der Umgebung können Sie erstellen, indem Sie die Zeile
env > /tmp/cmk_agent_environment.txt
zu einer Plugin-Datei hinzufügen und dann den Inhalt der Datei nach Ausführung durch den Agent Controller ansehen.
Die Ausgabe der zusätzlichen Debug-Informationen erledigt dann die Option -d
.
Dabei werden auch sämtliche Shell-Befehle ausgegeben, die das Skript ausführt.
Damit Sie hier mit less
arbeiten können, müssen Sie Standardausgabe (STDOUT) und Fehlerkanal mit 2>&1
zusammenfassen:
root@linux# check_mk_agent -d 2>&1 | less
5.3. Netzwerkumgebung für die Registrierung
Schlägt die Registrierung eines Hosts im Monitoring fehl, ohne dass überhaupt das Zertifikat angezeigt wird, hilft Kenntnis der involvierten Netzwerkkommunikation bei der Identifizierung des Problems — und natürlich bei der Behebung.
Nach Absetzen des Kommandos cmk-agent-ctl register
fragt der Agent Controller zunächst mittels REST-API den Checkmk-Server nach dem Port des Agent Receivers.
Im zweiten Schritt wird eine Verbindung zum Agent Receiver aufgebaut, um das Zertifikat abzurufen.
Sie können die erste Anfrage auf dem Host mit einem Programm wie curl
simulieren:
root@linux# curl -v --insecure https://mycmkserver/mysite/check_mk/api/1.0/domain-types/internal/actions/discover-receiver/invoke
Der Parameter --insecure
weist curl
hier an, keine Zertifikatsprüfung vorzunehmen.
Dieses Verhalten entspricht dem Verhalten des Agent Controller an dieser Stelle.
Die Antwort ist lediglich wenige Bytes groß und besteht aus der Port-Nummer des Agent Receiver.
Bei der ersten Instanz auf einem Server wird die Antwort einfach 8000
lauten, bei der zweiten 8001
und so weiter.
Typische Probleme bei dieser Anfrage sind:
Der Checkmk-Server ist vom Host aus gar nicht erreichbar.
Der von der REST-API verwendete Port weicht von den Standard-Ports 443 (https) oder 80 (http) ab.
Falls die obige Anfrage fehlschlägt, können Sie die Routing- oder Firewall-Einstellungen so verändern, dass der Zugriff möglich ist.
Wenn der zu registrierende Host einen HTTP-Proxy verwendet, nutzt curl
diesen, cmk-agent-ctl
jedoch nicht in den Standardeinstellungen.
Mit der zusätzlichen Option --detect-proxy
weisen Sie cmk-agent-ctl
an, den systemweit konfigurierten Proxy zu nutzen.
Oft dürfte es am einfachsten sein, auf dem Checkmk-Server den Port des Agent Receiver auszulesen und zu notieren. Führen Sie dazu den folgenden Befehl als Instanzbenutzer aus:
OMD[mysite]:~$ omd config show | grep AGENT_RECEIVER
AGENT_RECEIVER: on
AGENT_RECEIVER_PORT: 8000
Sie können nun den ermittelten Port bei der Registrierung direkt angeben und so die erste Anfrage via REST-API überspringen. Die Kommunikation findet dann ohne Umwege direkt mit dem Agent Receiver statt:
root@linux# cmk-agent-ctl register --hostname mynewhost \
--server mycmkserver:8000 --site mysite \
--user agent_registration --password 'PTEGDYXBFXVGNDPRL'
Auch dieser Port 8000 muss vom Host aus erreichbar sein. Ist er das nicht, erhalten Sie die eindeutige Fehlermeldung:
ERROR [cmk_agent_ctl] Connection refused (os error 111)
Analog zu Port 443 (respektive 80) oben können Sie jetzt die Routing- oder Firewall-Einstellungen so anpassen, dass der zu registrierende Host den Checkmk-Server auf dem Port des Agent Receiver (8000 oder 8001…) erreichen kann.
Im Falle der Registrierung im Push-Modus gilt: Hat die Registrierung funktioniert, wird auch der minütliche Transfer der Agentenausgabe erfolgreich sein.
Sollten Sicherheitsrichtlinien in Ihrer Umgebung den Zugriff auf den Agent Receiver nicht zulassen, haben sie die Möglichkeit, auf dem Checkmk-Server selbst die Registrierung im Auftrag vorzunehmen.
5.4. Agent Controller im Dump-Modus
Der Agent Controller stellt ein eigenes Subkommando dump
bereit, das die vollständige Agentenausgabe anzeigt, wie sie im Monitoring ankommt:
root@linux# cmk-agent-ctl dump | less
<<<check_mk>>>
Version: 2.3.0p16
AgentOS: linux
Hostname: mynewhost
So können Sie überprüfen, ob die Daten vom Agentenskript beim Agent Controller angekommen sind. Diese Ausgabe beweist noch nicht, dass der Agent auch über das Netzwerk erreichbar ist.
In einigen Fällen sieht die Ausgabe wie folgt aus:
ERROR [cmk_agent_ctl] Error collecting monitoring data.
Caused by:
Connection refused (os error 111)
Dies ist der Fall, wenn der Socket des Agenten nicht im Hintergrund läuft – beispielsweise unmittelbar nach einem Update. Starten Sie diesen Hintergrundprozess neu:
root@linux# systemctl restart check-mk-agent.socket
Schlägt cmk-agent-ctl dump
erneut fehl, prüfen Sie, ob und wenn, welches Programm an Port 6556 lauscht:
root@linux# ss -tulpn | grep 6556
tcp LISTEN 0 1024 0.0.0.0:6556 0.0.0.0:* users:(("cmk-agent-ctl",pid=1861810,fd=9))
Ist die Ausgabe leer oder innerhalb der Klammer steht ein anderer Befehl als cmk-agent-ctl
, sind die Systemvoraussetzungen für die Nutzung des Agent Controllers nicht erfüllt.
Schließen Sie in diesem Fall die Einrichtung ab, wie im Artikel Linux überwachen im Legacy-Modus beschrieben.
5.5. Verbindungstest von außen
Ist im Pull-Modus sichergestellt, dass lokal das Agentenskript und die mitinstallierten Plugins korrekt ausgeführt werden,
können Sie als Nächstes per netcat
(oder nc
) prüfen, ob Port 6556 über die externe IP-Adresse des Hosts erreichbar ist:
root@linux# echo | nc 10.76.23.189 6556
16
Die Ausgabe 16
zeigt an, dass die Verbindungsaufnahme erfolgreich war und nun der TLS-Handshake stattfinden kann.
Da alles weitere hier TLS verschlüsselt stattfindet, ist keine detaillierte Prüfung möglich.
Schlägt der Verbindungstest von außen fehl, liegt dies meist an der Firewall-Einstellung.
Konfigurieren Sie iptables
oder nftables
in diesem Fall so, dass Zugriff auf TCP Port 6556 vom Checkmk-Server aus möglich ist.
Falls die Kommunikation zwischen Agent und Checkmk-Server noch unverschlüsselt ist (wie im Legacy-Pull-Modus) oder unverschlüsselt ist und auch bleibt (wie im Legacy-Modus),
erhalten Sie mit diesem Kommando statt der 16
die komplette unverschlüsselte Agentenausgabe.
Hinweis: Weitere Diagnosemöglichkeiten zur Ausführung auf dem Checkmk-Server finden Sie im allgemeinen Artikel über die Monitoring-Agenten.
5.6. Fehlersuche beim Agenten im Push-Modus
Im Ordner ~/var/agent-receiver/received-outputs/
Ihrer Checkmk-Instanz finden Sie für jeden registrierten Host einen Softlink, der als Name die UUID des Hosts verwendet.
Bei Hosts im Push-Modus zeigt dieser Softlink auf den Ordner mit der Agentenausgabe, bei Pull-Hosts auf eine nicht vorhandene Datei mit dem Namen des Hosts, wie er im Monitoring verwendet wird.
Anhand des Alters der zwischengespeicherten Agentenausgabe können Sie ermitteln, ob die regelmäßige Übertragung erfolgreich war oder beispielsweise durch sporadische Netzwerkprobleme vereitelt wird.
Des Weiteren können Sie auf dem Host mit dem Kommando systemctl status cmk-agent-ctl-daemon
den Status der letzten Übertragungen und Übertragungsversuche auslesen.
Zeilen wie die folgende deuten auf Verbindungsprobleme hin:
Dez 15 17:59:49 myhost23 cmk-agent-ctl[652648]: WARN [cmk_agent_ctl::modes::push] https://mycmkserver:8000/mysite: Error pushing agent output.
5.7. Verbindungen gehen verloren
Wurde ein Host für die Autoregistrierung mit dem Regelsatz Agent controller auto-registration konfiguriert und die Option Keep existing connections auf no gesetzt, werden bei jedem Neustart des Dienstes cmk-agent-ctl-daemon
(beispielsweise beim Neustart eines Hosts) alle anderen Verbindungen entfernt — außer der für die Autoregistrierung konfigurierten Verbindung.
Dies betrifft beispielsweise Hosts, auf denen vor der Installation des gebackenen Agentenpakets Verbindungen zu mehreren Instanzen eingerichtet waren oder nach der Installation des Agentenpakets manuell Verbindungen hinzugefügt wurden.
Sie können dieses Verhalten temporär ändern, indem Sie auf dem Host in der Datei /var/lib/cmk-agent/pre_configured_connections.json
die Variable keep_existing_connections
auf true
setzen.
Eine dauerhafte Änderung über ein Update der Agentenpakete hinweg erreichen Sie, indem Sie im oben genannten Regelsatz Keep existing connections auf yes setzen.
5.8. Zeitdauer bis Änderungen sichtbar werden
Bei der Autoregistrierung eines Hosts vergehen typischerweise etwa zwei Minuten, bis der Host im Monitoring auftaucht.
Wurde einem Host, der zuerst für den Push-Modus konfiguriert wurde, nachträglich eine Verbindung im Pull-Modus zu einer anderen Instanz hinzugefügt, vergehen bis zu fünf Minuten, bis Port 6556 geöffnet wird.
Die sofortige Öffnung des Ports erreichen Sie durch den Neustart des Dienstes cmk-agent-ctl-daemon
.
6. Absicherung
6.1. Vorüberlegung
Sicherheit ist ein wichtiges Kriterium für jegliche Software, hier darf Monitoring keine Ausnahme machen. Da der Monitoring-Agent auf jedem überwachten Server installiert wird, hätte hier ein Sicherheitsproblem besonders gravierende Auswirkungen.
Deswegen wurde schon beim Design von Checkmk auf Sicherheit Wert gelegt und es gilt seit den ersten Tagen von Checkmk ein eherner Grundsatz: Der Agent liest keine Daten vom Netzwerk. Punkt. Somit ist mit Sicherheit ausgeschlossen, dass ein Angreifer über den Überwachungsport 6556 irgendwelche Befehle oder Skriptbestandteile einschleusen kann.
6.2. Transport Layer Security (TLS)
Für einen Angreifer kann jedoch bereits eine Prozessliste ein erster Ansatz sein, Rückschlüsse auf lohnenswerte Ziele zu ziehen. Daher ist die Transportverschlüsselung zwischen Agent und Checkmk-Server mit Transport Layer Security (TLS) ab Checkmk-Version 2.1.0 obligatorisch. Hierbei "pingt" der Checkmk-Server den überwachten Host an, der daraufhin die TLS-Verbindung zum Checkmk-Server aufbaut und darüber die Agentenausgabe überträgt. Da nur Checkmk-Server, zu denen ein Vertrauensverhältnis besteht, diese Datenübertragung initiieren können, besteht schon einmal kein Risiko, dass Daten in die falschen Hände gelangen.
Für die Absicherung der TLS-Verbindung verwendet Checkmk ein selbst signiertes Zertifikat, das kurz vor Ablauf seiner Gültigkeit automatisch ersetzt wird. Der Agent Controller kümmert sich um die rechtzeitige Erneuerung des Zertifikates vor seinem Ablauf. Nur längere Zeit inaktive Agenten, d.h., ohne laufenden Agent Controller, können ihre Registrierung bei Ablauf verlieren und müssen dann erneut registriert werden. Die Laufzeit des Zertifikats kann über die globale Einstellung Agent Certificates > Lifetime of certificates festgelegt werden.
6.3. Zugriff über IP-Adressen beschränken
Da nur autorisierte Checkmk-Server Daten abrufen können und nicht berechtigte Server nach einigen Bytes Handshake scheitern, ist die Gefahr einer Denial of Service (DoS) Attacke sehr gering.
Aus diesem Grund ist aktuell keine weitere Zugriffsbeschränkung vorgesehen.
Selbstverständlich können Sie Port 6556 per iptables
gegen unberechtigten Zugriff sperren.
Eine möglicherweise vorhandene und per Agentenbäckerei auf Clients übertragene Regel zur Einschränkung des Zugriffs auf bestimmte IP-Adressen wird vom Agent Controller ignoriert.
6.4. Eingebaute Verschlüsselung abschalten
Insbesondere bei einem Update des Agenten kann es sein, dass die eingebaute (symmetrische) Verschlüsselung aktiv ist, die vom Agentenskript selbst durchgeführt wird. Sind TLS-Verschlüsselung und eingebaute Verschlüsselung gleichzeitig aktiv, dann ist die Entropie der übertragenen Daten so hoch, dass die ab Version 2.1.0 aktive Komprimierung keine Ersparnis der übertragenen Daten bringt – und die CPUs sowohl des Hosts als auch des Checkmk-Servers mit zusätzlichen Ver- und Entschlüsselungsschritten belasten.
Aus diesem Grund sollten Sie die eingebaute Verschlüsselung zeitnah nach dem Wechsel auf TLS deaktivieren.
Im ersten Schritt schalten Sie in der vorhandenen Regel unter Setup > Agents > Access to agents > Checkmk agent > Symmetric encryption (Linux, Windows) die Verschlüsselung ab.
Im zweiten Schritt benennen Sie auf dem Host des Agenten die Konfigurationsdatei /etc/check_mk/encryption.cfg
um.
Im dritten und letzten Schritt legen Sie mit der Regel Enforce agent data encryption fest, dass der Checkmk-Server nur noch per TLS verschlüsselte Daten akzeptiert. Wählen Sie dazu in der Regel den Wert Accept TLS encrypted connections only aus.
Das Abschalten der Verschlüsselung mit der Agentenbäckerei geht so:
Mit dem ersten Schritt, dem Ändern der Regel Symmetric encryption (Linux, Windows), sind Sie fast fertig.
Sie brauchen nur noch neue Agenten zu backen und zu verteilen.
Die Konfigurationsdatei /etc/check_mk/encryption.cfg
wird automatisch für Sie geändert und mit in die Agentenpakete eingebaut.
Übrig bleibt dann nur der dritte Schritt, d.h. die Änderung der Regel Enforce agent data encryption.
Nach dem nächsten automatischen Agenten-Update ist die Verschlüsselung des Agentenskripts abgeschaltet, aber durch den Agent Controller die Verschlüsselung garantiert. Beachten Sie, dass nach dem automatischen Agenten-Update nur noch registrierte Hosts Monitoring-Daten liefern können.
7. Sektionen deaktivieren
Die Ausgabe des Checkmk-Agenten ist in Sektionen unterteilt.
Jede dieser Sektionen enthält zusammengehörige Informationen und ist meist einfach die Ausgabe eines Diagnosebefehls.
Sektionen beginnen immer mit einem Sektions-Header.
Dies ist eine Zeile, die in <<<
und >>>
eingeschlossen ist.
Bis auf die Checkmk eigenen Sektionen, können Sie jede der über 30 Sektionen, die der Agent standardmäßig erzeugt, einzeln deaktivieren. Konkret bedeutet dies, dass die entsprechenden Befehle durch den Agenten überhaupt nicht ausgeführt werden und ggf. Rechenzeit eingespart werden kann. Andere Gründe für die Deaktivierung könnten sein, dass Sie sich für bestimmte Informationen einer gewissen Gruppe von Hosts schlicht nicht interessieren, oder dass ein bestimmter Host fehlerhafte Werte liefert und Sie den Abruf dieser Daten kurzzeitig aussetzen wollen.
Als Nutzer einer der kommerziellen Editionen können Sie über Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules > Disabled sections (Linux agent) einfach eine Regel anlegen, welche dann von der Agentenbäckerei berücksichtigt wird.
In der Regel finden Sie für jede deaktivierbare Sektion eine eigene Checkbox.
Für jede angewählte Checkbox finden Sie dann — nachdem der neu gebackene Agent auf den ausgewählten Hosts installiert wurde — in der Konfigurationsdatei der Agentenbäckerei /etc/check_mk/exclude_sections.cfg
einen eigenen Eintrag.
Würden Sie in der Regel beispielsweise die beiden Optionen Running processes
und Systemd services
auswählen, sähe die passende Konfigurationsdatei wie folgt aus:
MK_SKIP_PS=yes
MK_SKIP_SYSTEMD=yes
Nutzer von Checkmk Raw können die oben genannte Datei /etc/check_mk/exclude_sections.cfg
manuell anlegen und dort die Sektionen eintragen, die deaktiviert werden sollen.
Alle deaktivierbaren Sektionen sind in der Datei ~/share/check_mk/agents/cfg_examples/exclude_sections.cfg
aufgelistet.
8. Agent um Plugins erweitern
8.1. Was sind Agentenplugins?
Das Agentenskript /usr/bin/check_mk_agent
enthält eine ganze Reihe von Sektionen, welche Überwachungsdaten für diverse Check-Plugins liefern, die dann von der Service-Erkennung automatisch gefunden werden.
Dazu gehören alle 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 eine ganze Reihe solcher Plugins mit aus, welche — wenn sie korrekt installiert und konfiguriert sind — in der Service-Erkennung automatisch neue Services liefern.
Warum sind diese Plugins nicht einfach in den Agenten fest integriert? Für jedes der Plugins gibt es einen der folgenden Gründe:
Das Plugin ist in einer anderen Programmiersprache als Shell geschrieben und kann daher nicht inline realisiert werden (Beispiel:
mk_logwatch
).Das Plugin benötigt sowieso eine Konfiguration, ohne die es nicht funktionieren würde (Beispiel:
mk_oracle
).Das Plugin ist so speziell, dass es von den meisten Anwendern nicht benötigt wird (Beispiel:
plesk_domains
).
8.2. Manuelle Installation
Die mitgelieferten Plugins für Linux und Unix finden Sie alle auf dem Checkmk-Server unter ~/share/check_mk/agents/plugins
.
Auch über die Download-Seite der Agenten im Setup-Menü (wie im Kapitel Installation beschrieben) sind diese im Kasten Plugins verfügbar:
Zu allen von uns mitgelieferten Agentenplugins existieren die passenden Check-Plugins, welche deren Daten auswerten und Services erzeugen können. Diese sind bereits mitinstalliert, so dass neu gefundene Services sofort erkannt und konfiguriert werden können.
Hinweis: Bevor Sie ein Plugin auf dem Host installieren, werfen Sie einen Blick in die entsprechende Datei. Oft finden Sie dort wichtige Hinweise zur korrekten Verwendung des Plugins.
Die eigentliche Installation ist dann einfach:
Kopieren Sie die Datei nach /usr/lib/check_mk_agent/plugins
.
Achten Sie dabei darauf, dass diese ausführbar ist.
Falls nicht, verwenden Sie ein chmod 755
.
Der Agent wird das Plugin sonst nicht ausführen.
Insbesondere, wenn Sie die Dateien nicht per scp
übertragen sondern per HTTP von der Download-Seite holen, geht die Ausführungsberechtigung verloren.
Sobald das Plugin ausführbar ist und im richtigen 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
) erzeugen sogar eine ganze Reihe an neuen Sektionen.
8.3. Konfiguration
Manche Plugins brauchen eine Konfigurationsdatei in /etc/check_mk/
, damit sie funktionieren können.
Bei anderen ist eine Konfiguration optional und ermöglicht besondere Features oder Anpassungen.
Wieder andere funktionieren einfach so.
Sie haben verschiedene Quellen, um an Informationen zu kommen:
Die Dokumentation der zugehörigen Check-Plugins in Ihrer Checkmk-Instanz, welche Sie über Setup > Services > Catalog of check plugins erreichen.
Kommentare im Plugin selbst (oft sehr hilfreich!).
Einen passenden Artikel in diesem Handbuch (z.B. über das Überwachen von Oracle)
8.4. Asynchrone Ausführung
Ebenso wie bei MRPE können Sie auch Plugins asynchron ausführen lassen. Das ist sehr nützlich, wenn die Plugins eine lange Laufzeit haben und die gewonnenen Statusdaten ohnehin nicht jede Minute neu erzeugt werden brauchen.
Die asynchrone Ausführung wird nicht über eine Datei konfiguriert.
Stattdessen erzeugen Sie unter /usr/lib/check_mk_agent/plugins
ein Unterverzeichnis, dessen Name eine Zahl ist: eine Anzahl von Sekunden.
Plugins in diesem Verzeichnis werden nicht nur asynchron ausgeführt, sondern gleichzeitig geben Sie mit der Sekundenzahl eine Mindestwartezeit vor, bevor das Plugin erneut ausgeführt werden soll.
Wird der Agent vor Ablauf der Zeit erneut abgefragt, verwendet er zwischengespeicherte Daten von der letzten Ausführung des Plugins.
Damit können Sie ein größeres Intervall für das Plugin konfigurieren, als die typische eine Minute.
Folgendes Beispiel zeigt, wie das Plugin my_foo_plugin
von synchroner Ausführung auf eine asynchrone Ausführung mit einem Intervall von 5 Minuten (oder 300 Sekunden) umgestellt wird:
root@linux# cd /usr/lib/check_mk_agent/plugins
root@linux# mkdir 300
root@linux# mv my_foo_plugin 300
Hinweis: Beachten Sie, dass einige Plugins bereits von sich aus eine asynchrone Ausführung umsetzen.
Dazu gehört mk_oracle
.
Installieren Sie solche Plugins direkt nach /usr/lib/check_mk_agent/plugins
.
8.5. Installation über die Agentenbäckerei
In den kommerziellen Editionen können die mitgelieferten Plugins ü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 > Agent rules > Agent Plugins:
8.6. Manuelle Ausführung
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 vor der Ausführung von Hand:
root@linux# export MK_LIBDIR=/usr/lib/check_mk_agent
root@linux# export MK_CONFDIR=/etc/check_mk
root@linux# export MK_VARDIR=/var/lib/check_mk_agent
root@linux# /usr/lib/check_mk_agent/plugins/mk_foobar
<<<foobar>>>
FOO BAR BLA BLUBB 17 47 11
Einige Plugins kennen auch spezielle Aufrufoptionen zum Debuggen. Werfen Sie einfach einen Blick in die Plugin-Datei.
9. Einbinden von Legacy Nagios Check-Plugins
9.1. Plugins über MRPE ausführen
Es gibt zwei gute Gründe, Nagios-Plugins auch unter Checkmk zu nutzen. Wenn Sie Ihr Monitoring von einer Nagios-basierten Lösung auf Checkmk migriert haben, können Sie ältere Check-Plugins, zu denen es noch kein Checkmk-Pendant gibt, zunächst weiternutzen. In vielen Fällen sind das selbst geschriebene Plugins in Perl oder Shell.
Der zweite Grund für die Verwendung ist echtes End-to-End-Monitoring. Nehmen wir an, Sie haben Ihren Checkmk-Server, einen Webserver und einen Datenbankserver über ein großes Rechenzentrum verteilt. In so einem Fall sind die Antwortzeiten des Datenbankservers vom Checkmk-Server aus gemessen wenig aussagekräftig. Weit wichtiger ist es, diese Werte für die Verbindung zwischen Web- und Datenbankserver zu kennen.
Der Checkmk-Agent bietet einen einfachen Mechanismus, diesen beiden Anforderungen gerecht zu werden: MK’s Remote Plugin Executor oder kurz MRPE. Der Name ist bewusst eine Analogie zum NRPE von Nagios, der dort die gleiche Aufgabe übernimmt.
Der MRPE ist im Agenten fest eingebaut und wird mit einer einfachen Textdatei konfiguriert, welche Sie als /etc/check_mk/mrpe.cfg
selbst anlegen.
Dort geben Sie pro Zeile einen Plugin-Aufruf an — zusammen mit dem Namen, den Checkmk für den Service verwenden soll, den es dafür automatisch erzeugt.
Hier ist ein Beispiel:
Foo_Application /usr/local/bin/check_foo -w 60 -c 80
Bar_Extender /usr/local/bin/check_bar -s -X -w 4:5
Hinweis: Die Nagios-Plugins dürfen nicht im Verzeichnis /usr/lib/check_mk_agent/plugins
abgelegt werden.
Dieses Verzeichnis ist den Agentenplugins vorbehalten.
Abgesehen von diesem Verzeichnis steht Ihnen die Wahl frei, solange der Agent die Plugins dort finden und ausführen kann.
Wenn Sie jetzt den Agenten lokal laufen lassen, finden Sie pro Plugin eine neue Sektion mit dem Titel <<<mrpe>>>
, welche Name, Exitcode und Ausgabe des Plugins enthält.
Das können Sie mit folgendem praktischen grep
-Befehl überprüfen:
root@linux# check_mk_agent | grep -A1 '^...mrpe'
<<<mrpe>>>
(check_foo) Foo_Application 0 OK - Foo server up and running
<<<mrpe>>>
(check_bar) Bar_Extender 1 WARN - Bar extender overload 6.012|bar_load=6.012
Die 0
bzw. 1
in der Ausgabe stehen für die Exitcodes der Plugins und folgen dem klassischen Schema:
0
= OK, 1
= WARN, 2
= CRIT und 3
= UNKNOWN.
Den Rest macht jetzt Checkmk automatisch. Sobald Sie die Service-Erkennung für den Host aufrufen, werden die beiden neuen Services als verfügbar angezeigt. Das sieht dann so aus:
Übrigens: Aufgrund der Syntax der Datei darf der Name keine Leerzeichen enthalten.
Sie können aber mithilfe der gleichen Syntax wie in URLs ein Space durch %20
ersetzen (ASCII-Code 32 für Space ist Hexadezimal 20):
Foo%20Application /usr/local/bin/check_foo -w 60 -c 80
Bar%20Extender /usr/local/bin/check_bar -s -X -w 4:5
9.2. Asynchrone Ausführung
Beachten Sie, dass alle Plugins, die Sie in mrpe.cfg
aufführen, der Reihe nach synchron ausgeführt werden.
Die Plugins sollten daher keine allzu große Ausführungszeit haben.
Wenn ein Plugin hängt, verzögert sich die Ausführung aller weiteren.
Das kann dazu führen, dass das komplette Abfragen des Agenten durch Checkmk-in einen Timeout läuft und der Host nicht mehr zuverlässig überwacht werden kann.
Wenn Sie wirklich länger laufende Plugins benötigen, sollten Sie diese auf asynchrone Ausführung umstellen und das Problem damit vermeiden.
Dabei legen Sie eine Zeit in Sekunden fest, die ein berechnetes Ergebnis Gültigkeit haben soll, z.B. 300
für fünf Minuten.
Setzen Sie dazu in mrpe.cfg
nach dem Servicenamen den Ausdruck (interval=300)
:
Foo_Application (interval=300) /usr/local/bin/check_foo -w 60 -c 80
Bar_Extender /usr/local/bin/check_bar -s -X -w 4:5
Das hat mehrere Auswirkungen:
Das Plugin wird in einem Hintergrundprozess ausgeführt und bremst nicht mehr die Ausführung des Agenten.
Weil der Agent die Ausführung nicht abwartet, wird das Ergebnis erst beim nächsten Aufruf des Agenten geliefert.
Frühestens nach 300 Sekunden wird das Plugin neu ausgeführt. Bis dahin wird das alte Ergebnis wiederverwendet.
Damit können Sie also Tests, die etwas mehr Rechenzeit benötigen, auch in größeren Intervallen ausführen, ohne dass Sie dazu am Checkmk-Server etwas konfigurieren müssen.
9.3. MRPE mit der Agentenbäckerei
Nutzer der kommerziellen Editionen können MRPE auch mit der Agentenbäckerei konfigurieren.
Zuständig dafür ist der Regelsatz Setup > Agents > Windows, Linux Solaris, AIX > Agent Rules > Generic Options > Execute MRPE checks.
Dort können Sie die gleichen Dinge wie oben beschrieben konfigurieren.
Die Datei mrpe.cfg
wird dann von der Bäckerei automatisch generiert.
Backen der Plugins
Auch die Check-Plugins selbst können Sie mit dem Paket ausliefern lassen. Damit ist der Agent dann komplett und braucht keine manuelle Installation von weiteren Dateien. Das Ganze geht so:
Erzeugen Sie auf dem Checkmk-Server das Verzeichnis
local/share/check_mk/agents/custom
.Erzeugen Sie dort ein Unterverzeichnis — z.B.
my_mrpe_plugins
.Erzeugen Sie wiederum darin das Unterverzeichnis
bin
.Kopieren Sie Ihre Plugins in den
bin
-Ordner.Legen Sie eine Regel in Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules > Generic Options > Deploy custom files with agent an.
Wählen Sie
my_mrpe_plugins
aus, speichern Sie und backen Sie!
Die Check-Plugins werden jetzt in das Standard-bin
-Verzeichnis Ihres Agenten installiert.
Per Default ist das /usr/bin
.
Bei der Konfiguration der MRPE-Checks verwenden Sie dann also /usr/bin/check_foo
anstelle von /usr/local/bin/check_foo
.
10. Hardware überwachen
Zu einer möglichst vollständigen Überwachung eines Linux-Servers gehört natürlich auch die Hardware. Die Überwachung geschieht teils direkt mit dem Checkmk-Agenten, teils auch über spezielle Plugins. Außerdem gibt es noch Fälle, in denen man per SNMP oder sogar über ein separates Managementboard eine Überwachung umsetzen kann.
10.1. Überwachung der SMART-Werte
Moderne Festplatten verfügen fast immer über S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology).
Dieses System zeichnet kontinuierlich Daten zum Zustand der HDD oder SSD auf und Checkmk kann mit dem Plugin smart
diese Werte abrufen und die wichtigsten davon auswerten.
Damit das Plugin nach der Installation auch funktioniert, müssen folgende Voraussetzungen erfüllt sein:
Das Paket
smartmontools
muss installiert sein. Sie können es auf allen modernen Distributionen über den jeweiligen Paketmanager installieren.Falls die Festplatten an einen RAID-Controller angeschlossen sind und dieser Zugriff auf die SMART-Werte erlaubt, muss das jeweilige Tool dazu installiert sein. Unterstützt werden
tw_cli
(3ware) undmegacli
(LSI).
Sind diese Voraussetzungen erfüllt und ist das Plugin installiert, werden die Daten automatisch ausgelesen und der Ausgabe des Agenten angehängt. In Checkmk können Sie die neuen Services dann auch direkt aktivieren:
Sollte — wie im Screenshot zu sehen — gelegentlich cmd_timeout
auftreten, stellen Sie das Plugin auf asynchrone Ausführung im Abstand einiger Minuten um.
10.2. Überwachung mit Hilfe von IPMI
IPMI (Intelligent Platform Management Interface) ist eine Schnittstelle zum Hardware-Management, welche auch die Überwachung der Hardware ermöglicht.
Checkmk nutzt dafür freeipmi
, um direkt und ohne Netzwerk auf die Hardware zuzugreifen.
freeipmi
wird aus den Paketquellen installiert und ist danach sofort einsatzbereit, so dass die Daten schon beim nächsten Aufruf von Checkmk übermittelt werden.
Falls freeipmi
nicht verfügbar ist, oder andere Gründe gegen eine Installation sprechen, kann auch ipmitool
verwendet werden.
ipmitool
ist oft bereits auf dem System vorhanden und muss lediglich mit einem IPMI Gerätetreiber versorgt werden, wie ihn z.B. das Paket openipmi
zur Verfügung stellt.
Auch hier müssen Sie danach nichts weiter tun.
Die Daten werden von Checkmk automatisch erfasst.
Zur Fehlerdiagnose können Sie die Tools auch händisch in einer Shell des Hosts ausführen.
Haben Sie das Paket freeipmi
installiert, können Sie die Funktion hiermit kontrollieren:
root@linux# ipmi-sensors Temperature
32 Temperature_Ambient 20.00_C_(1.00/42.00) [OK]
96 Temperature_Systemboard 23.00_C_(1.00/65.00) [OK]
160 Temperature_CPU_1 31.00_C_(1.00/90.00) [OK]
224 Temperature_CPU_2 NA(1.00/78.00) [Unknown]
288 Temperature_DIMM-1A 54.00_C_(NA/115.00) [OK]
352 Temperature_DIMM-1B 56.00_C_(NA/115.00) [OK]
416 Temperature_DIMM-2A NA(NA/115.00) [Unknown]
480 Temperature_DIMM-2B NA(NA/115.00) [Unknown]
Wenn ipmitool
installiert wurde, können Sie die Ausgabe der Daten mit folgendem Befehl prüfen:
root@linux# ipmitool sensor list
UID_Light 0.000 unspecified ok na na 0.000 na na na
Int._Health_LED 0.000 unspecified ok na na 0.000 na na na
Ext._Health_LED 0.000 unspecified ok na na 0.000 na na na
Power_Supply_1 0.000 unspecified nc na na 0.000 na na na
Fan_Block_1 34.888 unspecified nc na na 75.264 na na na
Fan_Block_2 29.792 unspecified nc na na 75.264 na na na
Temp_1 39.000 degrees_C ok na na -64.000 na na na
Temp_2 16.000 degrees_C ok na na -64.000 na na na
Power_Meter 180.000 Watts cr na na 384.00
10.3. Herstellerspezifische Tools
Viele große Server-Hersteller bieten auch eigene Tools an, um die Hardware-Informationen auszulesen und über SNMP bereitzustellen. Es gelten dabei die folgenden Voraussetzungen, um diese Daten abrufen und Checkmk bereitstellen zu können:
Auf dem Linux-Host ist ein SNMP-Server eingerichtet.
Das Tool des Herstellers ist installiert (z.B. Dells OpenManage oder Supermicros SuperDoctor).
Der Host ist in Checkmk für die Überwachung per SNMP zusätzlich zum Checkmk-Agenten konfiguriert. Im Artikel zur Überwachung mit SNMP erfahren Sie, wie das geht.
Die dadurch unterstützten neuen Services für die Hardware-Überwachung werden dann automatisch erkannt. Es werden keine weiteren Plugins benötigt.
10.4. Zusätzliche Überwachung über das Managementboard
Man kann zu jedem Host ein Managementboard konfigurieren und zusätzliche Daten per SNMP holen. Die dadurch erkannten Services werden dann ebenfalls dem Host zugeordnet.
Die Einrichtung des Managementboards ist dabei sehr einfach. Geben Sie in den Eigenschaften des Hosts lediglich das Protokoll, die IP-Adresse und die Zugangsdaten für SNMP an und speichern Sie die neuen Einstellungen ab:
In der Service-Erkennung werden die neu erkannten Services dann wie gewohnt aktiviert.
11. Deinstallation
Wie die Installation erfolgt auch die Deinstallation des Agenten mit dem Paketmanager des Betriebssystems. Geben Sie hier den Namen des installierten Pakets an, nicht den Dateinamen der ursprünglichen RPM/DEB-Datei.
So finden Sie heraus, welches DEB-Paket installiert ist:
root@linux# dpkg -l | grep check-mk-agent
ii check-mk-agent 2.3.0p16-1 all Checkmk Agent for Linux
Die Deinstallation des DEB-Pakets erfolgt dann mit dpkg --purge
:
root@linux# dpkg --purge check-mk-agent
(Reading database ... 739951 files and directories currently installed.)
Removing check-mk-agent (2.3.0p16-1) ...
Removing systemd units: check-mk-agent.socket, check-mk-agent-async.service, cmk-agent-ctl-daemon.service, check-mk-agent@.service
Deactivating systemd unit 'check-mk-agent.socket'...
Deactivating systemd unit 'check-mk-agent-async.service'...
Deactivating systemd unit 'cmk-agent-ctl-daemon.service'...
Reloading xinetd
Purging configuration files for check-mk-agent (2.3.0p16-1) ...
So finden Sie heraus, welches RPM-Paket installiert ist:
root@linux# rpm -qa | grep check-mk
Die Deinstallation des RPM-Pakets erfolgt unter root
mit dem Befehl rpm -e
.
11.1. Reaktivierung des Legacy-Pull-Modus
Bei der Deinstallation des Agenten bleibt der vom Installationsskript angelegte Nutzer cmk-agent
erhalten.
Er dient dem Post-Install-Skript als Indikator dafür, dass der Agent bereits auf diesem System installiert war.
Ist dies der Fall, wird bei einer späteren Neuinstallation kein Legacy-Pull-Modus aktiviert.
Dies führt dazu, dass nach Ausführung von cmk-agent-ctl delete-all
und späterer Neuinstallation des Agenten gar keine Verbindung auf Port 6556 möglich ist.
Sollte es erwünscht sein, wieder den unverschlüsselten Legacy-Pull-Modus zu aktivieren, z.B. um die Kommunikation einer 2.0.0 Instanz mit einem 2.2.0 Agenten zu ermöglichen, müssen Sie diesen Modus explizit aktivieren.
12. Dateien und Verzeichnisse
12.1. Pfade auf dem überwachten Host
Pfad | Bedeutung |
---|---|
|
Installationsverzeichnis für das Agentenskript |
|
Basisverzeichnis für Erweiterungen des Agenten. |
|
Verzeichnis für Plugins, welche automatisch vom Agenten ausgeführt werden sollen und dessen Ausgabe um zusätzliche Überwachungsdaten erweitern. Plugins können in jeder verfügbaren Programmiersprache geschrieben werden. |
|
Verzeichnis für eigene lokale Checks. |
|
Basisverzeichnis für Daten des Agenten. |
|
Hier werden Cache-Daten einzelner Sektionen abgelegt und dem Agenten, solange die Cache-Daten gültig sind, bei jeder Ausführung wieder angehängt. |
|
Verzeichnis für überwachte Jobs. Diese werden der Agentenausgabe bei jeder Ausführung angehängt. |
|
Enthält Daten, die z.B. von Log-Dateien erstellt werden und eine eigene Sektion beinhalten. Diese werden ebenfalls der Agentenausgabe angehängt. Mehr dazu erfahren Sie im Artikel Das Spool-Verzeichnis. |
|
Enthält eine Liste der mit dem Agent Controller registrierten Verbindungen. |
|
Enthält eine vorkonfigurierte und per Agentenbäckerei in das Agentenpaket integrierte Verbindung zu einer Instanz für die Autoregistrierung. |
|
Ablage von Konfigurationsdateien für den Agenten. |
|
Konfigurationsdatei für MRPE — für die Ausführung von Legacy Nagios-kompatiblen Check-Plugins. |
|
Konfiguration für die eingebaute Verschlüsselung der Agentendaten. |
|
Konfigurationsdatei für die Deaktivierung bestimmter Sektionen des Agenten. |
12.2. Pfade auf dem Checkmk-Server
Pfad | Bedeutung |
---|---|
|
Basisverzeichnis für eigene Dateien, die mit einem gebackenen Agenten ausgeliefert werden sollen. |
|
Beispielhafte Konfigurationsdatei für das Deaktivieren von Sektionen. |
|
Enthält für jede Verbindung deren UUID als Softlink, der auf einen Ordner mit dem Namen des Hosts zeigt. Im Push-Modus enthält dieser Ordner die Agentenausgabe. |