Ich streame mir mit Subsonic Musik von meinem Homeserver auf mein Smartphone. Nun ist es sehr ärgerlich wenn man unterwegs Musik hören möchte, der Subsonicdienst aber nicht zu erreichen ist weil dieser abgestürzt ist. Um dieses Problem in Zukunft zu vermeiden, lasse ich Subsonic und andere Dienste nun von Monit überwachen und ggf. neustarten.
Monit ist ein Programm zur Überwachung von Serverdiensten. Wenn bestimmte definierte Situationen eintreten, z.B. dass ein Dienst auf einem bestimmten Port nicht erreichbar ist, kann Monit diesen Dienst neustarten und den User oder Administrator per Email informieren. Ausserdem bringt Monit einen eigenen Webserver und eine Statusseite mit, auf der der Zustand der überwachten Dienste dargestellt wird.
Monit installieren:
Unter Ubuntu kann Monit einfach aus den Paketquellen installiert werden mit
$ sudo apt-get install monit
Monit als Dienst starten
Damit Monit beim Systemstart als Dienst ausgeführt wird stellen wir sicher dass in der /etc/default/monit hinter START ein „yes“ steht
$ sudo nano /etc/default/monit
# /etc/default/monit # Defaults for monit initscript. This file is sourced by # /bin/sh from /etc/init.d/monit. # Set START to yes to start the monit START=yes # Options to pass to monit #MONIT_OPTS=
Grundkonfiguration
Die weitere Konfiguration erfolgt in der Date /etc/monit/monitrc
Zeilen die mit ## anfangen sind Kommentare. Zeilen die mit nur einer Raute # anfangen sind Beispielkonfigurationen. Durch entfernen der Raute wird die Einstellung aktiv.
Am Anfang steht die Einstellung „set daemon 120“. In diesem Fall Überprüft Monit immer nach 120 Sekunden ob die überwachten Dienste funktionieren
## Start Monit in the background (run as a daemon): # set daemon 120 # check services at 2-minute intervals
Hier können noch weitere Einstellungen, wie z.B. Speicherort der Logfiles festgelegt werden.
Emailbenachrichtigung
Monit kann eine Benachrichtigung per Email versenden wenn ein Problem auftritt. Hierzu kann ein lokaler oder externer Mailserver angegeben werden. Ich lasse Email über ein lokal installiertes Postfix versenden. Der folgende Abschnitt setzt installiertes Postfix voraus, welches Emails versenden kann (z.B. wie in Postfix mit Gmail als Smarthost konfigurieren beschrieben)
Zuerst muss Postfix Emails auf Port 25 annimmt, aber nur von lokalen Diensten.
Hierzu darf in der /etc/postfix/master.cf vor der Zeile „smtp“ keine Raute stehen
# ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd
Anschließend binden wir Postfix an die lokale IP Adresse 127.0.0.1. Hierzu fügen wir in die /etc/postfix/main.cf folgende Zeile ein:
inet_interfaces = 127.0.0.1
und starten Postfix neu mit
sudo service postfix restart
Die weitere Konfiguration erfolgt wieder in der /etc/monit/monitrc
Hier ändern wir folgende Zeilen:
set mailserver 127.0.0.1 set mail-format { from: absender@example.com } set alert empfänger@example.com
Nun kann Monit Statusmeldungen per Email versenden die standardmäßig folgendermaßen aussehen:
Does not exist Service subsonic Date: Sun, 30 Aug 2015 09:30:53 Action: restart Host: saturn.fritz.box Description: process is not running Your faithful employee, Monit
Monit Webserver konfigurieren
Monit bringt einen eigenen Webserver mit, der auf einer einfachen Seite den Status der Überwachten Dienste anzeigt. Die Dienste können hier auch von Hand neu gestartet werden.
Um den Webserver zu aktivieren entfernen wir die Raute vor der Zeile
set httpd port 2812 and
Die Portnummer kann hier geändert werden. Außerdem wird die Raute vor der Zeile
allow admin:monit
entfernt. Admin ist hier der Username und monit das Password mit dem man sich auf der Statusseite einloggt. Beides kann hier ebenfalls geändert werden. Nach einem Neustart von Monit mit
sudo service monit restart
kann die Statusseite über http://IPADRESSE:2812 bzw. wenn das System auf dem Monit installiert wurde eine grafische Benutzeroberfläche hat kann die Seite auch lokal aufgerufen werden mit http://127.0.0.1:2812. Der Webserver liefert die Seiten standardmäßig nur unverschlüsselt aus. Da der Dienst in meinem Fall nur innerhalb meines Heimnetzes erreichbar ist kann dies akzeptiert werden. Wenn der Dienst jedoch über das Internet erreichbar ist sollte die Seite unbedingt verschlüsselt werden. Eine Anleitung zum aktivieren von SSL in Monit zeigt der Artikel Enable SSL In Monit im Monit Wiki.
zu überwachende Dienste konfigurieren
Die /etc/monit/monitrc enthält schon einige Beispiele z.B. für Apache die nur aktiviert werden müssen indem die Raute vor den entsprechenden Zeilen entfernt wird. Weitere Hilfe zum Konfigurieren von eigenen Diensten findet man u.A. in der Manpage von Monit mit
man monit
Ich lasse von Monit SSH und Subsonic überwachen. Zur Überwachung von SSH muss man folgende Zeilen in die /etc/monit/monitrc einfügen:
check process sshd with pidfile /var/run/sshd.pid start program "/etc/init.d/ssh start" stop program "/etc/init.d/ssh stop" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout
Die erste Zeile gibt das PID file des Dienstes an. Dieses File wird vom SSH Dienst angelegt wenn dieser gestartet wird. Wenn das File also exisitert läuft der Dienst. Andernfalls muss Monit den Dienst starten. Die Zeilen 2 und 3 sind die Befehle zum starten und stoppen des Dienstet. Zeile 4 überprüft ausserdem ob der SSH Dienst auf Port 22 erreichbar ist. Wenn die nicht der Fall ist wird der Dienst ebenfalls neu gestartet. Zeile 5 legt fest dass wenn Monit in 5 Zyklen den Dienst 5 Mal versucht hat neu zu starten ein timeout eintritt. Der Dienst wird dann nicht mehr überwacht und eine Warnung per Email verschickt. Dann ist ein manuelles eingreifen erforderlich.
Die Konfiguration für Subsonic sieht ähnlich aus:
## Monitoring Subsonic Service check process subsonic with pidfile /var/run/subsonic.pid start program = "/etc/init.d/subsonic start" stop program = "/etc/init.d/subsonic stop" if failed host 127.0.0.1 port 4443 then restart if 5 restarts within 5 cycles then timeout
Um die neuen Einstellungen zu aktivieren muss Monit noch neu gestartet werden.
sudo service monit restart
1 Comment
funktioniert bei YaCy leider nicht – und eine reine Überwachung ist nicht das „Gelbe vom Ei“.