In unregelmäßigen Abständen innerhalb der letzten drei Monaten hat sich mein Apache2 Webserver einfach abgeschaltet. Es ist in etwa ein Mal im Monat vorgekommen. Natürlich immer dann, wenn ich gerade nicht vor Ort war und den Fehler direkt beheben konnte. Anhand der Log-Dateien konnte ich auch nichts auffälliges feststellen und eine tiefergehende Fehlersuche angehen. Daher habe ich nicht die Ursache, sondern das Symptom bekämpft. Ich habe mit einer Zeile Code einen simplen, aber effektiven Watchdog für den Webserver gebaut. So geht’s auf einem Ubuntu Linux-System:
if ! pgrep apache2 -c >/dev/null; then service apache2 start; fi
Diese Zeile macht eigentlich nichts anderes als herauszufinden, ob ein apache2 Webserver auf dem Linux-System läuft pgrep apache2 -c
. Falls nicht if ! ...; then ... ; fi
wird einfach mit service apache2 start
der Webserver wieder gestartet.
Um das zu automatisieren editiert man als superuser mit sudo crontab -e
die Superuser Cron-Tabelle. Bitte achtet darauf, dass ihr in der Cron-Tabelle den komplette Pfad zu den genutzen Programmen pgrep
und service
angebt, sonst klappt es nicht. Der Watchdog wird nach dem Speichern einmal pro Minute ausgeführt, längere Zeitintervalle sind natürlich möglich:
* * * * * if ! /usr/bin/pgrep apache2 -c >/dev/null; then /usr/sbin/service apache2 start; fi >/dev/null 2>&1
Kontrollieren ob der cronjob richtig läuft kann man mit cat /var/log/syslog
. Diesen simplen Watchdog kann man prinzipiell auch mit allen anderen Diensten nutzen. Im schlimmsten Fall seid ihr in dieser Konfiguration 59 Sekunden „offline“. Das Vorgehen funktioniert natürlich nicht, wenn der Dienst aufgrund einer Fehlkonfiguration unmittelbar nach dem Start abstürzt. Wenn es aber nur sporadisch mal nicht funktioniert, ist diese Lösung schnell umgesetzt und effektiv.
3 comments on “Einfacher Apache-Webserver Watchdog”