Howto: monit unter Debian Etch
Software 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



Joachim Sturm
Und wie wird monit dann aufgerufen bzw. angzeigt?
http://localhost/?
Achim
matthias
Es gibt mehrere Möglichkeiten, sich über den Status von monit zu informieren.
1. Per Email
2. Per Logfile
3. Per Weboberfläche
Die Weboberfläche aktiviert man in der Config wie folgt:
set httpd port 2812 and use address localhost
allow admin:monit
In diesem Fall erreicht man die Oberläche unter http://localhost:2812 mit Benutzer admin und PW monit.
Florian
Kam grad über google. Werd mir Monit wohl echt mal auf meinem vServer installieren.
Timbob
Ein Nachtrag:
sendmail error 554 – relay access denied for …
laut monit-log
Ich nutze Confixx, Postfix und SSLauth (Alles Standard). Emailversand geht mit jedem Programm, auch direkt von der Konsole. Nur Monit bringt einen Fehler.
Ein Vorschlag?
matthias
Ich würde mal die maillog genauer untersuchen. Anscheinend wird über einen Mailserver versendet, der das Versenden von dir aus nicht erlaubt oder du nutzt einen nicht erlaubten Absender/Empfänger für den angegebenen Mailhost. Das sollte alles in der Log stehen.
BTW: Confixx würde ich nicht nutzen:
a) hast du somit NULL Lerneffekt und b) “verschlimmbessern” solche automatischen Tools gerne die Config-Dateien.
Timbob
Monit: Der Postfix 554 ist schon klar, weil SMTP Authentifizierung verlangt, aber wieso will Monit eine Email den über SMTP versenden und meldet sich nicht als User an? Werde mir Postfix wohl zur Brust nehmen müssen
Confixx: Ich stimme Dir grundsätzlich zu, aber nach vielen Jahren habe ich genügend Erfahrungen und ich weiß im Großen und Ganzen was Confixx treibt. Noch dazu habe ich Gäste auf dem Server, die komfortabel arbeiten können sollen.
Timbob
Übrigens ein Änderung der mail.cf hat geholfen:
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_unauth_destination
Gruß Tim