Serverüberwachung per wget?

aargau

Erfahrenes Mitglied
Ich habe mehrere Linux Server im Netz und möchte diese nun gegenseitig überwachen. Zum einen ist mir da Monit ins Auge gestochen, jedoch scheint mir dies nicht ganz genau so zu Funktionieren wie ich es möchte. Da es nur um Webserver geht, hatte ich die idee das ganze per wget zu gestallten heisst sobald ein anderer Server die index Datei vom jeweiligen Server nicht mehr Herunterladen kann, soll ein Programm gestartet werden. Das müsste ja per if... gehen. Da ich allerdings keine Ahnung habe wie das aussehen müsste wäre ich froh wenn mir jemand helfen könnte.

wget gibt mir dies Zurück, ich denke also das man die Rückgabe von wget durchsuchen müsste und wenn ein Wort davon vorkommt das Programm Starten.

" wget http://blablablablabla.gibtsnicht
--2010-01-07 17:26:33-- http://blablablablabla.gibtsnicht/
Resolving http://blablablablabla.gibtsnicht... failed: Name or service not known.
wget: unable to resolve host address `http://blablablablabla.gibtsnicht'"

Vielen Dank schon jetzt
 
Habe nun mal was gebastelt und bin hier stehen geblieben:

Code:
#!/bin/bash
cd /srv/monitoring/srv1/
wget dieadresse
#Server2 ONLINE?
FILE=/srv/monitoring/srv2/index.html
if [ -f $FILE ];
then
echo "Server On"
rm /srv/monitoring/srv2/index.html
else
sendsms ... "*** PORT80 ist auf SERVER1 nicht erreichbar!*** Bitte Kontrollieren!"
date > /srv/monitoring/srv2/index.html
fi

Somit wird per wget die index.html heruntergeladen wenn der Server Online ist und kein SMS versendet. Wenn nun allerdings das File nicht exisitert -> Offline wird ein SMS gesendet und das index.html file erstellt, damit ich nicht alle X Minuten ein SMS kriege (nervig und Teuer). Allerdings habe ich nun das Problem das ich das File wenn der Server Online ist wieder Löschen muss um zu vergleichen ob das file beim nächsten mal wieder geladen werden konnte... Da aber somit immer noch jedes 2. Mal ein SMS versendet wird nicht ganz optimal. Hat jemand eine idee wie ich dieses Problem Lösen kann?
 
Hiho,

ich versteh dein Skript nicht ganz, weil du wohl
irgendwelche lokalen Dateien zu benutzen scheinst - sinn ist doch
die Remote-Dateien zu prüfen? Wie auch immer, meine Lösung würde so aussehen:

Bash:
#!/bin/bash
HOST="linux23.domain.tld";
nc -z $HOST 80 ||  { 
  echo "niemand zuhause auf 80";
  sendsms "linux23:80 offline";
}

oder falls PhP geprüft werden soll, solltest du eine php-datei z.b "check.php" anlegen, die einfach folgenden Inhalt hat.
PHP:
<?php
print "ok";
?>
und dann auf einem anderen Server:
Bash:
#!/bin/bash
RES=`wget -qO- http://linux23.domain.tld/check.php`;
[ "$RES" != "ok" ] && {
    echo "PHP hat urlaub ...";
   sendsms "linux23:80 apache or php down";
};

Grüße,
MArc
 
Danke für deine Hilfe, mag sein das mein obiges Script nicht gut ist, wie gesagt habe eigentlich keine Ahnung von den script befehlern bei Linux.

Deine Variante gefällt mir gut, da gibt es jedoch immer noch das Problem das so jedes mal wenn ich das Script ausführe, was ca all 10minuten sein wird ein SMS bekomme wenn der Server down ist. Dies ist relativ doof wenn ich nicht an den Server kann weil ich in einem meeting oder so bin.
Man müsste also ev. noch eine Textdatei anlegen das das sms schon gesendet wurde und dann so lange bis der Server wieder online ist nichts mehr zu unternehmen. z.B. so das die Textdatei dann gelöscht wird wenn der Server wieder erreichbar ist.
 
Oh, sorry, ich wollte dich dadurch nicht persönlich angreifen,
sondern lediglich sagen, dass ich das anders lösen würde :)

Um deine erwähnte konstellation in das Skript einzubauen, musst
du dir folgende dinge bewusst sein:
- Wie lege ich Dateien in bash an
- wie prüfe ich ob eine datei angelegt ist
und zu guter letzt:
- Was tue ich, damit die obige Datei gelöscht wird, wenn mein server neugestartet wird.

Zum letzten punkt musst man wissen, wie du den Server neustartest. Falls
du es über ssh tust, kannst du ja ein kleines skript im root anlegen, dass dir
die zwei arbeiten (monitoring-datei von oben löscht und apache neustartet) abnimmt.

Offtopic: Was tust du denn, dass Apache(php) immer abstürzt? Falls das öfters vorkommt
(mehr als einmal in 2-3 Monaten) solltest Du diese Problematik wohl zuerst lösen.

MArc
 
Oh, sorry, ich wollte dich dadurch nicht persönlich angreifen,
sondern lediglich sagen, dass ich das anders lösen würde :)

Keine Angst, ich fühlte mich sicher nicht angegriffen ^^ Ich bin eher froh das du mir diese beispiele gegeben hast.
Ich werde mich wohl mal etwas ein arbeiten und schauen was daraus wird.

Die Server fallen eigentlich nie aus, der eine ist jetzt gut ein Jahr ohne restart geloffen, aber dennoch möchte ich mich hald absichern um den ausfall so tief wie möglich zu halten falls doch mal was passiert. Momentan wäre das ganze auch noch nicht schlimm aber es kommen jetzt dann neue Projekte auf den Server.

Nachmals Danke für die Hilfe!
 
Zurück