Mit Monit Serverdienste überwachen und bei Problemen neustarten

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.

monit-uebersicht

monit-process-status

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





88x31_CC_by
Dieser Artikel ist lizensiert unter einer Creative Commons Namensnennung 4.0 International Lizenz.

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.