Linux ist auf Servern sehr populär – schließlich gilt das Open-Source-Betriebssystem als besonders stabil und zuverlässig. Dennoch möchte man als Sysadmin von einem oder mehreren Linux-Servern den Zustand und die Leistung der Maschinen überwachen – und wenn nötig, Benachrichtigungen erhalten.

Checkmk unterstützt verschiedene Linux-Distributionen. Die Serverkomponente ist als Installationspaket (.dep und .rpm) als virtuelle Appliance oder als Docker-Container verfügbar. Die Linux-Version des Checkmk Agenten ist ebenfalls einfach zu installieren, da es sich hierbei um ein einfaches Shell-Skript (/usr/bin/check_mk_agent) handelt. Es führt verschiedene Befehle aus, etwa df, mount, ps, etc., um so die benötigten Daten über das Dateisystem, die CPU oder Netzwerkgeräte etc. zu erhalten.

Es ist außerdem möglich, die Funktionalität des Agenten mit zusätzlichen Plugins zu erweitern. In diesem Artikel wollen wir sieben Checkmk Plugins vorstellen, die äußerst nützlich für das Monitoring von Linux-Servern sind.

Plugins zu Ihren Diensten

Checkmk Plugins sind kleine Skripe oder Programme, die der Agent abruft, um zusätzliche Daten über das überwachte Objekt abzurufen. Es gibt zwei Arten von Plugins:

  • Checkplugin
  • Agentenplugin

Derzeit umfasst Checkmk über 2.000 Plugins, das heißt, sie befinden sich auf dem Server. Zusätzlich zu den Checkplugins gibt es noch 100 weitere Agentenplugins. Diese müssen installiert werden, um das System überwachen zu können. Bei den in diesem Artikel genannten Plugins handelt es sich um Agentenplugins. Einige von ihnen benötigten eine Konfigurationsdatei (in/etc/check_mk), damit sie korrekt funktionieren. Andere arbeiten wiederum out of the box. Daher ist es nötig, dass Sie sich immer auch die Dokumentation sowie den Quellcode des jeweiligen Plugins anschauen, um die Konfigurationsoptionen herauszufinden.

Wenn Sie die Checkmk Raw Edition (CRE) verwenden, können Sie das Plugin installieren, indem Sie es in den Plugin-Ordner des Linux-Agenten kopieren (/usr/lib/check_mk_agent/plugins). Bitte denken Sie daran, die Dateien ausführbar zu machen (chmod +x). Da einige Plugins eine lange Laufzeit haben und nicht jede Minute refreshed werden müssen, können Sie diese in Unterordnern ablegen, die nach der Sekundenanzahl benannt sind, um diese asynchron auszuführen.

Nutzer der Checkmk Enterprise Edition (CEE) können die Agenten Bakery für die Installation des Plugins und der automatischen Erstellung der Konfigurationsdatei(n) benutzen.

Wo Sie die Agentenplugins in der Checkmk Raw Edition finden und herunterladen können und wie Sie mit der Checkmk Enterrpise Edition Plugins automatisch über die Agentenbäckerei ausrollen, können Sie in unserem Handbuch nachschlagen.

Kommen wir nun zu den Top 7 unserer Plugins für das Linux-Server-Monitoring mit Checkmk.

1. Package-Management

Ihr Linux-Distributor veröffentlicht regelmäßig Softwareupdates und -patches, um Bugs oder Sicherheitsschwachstellen zu beheben. Es ist wichtig, diese Updates zu installieren, um das Betriebssystem möglichst sicher zu halten. Statt jeden Server manuell nach Updates zu überprüfen, können Sie auch Checkmk nutzen, um das Package-Management-System Ihrer Linux-Distribution zu überwachen.

Wenn Sie Debian-basierte Server verwenden, können Sie das Plugin mk-apt verwenden, um den APT Package Manager zu überwachen. Das Plugin mk_zypper überprüft Updates für zypper auf „SUSE Linux Enterprise Server“- und openSUSE-Systemen. Und wenn Sie ein Yum auf Red-Hat-basierten Systemen anwenden, können Sie dieses Plugin verwenden.

APT-Updates in Checkmk

Alle drei Plugins zeigen den Status WARN bei einem normalen Update und den Status CRIT bei einem Sicherheitsupdate an.

Tipp: Es ist eine gute Idee, die Plugins mit einer asynchronen Ausführung zu installieren, da es nicht nötig ist, mehr als einmal am Tag nach einem Update zu suchen.

2. Inventory

