Wie Ausfallhäufigkeit Webserver am besten Tracken?
Karl Heinz
- webserver
Hallo,
bezogen auf einen meiner Kunden habe ich in den letzten Tagen immer wieder feststellen müssen, dass die Webseite nicht erreichbar war. Ich habe dann meistens eine halbe Stunde gewartet und dann den Zugriff erneut gestartet. Das hat dann eigentlich immer funktioniert. Ich habe die Vermutung, dass der Webserver sehr häufige Ausfallzeiten hat. Aus diesem Grund würden ich gerne, bezogen auf einen kompletten Monat, tracken wie häufig der Webserver down ist. Ich frage mich gerade wie ich das am cleversten anstellte? Habt Ihr eine Idee, einen Tipp oder ein Best-Practice für solch ein Tracking zur Hand?
Viele Grüße
Hi,
sowas hatte ich auch schon: Cronjob angelegt, 1x/Minute einen HEAD-Request abgesetzt und das Ergebnis in eine Datei geschrieben. MfG
Schau Dir mal uptimerobot.com an, ist kostenfrei und prüft den Zugriff alle 5 Minuten. Wenn häufiger sein soll, gibt es auch eine Bezahlversion.
Wenn allerdings die Ausfälle so stark sind, dass es schon auffällt, werden die Grafiken, die uptimerobot generiert, schon aussagekräftig genug sein ;-)
Habt Ihr eine Idee, einen Tipp oder ein Best-Practice für solch ein Tracking zur Hand?
Werkzeug reicht nicht. Ideen muss haben.
#!/bin/bash
### Configuration: ###
proto="http";
host="www.deinkunde.example.org";
seite="track.txt"; # Möglichst kleine, statische Ressource
logname="WebseitenTracking";
### Config. But if you doubt let this as is: ###
agent='Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0"';
testname='google-public-dns-a.google.com';
### Program: ###
cd /tmp;
url="${proto}://${host}/${seite}";
while [ 1 = 1 ]; do
testhost=$(nslookup ${testname} 8.8.8.8);
if [ "0" = "${?}" ]; then
logger -t "${logname}" "Namensauflösung/Internetverbindung funktioniert.";
wget --delete-after --user-agent="$agent" ${url};
if [ "0" = "${?}" ]; then
logger -t "${logname}" "Notiz: ${url} erfolgreich abgerufen";
else
logger -t "${logname}" "Fehler: ${url} konnte trotz bestehender Verbindung nicht abgerufen werden.";
nslookup ${host} | logger -t "${logname}";
ping -c1 ${host} | logger -t "${logname}";
fi
else
logger -t "${logname}" "Fehler: Namensauflösung/Internetverbindung funktioniert nicht.";
fi
sleep 30;
done;
Starten auf einem Linux-Rechner (am besten ein stromsparender Dauerläufer wie einem Raspi, Banana ...) mit screen DeinSkriptName.sh
.
Die Ergebnisse finden sich, wenn nicht von Dir anders konfiguriert, im Standard-Logfile Deines Systems.
Man kann das soweit treiben, dass es als Service läuft, in Datenbanken loggt, mails verschickt und Dir die Schuhe putzt.
Freilich nur unter Linux.
Manuals:
man 1 bash
,man 1 screen
,man 1 logger
,man 1
[syslog
, syslog-ng
, rsyslog
, ...],man 1 wget
,man 1
[tail
, grep
].man 1 test
oder man 1 [
,Das Letzte ist kein Scherz.