PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wenn Webserver abgestürtzt automatisch neustarten???



Fengel
20.08.04, 15:23
Hallo,
ich habe einen Root Server mit Suse Linux 9.0 und Apache2.
Mein Apache hängt sich ca. alle 2 Tage aus irgendeinem Grund auf. Also man kann ihn nicht mehr erreichen. Nach einem Restart des Apachen geht alles wieder wunderbar.
Ich hatte mri gedacht ich lasse ihn einfahc ejde Nacht um 4 Uhr neustarten. Aber anscheinend hilft das auch nix.

Gibt es eine möglichkeit per Cronjob oder so zu prüfen ob die Seite noch erreichbar ist udn wenn ncith soll der Apache neu gestartet werden?

bzw. hat vielleicht jemand noch ne idee wo ran das liegne kann?

gruß Fengel

Alexiel
20.08.04, 16:27
schau dir halt mal die Logfiles an, die vom httpd und zB das syslog.

ansonsten ist es recht einfach: der Cronjob schaut per "ps -e | grep httpd | wc -l" nach,
wieviele Prozesse es davon gibt. Ist die Zahl 0 (oder kleiner als was weiss ich), dann startest du den neu.

bin etwas aus der Übung, so vielleicht:


#!/bin/sh

Count=`ps -e | grep httpd | wc -l`
if [ $Count -eq 0 ] ; then
/etc/.../httpd2 start
fi

Fengel
20.08.04, 17:24
Hi,
erstmal danke für deine Antwort.
Kann ich das einfach so in ne *.conf Datei schreiben und mit "crontab *.conf" laden oder muss das in eine *.sh Datei?
achja und unter Top steht nur "httpd2-prefork" als prozess also muss ich diesen doch überprüfen oder?

gruß Fengel

bla!zilla
20.08.04, 17:29
Du könntest das über Nagios lösen. Nagios ist ein kleines, sehr feines Netzwerk- und Systemmanagement Tool. Dort könntest du dann den Dienst überwachen lassen, und im Zweifelsfall neustarten lassen (über einen Eventhandler). Dazu könntest du dich dann noch per SMS oder Mail beanchrichtigen lassen.

Nagios (http://www.nagios.org)

Fengel
20.08.04, 18:20
Du könntest das über Nagios lösen. Nagios ist ein kleines, sehr feines Netzwerk- und Systemmanagement Tool. Dort könntest du dann den Dienst überwachen lassen, und im Zweifelsfall neustarten lassen (über einen Eventhandler). Dazu könntest du dich dann noch per SMS oder Mail beanchrichtigen lassen.

Nagios (http://www.nagios.org)

hm in das Programm müsste ich mich erstmal reinarbeiten es müsste doch eine schnellere Lösung geben oder? Es ist nämlich dringend.
Klappt das script oben so oder muss da noch was geändert werden?

Alexiel
20.08.04, 21:57
das script oben in eine Datei reinschreiben, diese ausführbar machen (chmod +x ...)
und dann in die crontab reinschreiben.

Ob es funktioniert kriegst du leicht raus, indem du es mit etwas anderem ausprobierst
und den Prozess mal mit kill abschiesst.

httpd2-prefork wird im grep auch mit httpd inbegriffen, weil das da drinsteckt

Lass den Cron ruhig alle 5min laufen, schadet nix

der Rest klappt so, nur der pfad zum Startscript des httpd muss angepasst werden

Fengel
23.08.04, 18:23
es scheint irgendwie nicht ganz zu funktionieren heute ist auch wieder mein Apache abgeschmiert aber das Script hat das irgendwie net gerafft. Also auch keine Mail mit Fehlermeldung von Cron oder so. Jemand ne idee?

Alexiel
23.08.04, 18:46
mach mal am Ende des Scriptes was wie eine Datei anlegen oder so (touch /tmp/blubb). Ich
selbst hatte schon mal das Prob, dass der Cron zwar ausgeführt wurde, das
Script aber gar nichts gemacht hat.

Zudem würde ich es wie schon gesagt mit nem anderen Prozess durchtesten,
nicht erst warten bis der Apache abschmiert.

r2k
23.08.04, 20:11
Hallo,
ich habe einen Root Server mit Suse Linux 9.0 und Apache2.
Mein Apache hängt sich ca. alle 2 Tage aus irgendeinem Grund auf. Also man kann ihn nicht mehr erreichen. Nach einem Restart des Apachen geht alles wieder wunderbar.
Ich hatte mri gedacht ich lasse ihn einfahc ejde Nacht um 4 Uhr neustarten. Aber anscheinend hilft das auch nix.

Gibt es eine möglichkeit per Cronjob oder so zu prüfen ob die Seite noch erreichbar ist udn wenn ncith soll der Apache neu gestartet werden?

bzw. hat vielleicht jemand noch ne idee wo ran das liegne kann?

gruß Fengel

Schau mal daemontoosl an, die ersetzen den Startskript. Leider kann ich dir bei der Implementaion nicht helfen, da diese seit eh und jeh auf dem Server bei uns sind.

Ich weiss, dass der Supervise Dienste automatisch neu startet wenn sie down sind.

cr.yp.to

marce
24.08.04, 10:06
Heist den "Apache abgestürzt" bei Dir überhaupt, dass kein entsprechender Prozess mehr läuft oder reagiert er einfach nicht mehr? Weil, dann funzt das obige kleine Script nämlich nicht...

am einfachsten ein kleines Script mit curl oder wget auf eine Testseite machen und mit grep auswerten - je nach dem was so drinsteht oder nicht den Indianer neu starten...

[Coding davon überlasse ich mal Dir - so als pädagogische Massnahme, ich habe gerade keine Lust, noch ein Monitoring-Script zu schreiben...]

formtapez
24.08.04, 10:18
Also bevor ich mir ne crash-detection schreibe würde ich mich mal darum kümmern das ein ordentlicher Apache auf die Kiste kommt.
Schonmal selber compiliert ?


MfG
formtapez