Howto: monit unter Debian Etch

Posted on the April 12th, 2007 under allgemein by matthias

monit1.pngSoftware kann Fehler haben und bedingt durch diese Fehler abstürzen. Wenn der Absturz schnell bemerkt wird und das Programm neu gestartet werden kann, ist dies nicht unbedingt ein großes Problem.

Was aber, wenn der Programmabsturz mitten in der Nacht geschieht und dadurch ein wichtiger Dienst mehrere Stunden nicht verfügbar ist? Hier kommt monit ins Spiel.

monit ist der beste Freund jedes Linux Administrators. Neben der reinen Überwachung von Diensten und Prozessen können selbige auch bei Bedarf neu gestartet werden. Zur reinen Überwachung von Serverdiensten benutze ich Nagios – das wohl mächtigste Open Source Tool im Monitoringsektor. monit ergänzt sich ganz fabelhaft mit Nagios – erkennt monit die Nichterreichbarkeit oder das Nichtvorhandensein eines Dämons, so wird dieser umgehend neu gestartet.

Zur Installation unter Debian Etch (und auch unter Ubuntu) reicht ein einfaches

[sourcecode language="css"]aptitude install monit[/sourcecode]

Danach findet sich die Hauptkonfigurationsdatei unter /etc/monit/monitrc. Am Anfang werden globale Einstellungen definiert.

[sourcecode language="css"]# Check alle 60 Sekunden durchführen
set daemon 60

# Speicherort des monit Logfiles
set logfile /var/log/monit

# Angabe des Mailservers – mehrere Mailserver mit Komma getrennt angeben
set mailserver 11.11.11.12, 11.11.12.12

# Absenderadresse von Benachrichtungsmails
set mail-format { from: myhost@domain.org }

# Emailadresse, die bei jedem Fehler benachrichtigt wird
set alert admin@domain.org

# Emailadresse, die nur im Notfall benachrichtigt wird
set alert smsalert@smsgateway.de only on { timeout }[/sourcecode]

Im Anschluss können einzelne Services definiert werden, die überwacht werden sollen. Zusätzlich kann angegeben werden, was wann ausgeführt werden soll. Am Beispiel des OpenSSH Servers soll die Syntax hier erläutert werden.

[sourcecode language="css"]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[/sourcecode]

Mit check process sshd wird der Prozessname angegeben, der überwacht werden soll. Dieser legt sein PID-File unter /var/run/sshd.pid ab. Unter start und stop program definiert man den Befehl, der zum Dienststart bzw. -stop ausgeführt werden soll.

In der nächsten Zeile folgt der Test, der im angegebenen Intervall von 60 Sekunden durchgeführt werden soll. In diesem Fall wird Port 22 auf localhost darafhin geprüft, ob dort ein SSH Server läuft. Gibt es entweder keine Antwort auf dem Port oder läuft der Prozess sshd mit dem angegebenen PID-File nicht, so versucht monit den Dienst neu zu starten.

Die letzte Zeile definiert den Zeitpunkt, zu dem der Dienst den Status timeout erreicht und eine Email an die Notfalladresse gesandt wird. In dem angeführten Beispiel geschieht diese Panic Action, wenn fünfmal hintereinander erfolglos versucht wurde, den Dienst neu zu starten.

Ein weiteres Beispiel für die Überwachung von Posfix:

[sourcecode language="css"]check process postfix with pidfile "/var/spool/postfix/pid/master.pid"
start program = "/etc/init.d/postfix start"
stop program = "/etc/init.d/postfix stop"
if failed host 12.12.13.12 port 25 protocol smtp then restart
if 5 restarts within 5 cycles then timeout[/sourcecode]

Abschließend muss nur noch die Variable startup in /etc/default/monit von 0 auf 1 gesetzt werden. Nun kann man mit /etc/init.d/monit start den Daemon Prozess starten und sich zurücklehnen.

Mit diesem einfachen Programm lässt sich sehr einfach eine Überwachung für einen Host aufbauen. In Kombination mit zentralisierten Überwachungslösungen wie Nagios, lässt es sich als Admin weitaus besser schlafen ;)

Links:
monit Homepage
monit Anwendungsbeispiele
Nagios Homepage

|

8 Responses to 'Howto: monit unter Debian Etch'

  1. 22. July 2007 at 10:14
    Joachim Sturm
  2. 22. July 2007 at 10:24
    matthias
  3. 13. October 2008 at 03:45
    Florian
  4. 22. March 2009 at 20:36
    Timbob
  5. 23. March 2009 at 17:11
    matthias
  6. 23. March 2009 at 22:09
    Timbob
  7. 23. March 2009 at 22:34
    Timbob

Leave a Reply




XHTML::
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>