Monit
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Monit 🇬🇧 ist ein rasch eingerichtetes, einfach zu bedienendes aber effektives Programm zur Überwachung von Serverdiensten. Es kann auch wichtige Basisdaten wie CPU-Nutzung, Festplattenbelegung und mehr einbeziehen. Falls ein Serverdienst ausfällt, kann er automatisch neu gestartet werden. Bei Problemen werden ein oder mehrere Empfänger per E-Mail informiert. Zusätzlich gibt es eine übersichtliche Status-Webseite.
Ursprünglich für einen einzelnen Server gedacht, gibt es mit M/Monit 🇬🇧 auch eine kommerzielle Variante, die mehrere Server gleichzeitig (unter einer Oberfläche) überwachen kann.
Installation¶
Folgendes Paket muss installiert [1] werden:
monit (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install monit
Oder mit apturl installieren, Link: apt://monit
Allgemeine Konfiguration¶
Das Programm wird mittels der Datei /etc/monit/monitrc konfiguriert. Dort gibt es zahlreiche teils auskommentierte Beispieleinstellungen, die selbsterklärend sind oder deren Kommentare Hilfetexte enthalten. Es wird empfohlen, eigene Einstellungen nicht direkt in dieser Datei vorzunehmen. Besser ist es, im Verzeichnis /etc/monit/conf.d/ eine oder mehrere Dateien mit den Wunscheinstellungen zu erstellen.
Prüfen und laden¶
Mit folgendem Befehl [3] werden die Konfigurationsdateien auf Fehler überprüft:
sudo monit -t
Sind keine Fehler enthalten, erhält man folgende Rückmeldung:
Control file syntax OK
Damit die neuen Einstellungen greifen, muss Monit diese neu laden, was wie folgt ausgelöst werden kann:
sudo monit reload
Möglich ist dies natürlich auch mittels systemctl:
sudo service monit reload
Zu überwachende Dienste einrichten¶
Im Verzeichnis /etc/monit/conf-available/ gibt es mehrere vorgefertigte Dateien für verschiedene, gebräuchliche Serverdienste, deren Voreinstellungen in der Regel so übernommen werden können. Damit Monit die Einstellungen für einen gewünschten Dienst übernimmt, muss im Verzeichnis /etc/monit/conf-enabled/ ein Softlink zur zu aktivierenden Dienste-Datei erstellt werden, im Terminal [3] wie folgt:
sudo ln -s /etc/monit/conf-available/GEWÜNSCHTE-DATEI /etc/monit/conf-enabled/
Zum Beispiel für Apache:
sudo ln -s /etc/monit/conf-available/apache2 /etc/monit/conf-enabled/
Damit die Änderungen greifen, muss der Monit-Dämon neu geladen werden.
Bei Systemstart automatisch starten¶
Bei einer Standardinstallation wird Monit so eingerichtet, dass der Monit-Dämon automatisch bei jedem Systemstart gestartet wird.
Sollte Monit beim Systemstart wider Erwarten nicht gestartet worden sein, so muss in der Datei /etc/default/monit der Eintrag
START=yes
vorgenommen werden. [2]
Ob Monit gerade läuft, lässt sich so überprüfen:
sudo service monit status
Monit selbst wird wie jeder andere Dienst verwaltet.
E-Mail Benachrichtigungen¶
Mit folgender Grundeinstellung wird die E-Mail-Benachrichtigung aktiviert:
set alert EMPFÄNGER-E-MAIL@ADRESSE
Externen SMTP-Dienst nutzen¶
Es ist nicht notwendig, dass ein Mailserver auf dem System, auf dem Monit läuft, eingerichtet ist. Dies würde womöglich ohnehin problematisch sein, da fast alle E-Mail-Provider die Annahme von Nachrichten nicht vertrauenswürdiger Absender blockieren um Spam-Mails abzuwehren.
Der Versand durch eine beliebiges E-Mail-Konto, das SMTP unterstützt, ist denkbar einfach. Zunächst eine neue Konfigurationsdatei im Verzeichnis /etc/monit/conf.d/ anlegen, zum Beispiel alert:
sudo touch /etc/monit/conf.d/alert
In dieser Datei mit einem beliebigen Editor [2] folgende Einträge vornehmen:
## Mail Benachrichtigungen set alert EMPFÄNGER-MAIL@ADRESSE set mailserver HOSTNAME port PORTANGABE username E-MAIL-KONTO-BENUTZERNAME password "E-MAIL-PASSWORT" using SSL
Es ist jetzt noch notwendig, die Absender-E-Mail-Adresse zu spezifizieren. Diese sollte exakt der E-Mail-Adresse des SMTP-Dienstes entsprechen, denn ansonsten wird der SMTP-Dienst den Versand höchstwahrscheinlich verweigern.
Dazu diesen Eintrag vornehmen:
set mail-format { from: ABSENDER-MAIL@ADRESSE}
Als Beispiel könnte die Konfiguration für eine E-Mail-Konto bei web.de folgendermaßen aussehen:
## Mail Benachrichtigungen set alert EMPFÄNGER-MAIL@ADRESSE set mailserver smtp.web.de port 587 username MEINE-ABSENDER-MAILADRESSE@web.de password "MEIN-E-MAIL-PASSWORT" using SSL set mail-format { from: MEINE-ABSENDER-MAILADRESSE@web.de}
Damit Monit die E-Mail-Benachrichtigung auch umsetzt, Monit neu laden.
E-Mail-Benachrichtigungen testen¶
Durch das Neuladen von Monit selbst kann man den E-Mail-Versand - ohne andere wichtige Dienste wie Apache testweise neu starten zu müssen - überprüfen. Kurz nach dem Neustart sollten mehrere E-Mails eingehen. Falls nicht, gibt das Logfile womöglich Informationen über Fehler.
Status-Webseite¶
Besonders praktisch ist neben der Benachrichtigung per E-Mail, die Möglichkeit, eine HTML-Status-Webseite über einen integrierten Webserver in einem beliebigen Internetbrowser abzurufen. Dieser ist standardmäßig nicht aktiviert. Hierzu im Verzeichnis /etc/monit/conf.d/ wieder eine Datei anlegen, zum Beispiel namens httpd:
sudo touch /etc/monit/conf.d/httpd
Diese Datei dann wie folgt editieren: [2]
## HTTP interface set httpd port 2812 use address localhost #Den Zugriff nur für localhost erlauben allow BENUTZERNANE:SICHERES_PASSWORT #Erlaubt den Zugriff nur mit dieser Authentifizierung
Mit dieser Einstellung ist nun - sofern Monit zuvor neu geladen wurde - die Statusseite über http://localhost:2812
erreichbar, wenn diese Adresse mit dem selben Rechner aufgerufen wird, auf dem Monit läuft.
Achtung!
Das Entfernen der Einstellung use address localhost
, ohne dass der Zugriff auf andere Weise eingeschränkt wird, stellt ein erhebliches Sicherheitsrisiko dar, da Monit und folglich auch das gesamte System sowie das lokale Netzwerk über den Port 2812
möglicherweise für Angreifer aus dem Internet zugänglich sind!
Man kann den Zugang für andere Rechner außer localhost freigeben, aber gleichzeitig strikt auf bestimmte IP-Adressen beschränken. Dazu den Eintrag use address localhost
in der Datei /etc/monit/conf.d/httpd entfernen und eine Whitelist mit den zulässigen IP-Adressen anlegen. Ein Beispielkonfiguration sähe dann wie folgt aus:
## HTTP interface set httpd port 2812 allow localhost allow 192.168.178.53 #Mehrere IP sind möglich: allow 192.168.178.54 allow BENUTZERNAME:SICHERES_PASSWORT #Mehrere Benutzer sind möglich: allow BENUTZERNAME_1:SICHERES_PASSWORT_1
Weitere Einstellungsmöglichkeiten für das HTTP-Interface | |
Einstellung | Erläuterung |
with SSL { KONFIGURATION} | Zugang per TLS verschlüsseln. Unerlässlich, wenn das Interface über das Internet erreichbar sein soll. Anleitung 🇬🇧 |
signature disable | Zeigt die Monit-Version nicht mehr an. Kann Angriffe erschweren. |
allow BENUTZERNAME:SICHERES_PASSWORT read-only | Mit read-only kann der Nutzer keine administrativen Einstellungen vornehmen. |
allow [crypt|md5] /PFAD/ZUR/PASSWORTDATEI [BENUTZERNAMEN] | Benutzer in einer externen Datei speichern. Optional: Verschlüsselung und auf bestimmte Benutzernamen beschränken. Syntax: Jeweils ein BENUTZERNANE:SICHERES_PASSWORT Eintrag pro Zeile. |
Problembehebung¶
Debugging Informationen erlangen¶
Gibt es Probleme mit Monit, so gibt die Monit-Logdatei womöglich Aufschluss über die Ursachen. Dazu die Datei /var/log/monit.log, zum Beispiel mit dem Konsolen-Tool lnav, öffnen.
E-Mail Versand funktioniert nicht¶
Ein Logeintrag, der in etwa so aussieht:
Mail: Mailserver Response error -- 530 Must issue a STARTTLS command first
muss nicht zwingend tatsächlich ein TLS-Fehler sein. Meist liegt hier nur ein Tippfehler im Eintrag username
oder password
bei den SMTP-Einstellungen vor.
Links¶
Intern¶
Netzwerk-Monitoring Programmübersicht
Munin - ähnliche Funktionen, etwas komplizierter und mit aufwendigerer grafischen Web-Oberfläche, aber ohne integrierten Webserver
Extern¶
Projektseite 🇬🇧
Wiki 🇬🇧 - FAQ, How-Tos und Konfigurationsbeispiele für verschiedene Dienste