
Checkmk – Die IT-Monitoring Software setzt neue Standards für effektives IT-Monitoring. Einfaches Aufsetzen, beste Skalierbarkeit und ein hoher Funktionsumfang begeistern immer mehr Anwender. Der Clou aber sind die über mehr als 1800 mitgelieferten Check-Plugins, die sich vollautomatisch konfigurieren.
Unter https://checkmk.de/videos.html wird sehr ausführlich und eindrucksvoll in Videos dargestellt, welche Möglichkeiten des Checkk-Monitorings bestehen. Ich zeige Ihnen in dieser Anleitung, wie Sie Checkmk auf einem Ubuntu Server 20.04.x installieren, einen ersten Host im Monitoring erstellen und diesen Host (Server) hinsichtlich seines System-Status und der eingesetzten Nextcloud-Version überwachen.
Wechseln Sie in den privilegierten Benutzermodus und laden sich die aktuelle Checkmk-Software herunter: Ggf. müssen Sie den Link anpassen, da ich diesen nicht permanent aktuell halten kann.
sudo -s
wget https://checkmk.de/support/1.6.0p18/check-mk-raw-1.6.0p18_0.focal_amd64.deb
Um das Paket installieren zu können nutzen wir gdebi: aktualisieren Sie den Server und installieren die gdebi-Software direkt aus dem Ubuntu-Repository:
apt update && apt upgrade && apt install -y gdebi-core

Nach der Aktualisierung und Vorbereitung des Systems können wir mittels
gdebi check-mk-raw-*.deb

die Monitoringsoftware Checkmk direkt installieren und im Anschluß die Version mittels
omd version

überprüfen. Um Checkmk verschlüsselt, also mittels ssl verwenden zu können, fügen wir das Repository „universe“ hinzu:
apt update apt install -y software-properties-common add-apt-repository universe apt update

und installieren die certbot Software, um die Let’s Encrypt Zertifikate requestieren zu können:
sudo apt install certbot python3-certbot-apache
Zudem erstellen wir das Verzeichnis für die Zertifikate und einen Diffie-Hellman-Schlüsselaustausch, um die Sicherheit des Monitoring-Systems zu erhöhen:
mkdir -p /etc/apache2/ssl openssl dhparam -out /etc/apache2/ssl/dhp-4096.pem 4096

Konfigurieren Sie den Webserver Apache2 für Ihre Domäne – passen Sie unbedingt die Werte für „ihre.domain.de“ und „ihre.email.de“ an:
nano /etc/apache2/sites-available/000-default.conf

ServerName ihre.domain.de ServerAlias ihre.domain.de ServerAdmin ihre@email.de
Testen Sie die Konfiguration und starten dann den Webserver Apache2 neu
apache2ctl configtest && systemctl restart apache2
Ordern Sie jetzt die SSL-Zertifikate für Ihre Domäne von Let’s Encrypt mittels certbot:
certbot --apache

Wählen Sie Ihre Domäne (1) und dann den redirect (2) im certbot-Dialog aus:

Öffnen Sie die SSL-Konfiguration von Apache2 und tragen sowohl den „dhp-4096.pem“, als auch den RequestHeader im <VirtualHost> Block unter den „SSL Certificate“-Einträgen ein:
nano /etc/apache2/sites-available/000-default-le-ssl.conf
SSLOpenSSLConfCmd DHParameters "/etc/apache2/ssl/dhp-4096.pem" RequestHeader set X-Forwarded-Proto "https"

Sichern Sie nun noch den Apapche2 Webserver etwas ab:
a2dismod status && nano /etc/apache2/conf-available/security.conf

ServerTokens Prod ServerSignature Off TraceEnabled Off
Tragen Sie noch Ihren Servernamen in die Apache2-Konfigurationsdatei (/etc/apache2/apache2.conf)
nano /etc/apache2/apache2.conf
ein, indem Sie die nachfolgende Zeile in die erste Zeile der Konfiguration kopieren. Bitte ersetzen Sie ihre.domain.de mit Ihrer „echten“ Domain!
ServerName ihre.domain.de
Aktivieren Sie die Apapche2 HEADER-Module, überprüfen dann die Konfiguration und starten zuletzt den Webserver neu:
a2enmod ssl headers && apache2ctl configtest && systemctl restart apache2
Um Checkmk nun im Web nutzen zu können muss eine Instanz (bspw. „IT_SERVICES„) instanziiert werden:
omd create it_services