Die HW/SW-Inventur von Checkmk sammelt alle Informationen zur Hardware und zur installierten Software auf Ihren Hosts. Das Plugin mk_inventory liefert nicht nur Informationen über die existierende Hardware und Software auf Ihrem Linux-Server(n), etwa wie viel RAM/Swap hat die Maschine? Wie viele CPUs und Cores gibt es? Welche meiner Server haben ein spezielles Paket installiert? Es kann auch Änderungen feststellen.

Dazu müssen Sie einfach nur mk_inventory.linux auf Ihren Linux-Plattformen installieren. Mit der Enterprise Edition können Sie das Agentenplugin mit der Regel Hardware/Software-Inventory (Linux, Windows, Solaris, AIX) unter Setup einrichten. 

Anschließend aktivieren Sie die Inventarisierung mit dem Regelsatz Do hardware/software inventory unter Setup. Für jeden ausgewählten Host sehen Sie einen neuen Check namens Checkmk HW/SW Inventory. Die Ergebnisse können Sie via Show Hardware/Software inventory for this host einsehen: Sie haben die Möglichkeit, sich durch die Baumstruktur zu klicken, das Inventory zu einer individuellen Ansicht hinzuzufügen oder es in einem anderen Format zu exportieren. Ferner können Sie Schwellwerte für den Check festlegen, sodass Checkmk Sie benachrichtigt, wenn es eine Änderung feststellt.

Das Inventory eines Hosts in Checkmk

3. Anzahl der eingeloggten Nutzer

Wenn Sie die Anzahl der eingeloggten Nutzer überwachen wollen, installieren Sie das Plugin mk_logins. Es kombiniert die beiden Befehle „who“ und „wc -l”, um Informationen zu den angemeldeten Anwendern zu erhalten. In der Enterprise Edition können Sie das Plugin mit der Agentenregel Number of logged-in users (Linux) unter Setup finden und konfigurieren.

In der Standardkonfiguration gibt das Plugin eine Warnung, wenn die Anzahl 20 übersteigt. Ein kritischer Status ist ab 30 eingeloggten Nutzern erreicht. Sie haben jedoch auch die Möglichkeit, die Regel anzupassen und die Schwellwerte nach Ihren Bedürfnissen zu definieren. Sie können beispielsweise den Schwellwert für einen Server, auf dem sich normalerweise niemand einloggt, auf 1 setzen. Es ist außerdem möglich, Zeiträume und verschiedene WARN/CRIT-Schwellwerte festzulegen.

Tipp: Auf einem meiner Server habe ich das Plugin so modifiziert, dass es meine eigene IP-Adresse der Dial-up-Verbindung ausschließt. Hierfür habe ich ein einfaches grep-Kommando hinzugefügt:

#!/bin/bash
[...]
if type who >/dev/null; then
    echo "<<<logins>>>"
    who | grep -v 203.0.113.0 | wc -l
fi

4. SSH Daemon

Eventuell haben Sie ja einen Root-Login deaktiviert, den standardmäßigen SSH-Port von 22 auf einen anderen geändert oder die Public/Private-Keys-Authentifizierung für Ihren SSH-Server aktiviert. Wenn das der Fall ist und Sie außerdem Ihre /etc/ssh/sshd_config überwachen wollen, sollten Sie das Plugin mk_sshd_config installieren. Die Agentenregel, um das Plugin auf den gewünschten Hosts auszurollen, findet sich in der Enterprise Edition unter Setup -> SSH daemon configuration (Linux).

Das Plugin behält sicherheitsrelevante Parameter Ihrer SSH Daemon-Konfiguration im Auge und alarmiert Sie, wenn eine oder mehrere Optionen geändert wurden. Sie können die meisten Parameter über die Regel SSH daemon configuration unter Setup ändern.

SSH Daemon-Konfiguration in Checkmk

Wenn Ihr SSH Daemon-Server statt /etc/ssh/sshd_config eine andere Konfigurationsdatei verwendet, können Sie das Plugin in Ihrem bevorzugtem Text-Editor modifizieren und die Variable SSHD_CONFIG ändern.

Unabhängig von Ihrer Konfiguration sollten Sie überprüfen, ob Ihre Firewall Verbindungen zum SSH-Port zulässt. Dies ist zwar standardmäßig der Port 22, es ist jedoch immer empfehlenswert, diesen zu ändern. Führen Sie auf dem Host folgenden Befehl aus:

iptables -nvL

Wenn Sie in der INPUT-Kette am SSH-Port fehlende Pakete feststellen, öffnen Sie ihn mit:

iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT

Mit ufw ist es nur eine Frage der Ausführung von:

ufw allow 22/tcp

Oder wenn Sie firewalld nutzen:

firewall-cmd --permanent --add-port=22/tcp

