Zum Inhalt springen

Einfaches Monitoring mit Typo3

Erstellt am 8. Oktober 2010 · 2 Antworten · letzte Antwort am 15. Oktober 2010

Tags: PHP, Frage

kolki ·

Hallo Leute, mal 'ne Frage:
Gibt es eine Extension bzw. einen entsprechenden Lösungsansatz, mit dessen Hilfe man ein einfaches Monitoring auf andere Webseiten bzw. Webserver bewerkstelligen kann?

Die Anforderung sieht so aus:
Es gibt verschiedene Webserver, auf denen verschiedene Webapplikationen laufen.
Auf einer Typo3-Seite möchte ich im Frontend, innerhalb eines Content-Elements, gern einen Link zur jeweiligen Applikation bereit stellen. Mittels einer Statusmeldung bzw. Grafik (vorstellbar wäre vllt. eine Ampelgrafik) soll der Besucher gleich erkennen, welche Applikation funktionsfähig bzw. erreichbar ist und welche nicht.
Die jeweiligen Status-Aktualisierungen sollen automatisch erfolgen.

kolki ·

OK, als Extension habe ich sowas nicht gefunden. Um einen Webserver zu prüfen habe ich folgendes Grundprinzip verwendet:

$url_status = 'meinserver.de';
$ip = gethostbyname($url_status);
$online = @fsockopen($ip, 80, $errno, $errstr, 4);
                     if (!$online)
                         {
                        $image = "rot.jpg";
               $status ='offline';
                         }
                     else
                         {
                         $image = "gruen.jpg";
                $status ='online';
                         }
                  @fclose($online);

Alles gut und schön. Allerdings hätte ich jetzt gern das Script so erweitert, dass ich auf dem Server eine bestimmte Url checke, also nicht nur den Server 'meinserver.de', sondern beispielsweise 'www.meinserver.de/test/index.php?id=1'.
Kann mir da vielleicht jemand helfen?

kolki ·

Nagut, hab es nun selbst herausgefunden. Hier mein Lösungsansatz:

$url = 'www.meinserver.de/test/index.php?id=1';
  function check_url($url) { 
    $url_parts = parse_url($url); 
    if (!$fp = @fsockopen ($url_parts['host'], isset($url_parts['port']) ? $url_parts['port'] : 80)) 
       return FALSE; 
    $request = 'HEAD '. 
      (isset($url_parts['path']) ? $url_parts['path'] : '/'). 
      (isset($url_parts['query']) ? '?'.$url_parts['query'] : ''). 
      ' HTTP/1.0'." \r \n ". 
      'Host: '.$url_parts['host']."\r \n \r \n "; 
    fputs ($fp, $request); 
    stream_set_timeout($fp, 5); 
    $status = explode(' ', fgets($fp,128 ), 2); 
    fclose($fp); 
    return (isset($status[1]) ? $status[1] : FALSE); 
 }  

if ($status = check_url($url)) //Status 200 OK?
    {
    $image = "gruen.jpg";
    $meldung ='online';
}
else
    {
    $image = "rot.jpg";
    $meldung ='offline';    
}

Sollte noch jemand Hinweise oder Ergänzungen haben - nur zu!