BOINC-Client mit monit überwachen
Inhalt
Einleitung
Mit der Linux-Software monit lässt sich die Aktivität und Verfügbarkeit vom BOINC-Client überwachen. Sollte der Client abstürzen, oder man hat vergessen ihn wieder manuell zu aktivieren, so wird dieser automatisch neu gestartet und optional eine Benachrichtigung per Mail versendet.
Mit monit lassen sich auch andere Prozesse wie SSH, Apache, MySQL udg. überwachen. Weitere Informationen und die Dokumentation sind auf der Webseite von monit zu finden.
Auf einem Debian 8 als Benutzer root (sudo - root) die folgenden Schritte durchführen:
monit installieren
apt-get update apt-get install monit
Automatischen Start von monit aktivieren
nano /etc/default/monit
Die Einstellung START ist auf den Wert yes zu setzen, was im Standard bereits der Fall sein sollte.
START=yes
Verzögerten Start von monit einrichten
nano /etc/monit/monitrc
Am Dateianfang die existierenden Zeilen
set daemon 120 # check services at 2-minute intervals # with start delay 240 # optional: delay the first check by 4-minutes (by
ändern in
set daemon 600 # check services at 10-minute intervals with start delay 300 # optional: delay the first check by 5-minutes (by
Die überwachten Prozesse werden alle 10 Minuten überprüft, die erste Prüfung jedoch um 5 Minuten verzögert.
Eine Konfigurationsdatei für boinc-client erstellen
nano /etc/monit/conf.d/boinc-client
Folgendes in der Datei speichern
check process boinc with pidfile /var/run/boinc.pid start program = "/etc/init.d/boinc-client start" with timeout 60 seconds stop program = "/etc/init.d/boinc-client stop" with timeout 60 seconds if failed host 127.0.0.1 port 31416 type tcp with timeout 20 seconds then restart if 3 restarts within 4 cycles then unmonitor
- Es wird der Prozess boinc (der Prozess hinter dem Daemon boinc-client) mit der dazugehörigen PID-Datei überwacht
- Auf das Ende vom Start- und Stopvorgang des Daemons wird max. 1 Minute gewartet
- Besteht mit einer max. Wartezeit von 20 Sekunden keine Verbindung auf den lokalen TCP-Port 31416, welcher vom BOINC-Client geöffnet wird, so wird der Daemon neu gestartet
- Waren 3 Neustarts des Daemons innerhalb von 4 Überwachungsdurchläufen notwendig, so wird die Überwachung des Daemons deaktiviert
monit starten
/etc/init.d/monit restart
Logdatei von monit
Informationen und Statusmeldungen werden in der Datei
/var/log/monit.log
aufgezeichnet.
Benachrichtigung per Mail
Neben dem automatischen Neustart von Daemons kann monit optional auch über Ereignisse per Mail benachrichtigen.
nano /etc/monit/conf.d/boinc-client
Die bestehende Datei am Dateianfang erweitern.
set mailserver MAILSERVER port PORT username "BENUTZER" password "PASSWORT" using sslauto with timeout 20 seconds set alert ZIELMAIL
- MAILSERVER, PORT: SMTP-Server (z.B. smtp.gmail.com) und Port (z.B. 465)
- BENUTZER, PASSWORT: Anmeldedaten am SMTP-Server
- ZIELMAIL: an diese Adresse werden die Alarmbenachrichtungen versendet (z.B. meinemail@meinprovider.net)
Versendet wird eine Mail mit dem Schlüsselwort alert.
if total cpu < 10% for 2 cycles then alert if 2 restarts within 4 cycles then alert
Test der Konfiguration
Nachdem in der o.g. Lodatei die Ausgabe
Monit start delay set -- pause for 300s
protokolliert wurde, wird der überwachte Daemon boinc-client manuell beendet
/etc/init.d/boinc-client stop
Einige Zeit später meldet monit in der Logdatei
error : 'boinc' process is not running info : 'boinc' trying to restart info : 'boinc' start: /etc/init.d/boinc-client
Die Ausgabe von
ps aux | grep -i boinc
sollte zeigen, dass der BOINC-Client wieder aktiv ist.
Zusätzlich sollte nach 10 Minuten in der Logdatei
info : 'boinc' process is running with pid 4354
ausgegeben werden.
Als weiterer Test wird in der Datei /etc/monit/conf.d/boinc-client der Port 31416 in 31417 geändert und monit aufgefordert die Konfigurationsdateien neu einzulesen
/etc/init.d/monit reload
In der Logdatei wird
error : 'boinc' failed, cannot open a connection to INET[127.0.0.1:31417] via TCP info : 'boinc' trying to restart info : 'boinc' stop: /etc/init.d/boinc-client info : 'boinc' start: /etc/init.d/boinc-client
gemeldet. Zusätzlich erhält man beim Testen der Konfiguration eine Benachrichtigung per Mail.
Den Port wieder auf den korrekten Wert 31416 ändern und ein monit reload durchführen.