Checkmk kann mit dem Agentenplugin mk_iptables überprüfen, ob die Firewall falsch konfiguriert ist, egal ob sie iptables oder eines seiner modernen Frontends wie ufw oder firewalld verwendet.

5. MySQL-Datenbanken

Datenbanken sind Teil unseres modernen IT-Lebens und ein wesentlicher Bestandteil vieler Services. Es spielt keine Rolle, ob ein dedizierter Datenbank-Server vorhanden ist oder nicht – für die Performance der Datenbank(en) sind die Sysadmins verantwortlich, auch wenn sie möglicherweise gar keine Datenbank-Admins sind.

Egal, ob sie den Datenbankstatus, die Anzahl der offenen Sitzungen oder die IO-Statistiken im Auge behalten wollen, Checkmk hilft ihnen dabei. Alles, was es braucht, um grundlegende Informationen über Datenbanken zu erhalten, ist das Agentenplugin mk_mysql. Sollten die Admins spezifischere Daten benötigen, arbeiten weitere Plugins mit den von mk_mysql gelieferten Daten:

  • mysql_sessions zur Überprüfung von (aktiven als auch inaktiven) MySQL-Sitzungen. 
  • mysql_connections für die Überwachung der Datenbankverbindungen.
  • mysql_slave für das Monitoring des Synchronisationsstatus von MySQL-Primary-Datenbanken.
  • mysql_ping, um zu prüfen, ob der MySQL-Daemon aktiv ist und Verbindungen annimmt.
  • mysql_innodb_io, um die IO-Rate der InnoDB-Engine zu prüfen.
  • mysql_version, um die MySQL-Version herauszufinden.
  • mysql_capacity, um zu wissen, wie viel Speicherplatz die Datenbank belegt.
MySQL-Monitoring in Checkmk

Damit die Checkplugins funktionieren, muss das Agentenplugin mk_mysql installiert sein. Dazu legen sie den Agenten wie gewohnt unter /usr/lib/check_mk_agent/plugins ab. Zudem müssen Sie sicherstellen, dass er ausführbar ist, um Ihre MySQL-Datenbanken überwachen zu können. Bei der Enterprise Edition können Sie mit der Agentenbäckerei das Plugin automatisch in das Agentenpaket einbinden und installieren. Dazu müssen Sie die Agentenregel MySQL Databases unter Setup suchen und konfigurieren.

6. LVM

Es ist gängige Praxis, die Festplattenpartitionen der Server in logische Volumen aufzuteilen, sei es aus organisatorischen oder aus Performance-Gründen. LVM ist seit vielen Jahren der Standard unter Linux und lässt sich – wie Sie sich an dieser Stelle bereits denken können – mit Checkmk überwachen. Für das Monitoring benötigen Sie das Agentenplugin lvm. In der Enterprise Edition können Sie die Agentenregel unter Setup -> LVM, Logical Volume Groups (Linux) finden. Es sind zudem noch weitere Plugins verfügbar, die Ihnen das Monitoring logischer Volumen (lvm_lvs) und Volume Groups (lvm_vgs) ermöglichen.

LVM-Monitoring in Checkmk

7. SMART-Monitoring

Sie sollten die Gesundheit Ihrer physischen Laufwerke kontinuierlich im Auge behalten und einen Ausfall eines Laufwerks in jedem Fall vermeiden. Selbst wenn Sie die Daten nach einem Ausfall wieder vollständig herstellen können, spart es Ihnen viel Zeit und Stress, wenn Sie rechtzeitig über Probleme informiert werden und es gar nicht erst so weit kommt.

SMART-Monitoring kann Ihnen zwar nicht genau vorhersagen, wann Sie ein defektes Laufwerk ersetzen sollten, aber es sagt Ihnen, wenn Sie sich auf den schlimmsten Fall vorbereiten sollten. Unter Linux ist das Standardpaket für den Zugriff auf die S.M.A.R.T.-Informationen smartmontools. Die Konfiguration des Pakets würde den Rahmen dieses Artikels sprengen, daher sei hier nur erwähnt, dass Checkmk nach der Installation von smartmontools das mitgelieferte Kommandozeilen-Tool smartctl nach Daten über die Gesundheit der Laufwerke abfragt.

SMART-Monitoring in Checkmk

Dazu verwendet Checkmk das Plugin smart, das mit smartctl selbst interagiert. In der Enterprise Edition können Sie die entsprechende Agentenregel unter Setup -> SMART harddisk monitoring (Linux) finden und konfigurieren. Weitere Plugins sind smart_stats, das Gesundheitsstatistiken überwacht, und smart_temp, das die Temperatur meldet.