Karl Heinz: Wie Ausfallhäufigkeit Webserver am besten Tracken?

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

--
"Die Deutsche Rechtschreibung ist Freeware, sprich, du kannst sie kostenlos nutzen. Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."

akzeptierte Antworten

  1. Hi,

    sowas hatte ich auch schon: Cronjob angelegt, 1x/Minute einen HEAD-Request abgesetzt und das Ergebnis in eine Datei geschrieben. MfG

  2. 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 ;-)

  3. 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;
    
    1. Starten auf einem Linux-Rechner (am besten ein stromsparender Dauerläufer wie einem Raspi, Banana ...) mit screen DeinSkriptName.sh.

    2. Die Ergebnisse finden sich, wenn nicht von Dir anders konfiguriert, im Standard-Logfile Deines Systems.

    3. Man kann das soweit treiben, dass es als Service läuft, in Datenbanken loggt, mails verschickt und Dir die Schuhe putzt.

    4. Freilich nur unter Linux.

    5. Manuals:

    • man 1 bash,
    • man 1 screen,
    • man 1 logger,
    • `man 1 logrotate,
    • man 1 [syslog, syslog-ng, rsyslog, ...],
    • man 1 wget,
    • man 1 [tail, grep].
    • man 1 test oder man 1 [,

    Das Letzte ist kein Scherz.