Starten Sie die neue Checkmk-Site (it_services) und rufen diese dann im Web auf:
omd start it_services

Bevor Sie sich anmelden ändern Sie noch das in der Konsole angezeigte Standardpasswort. Dazu wechseln Sie mit „su – it_services“ die Session und führen dann den Passwortbefehl aus:
su - it_services
htpasswd -m ~/etc/htpasswd cmkadmin

Im Anschluss daran können Sie sich als cmkadmin und dem zuvor geänderten Passwort sicher am Monitoring-System anmelden:
https://<ihre-domäne.de>/it_services


Richten Sie noch das automatische Erneuern der SSL-Zertifikate mittels cron-job ein:
crontab -e
Fügen Sie die nachfolgende Zeile der crontab-Datei hinzu, um bspw. immer Sonntags um 02:05 Uhr die Zertifikate zu erneuern und im Fall einer Erneuerung auch den Webserver neu starten zu lassen:
5 2 * * 6 /usr/bin/certbot renew --renew-hook 'service apache2 restart'
Wechseln Sie nun auf Ihren Host, also den zu überwachenden Nextcloud-Server und laden den Checkmk-Agent herunter:
wget https://<ihre.domain.de>/it_services/check_mk/agents/check-mk-agent_1.6.0p18-1_all.deb

und installieren das Paket mittels gdebi auf dem Nextcloud-Server:
sudo -s
apt install -y gdebi-core python
gdebi check-mk-agent_*.deb
Erstellen Sie nun den Nextcloud-Check im Verzeichnis „/usr/lib/check_mk_agent/plugins/“ und passen ggf. die Variable „$baseDir“ an, sofern Nextcloud nicht unter „/var/www/nextcloud“ installiert wurde:
nano /usr/lib/check_mk_agent/plugins/check_nextcloud_update.php
#! /usr/bin/env php <?php $baseDir = "/var/www/nextcloud"; function getNewVersion($baseDir) { require $baseDir . "/config/config.php"; $pdo = new PDO(sprintf("mysql:host=%s;dbname=%s", $CONFIG["dbhost"], $CONFIG["dbname"]), $CONFIG["dbuser"], $CONFIG["dbpassword"]); $query = $pdo->query(" SELECT `configvalue` FROM `oc_appconfig` WHERE `appid` = 'core' AND `configkey` = 'lastupdateResult' "); if (!$query->rowCount()) { return null; } $json = json_decode($query->fetchObject()->configvalue, true); if ($json === null) { return null; } if (!is_array($json)) { return null; } if (empty($json)) { return true; } if (!isset($json["version"])) { return null; } if (!is_string($json["version"])) { return null; } return $json["version"]; } function getCurrentVersion($baseDir) { require $baseDir . "/version.php"; return implode(".", $OC_Version); } function output($state, $message) { printf("%d Nextcloud_Version - %s\n", $state, $message); } $newVersion = getNewVersion($baseDir); $currentVersion = getCurrentVersion($baseDir); if ($newVersion === null) { output(1, "Unable to read new version"); } elseif (!is_string($currentVersion)) { output(1, "Unable to read current version"); } elseif ($newVersion === true or $newVersion === $currentVersion) { output(0, sprintf("No update available (installed version: %s)", $currentVersion)); } else { output(1, sprintf("An update to version %s is available (installed version: %s)", $newVersion, $currentVersion)); }
Der Check muss nun noch als ausführbar markiert werden:
chmod +x /usr/lib/check_mk_agent/plugins/check_nextcloud_update.php
Nach einem Scan bzgl. neuer Services in Checkmk für den Nextcloud-Server (Host) werden verschiedene Systemchecks sowie dieser Nextcloud-Check angezeigt. Nach der Übernahme und Aktivierung der Services wird Ihr Nextcloud-Server mittels Checkmk bereits überwacht.
Achten Sie darauf, dass Ihre Hosts den TCP-Port 6556 benötigen, um mit dem Checkmk-Server zu kommunizieren. Viel Spaß und viel Erfolg mit Checkmk. Über eine Spende würden Sich meine Zwillinge, meine Frau und ich sehr freuen!

© Carsten Rieger IT-Services