Checkmk verfügt mittlerweile über 2.000 Plugins, die es Ihnen erlauben, relevante Metriken aus Ihren eingesetzten Systemen zu sammeln. Mit zusätzlichen Plugins lässt sich zudem die Funktionalität des Monitoring-Agenten erweitern. In unserem vorherigen Artikel über Linux-Plugins für das Server-Monitoring haben wir Ihnen bereits vorgestellt, mit welchen Plugins Checkmk Ihnen den Einstieg in das Monitoring unter Linux erleichtert. Dabei haben wir Ihnen gezeigt,
- wie Sie nach Updates für Ihre Linux-Distribution suchen.
- Wie Sie Informationen zu Ihrem Inventar sammeln.
- Wie Sie eingeloggte Nutzer überwachen.
- Wie Sie sicherstellen, dass SSH richtig konfiguriert ist und funktioniert.
- Wie Sie MySQL-Datenbanken und LVM-Volumes überwachen und
- wie Sie die Gesundheit Ihrer Laufwerke durch S.M.A.R.T.-Monitoring überprüfen.
Der Artikel deckt jedoch nur ein Bruchteil dessen ab, was Sie unter Linux überwachen können. Es gibt noch viele weitere Plugins.
In diesem Artikel wollen wir uns mit dem Monitoring von Dateisystemen (auch Netzwerken), Docker und Webservern beschäftigen. Wenn nicht anders angegeben, liegt der Schwerpunkt dabei auf Linux-Monitoring.
Operationen im Dateisystem
Hin und wieder ist es sinnvoll, bestimmte Dateiaktivitäten auf Ihrem Server zu überwachen. Vielleicht müssen Sie überprüfen, ob und warum eine Cache-Datei nicht erstellt wird, oder Sie möchten eine Benachrichtigung erhalten, wenn eine Datei nicht innerhalb einer bestimmten Zeitspanne geändert worden ist. Linux verfügt seit 2005 über eine Standardmethode, um Änderungen in Dateien und Ordnern zu überwachen: inotify
. Das mit Checkmk gelieferte Plugin, mk_inotify
, baut auf inotify
auf und ist essenziell für das Monitoring vieler Dateisystemoperationen.
Für die tatsächliche Überwachung bestimmter Dateien und Ordner werden jedoch zwei weitere Komponenten benötigt: das Python-Modul
pynotify
und das Plugin inotify
. Pyinotify
ist wie üblich über pip verfügbar oder wird von Ihrer Distribution gepackt. Um es zu installieren, verwenden Sie einfach:
$ sudo pip install pyinotify
Das inotify
Plugin sammelt mit pyinotify
Informationen über bestimmte Dateioperationen wie Zugriff, Öffnen, Erstellen, Modifizieren. Dabei können Sie angeben, welche Dateien und Ordner Checkmk überwachen und über welche Vorgänge es Sie informieren soll. Das Monitoring erstellt einen Service für jede Datei und jeden Ordner, den Sie überwachen möchten. In der Checkmk Enterprise Edition müssen Sie hierfür das Agentenplugin Monitor file operations with Inotify (Linux) konfigurieren.
NGINX und Apache Webserver
Für den internen oder externen Zugriff wird in der Regel auf einem oder mehreren Servern einer beliebigen Infrastruktur ein Webserver installiert. Die beiden meistgenutzten Server sind derzeit NGINX und Apache. Beide können Sie problemlos mit Checkmk überwachen.
Das Agentenplugin für NGINX heißt nginx_status
und überwacht den globalen Status des NGINX Prozesses (nicht den Server), der auf einem Host läuft. Dazu baut es eine Verbindung zu NGINX auf und sammelt Informationen aus dem Stub-Statusmodul. Damit Checkmk Ihren Webserver überwachen kann, müssen Sie diese Komponente jedoch erst aktivieren.
Um zu überprüfen, ob sie bereits aktiviert ist, verwenden Sie:
nginx -V 2>&1 | grep -o with-http_stub_status_modulee
Wenn Sie einen Output sehen, ist sie bereits aktiv. Wenn nicht, können Sie sie ganz einfach aktivieren. Dafür bearbeiten Sie die NGINX-Konfigurationsdatei (bei Debian und Derivaten unter /etc/nginx/sites-enabled/default
) unter dem Server
-Block mit:
location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; }
Ersetzen Sie 127.0.0.1
durch die Adresse Ihrer Checkmk Location. Wenn Sie NGINX neu laden, ist der Pfad http://127.0.0.1/nginx_status
für Verbindungen offen. Checkmk verwendet diesen Pfad dann, um Verbindungen herzustellen und Metriken zu sammeln. Nach der Installation des Agentenplugins nginx_status
, können Sie NGINX mit Checkmk überwachen. In der Checkmk Enterprise Edition müssen Sie dazu das Agentenplugin NGINX webservers (Linux) konfigurieren.
Das Monitoring von Apache funktioniert auf ähnliche Weise. Dafür sollte das Apache Statusmodul aktiviert sein. Normalerweise ist das unter Debian/Ubuntu standardmäßig der Fall. Der Pfad /server_status
ist dann für das Monitoring durch Checkmk offen.
Das erforderliche Agentenplugin ist apache_status
. Sobald Sie alles eingerichtet haben, werden Sie eine Reihe nützlicher Metriken von Apache sehen und können somit beispielsweise die Anzahl der Slots, Worker, Zugriffe, CPU-Load für jeden Worker, Anzahl der Verbindungen, Server und mehr mit dem apache_status
Plugin überwachen. In der CEE müssen Sie hierfür das Agentenplugin Apache webservers (Linux) konfigurieren.
Docker-Nodes und -Container
Heutzutage gibt es kaum eine Infrastruktur, die nicht mit Containern und der entsprechenden Orchestrierung arbeitet. Ob On-Premises oder Off-Premises, Docker-Container werden für viele Aufgaben eingesetzt. Es gibt eine Vielzahl von Linux-Servern, die ihre Leistungsfähigkeit ausnutzen. Wie Sie sich bereits denken können, können Sie Container mit Checkmk überwachen.
Das dafür benötigte Agentenplugin ist mk_docker.py
. Es ermöglicht den anderen Checkmk Plugins, Informationen über Ihre Docker-Nodes und -Container zu sammeln. Die Plugins zur Überwachung der Nodes sind:
docker_node_disk_usage
überwacht die Anzahl und Größe der gesamten und aktiven Container, Images, lokalen Volumes und des Build-Cache für eine Docker-Node.docker_node_info_containers
überwacht alle Container auf einer Node, einschließlich der angehaltenen und gestoppten Container.docker_node_info
ist das grundlegende Plugin, um die Docker-Applikation zu überwachen.
Für Container bietet Checkmk:
docker_container_cpu
überwacht die CPU-Auslastung eines Docker-Containers.docker_container_cpu_cgroupv2
macht dasselbe, aber für cgroup v2.docker_container_diskstat
überwacht den Durchsatz der Blockspeicher-Geräte von Docker-Containern. Es ist möglich, jede Festplatte einzeln zu überwachen oder eine zusammenfassende Prüfung aller Platten vorzunehmen.docker_container_diskstat_cgroupv2
ist das Äquivalent für cgroup v2.docker_container_status_health
überwacht den Gesundheitsstatus von Containern. Es nutzt dafür die HEALTHCHECK-API von Docker.docker_container_mem
stellt, anders als der Name vermuten lässt, sicher, dass der Docker-Container die Speicherbelegungsgrenzen der Nodes oder der Container selbst respektiert. Es misst nicht die allgemeine Speichernutzung. Hier ist mit dem Plugindocker_container_mem_cgroupv2
auch eine Version für cgroup v2 verfügbar.docker_container_status
prüft, ob ein Container läuft oder nicht und ist daher das grundlegendste Check-Plugin für das Docker-Monitoring.docker_container_status_uptime
überwacht die Betriebszeit von Docker-Containern. Es kann so konfiguriert werden, dass ein Alert ausgelöst wird, wenn die Betriebszeit unter oder über ein bestimmtes Niveau fällt.
Die entsprechende Agentenregel in der CEE heißt Docker node und container.
NFS-Exporte (Linux und Solaris)
NFS ist der einfachste Weg, um Ordner und die zugehörigen Dateien unter Linux und verwandten Betriebssystemen gemeinsam zu nutzen. Seit vielen Jahren ist es die klassische Methode, um ein Verzeichnis auf mehrere Rechner zu exportieren. NFS ist auf jeder Linux-Distribution vorhanden und Checkmk kann es überwachen.
nfsexports
ist das Agentenplugin, das Ihre NFS-Exporte überwacht. Es informiert Sie nach der Installation über die Verfügbarkeit jedes Exports, entsprechend der Definition in/etc/exports
oder durch exportfs
. Außerdem warnt es Sie bei Fehlfunktionen des NFS-Server-Daemons oder des Portmappers und wenn einer der Exporte nicht verfügbar ist. Die Konfiguration erfolgt in der CEE über die Agentenregel NFS4-Exporte (Linux, Solaris).
Für jeden Export erstellt Checkmk einen Service.
NFS IO Stats
Das Monitoring Ihrer NFS-Exporte ist nur ein Teil der gesamten NFS-Überwachung. Im nächsten Schritt sollten Sie deren Performance überwachen. Checkmk bietet dafür ein Plugin namens nfsiostat
. Wie der Name schon sagt, liefert es Informationen über die Anzahl der Operationen und Bytes pro Sekunde auf Ihren NFS-Exporten, sowie Read-/Write-Statistiken und Neuübertragungen.
Damit der Agent seine Aufgabe erfüllen kann, muss der Befehl nfsiostat
auf den Client-Systemen installiert sein. Dieser befindet sich entweder in den Paketen nfs-utils
oder nfs-common
, je nachdem, ob Sie eine Red Hat- oder Debian-basierte Distribution verwenden. Um es einzurichten, nutzen Sie in der Enterprise Edition die Agentenregel NFS IO Stats (Linux).