Server-Check mit C#.NET

Mit C# und dem .NET-Framework lässt sich mit wenig Aufwand ein komplettes Tool zum Überwachen von Webservern programmieren. Diese müssen nicht unter Windows laufen, es funktioniert auch mit Apache und Linux.

Wer mehrere Webserver zu administrieren hat, kennt das Problem: Irgendwann bleibt immer einer der Server stehen. Sei es, weil der HTTP-Daemon schlicht und ergreifend keine Anfragen mehr beantwortet, da irgendwelche Logfiles übergelaufen sind oder weil ein anderer Defekt zum Ausfall des benötigten Prozesses oder Rechners geführt hat. Darum muss man die eigenen Server immer im Blick haben - zum Beispiel mit dem Statusprogramm aus diesem Beitrag.

Das im Folgenden entwickelte Beispielprogramm wird mit der .NET-Programmiersprache C# entwickelt. Dabei erfahren Sie nicht nur, wie man mit C# schnell hilfreiche Werkzeuge entwickelt, sondern lernen auch einige der nützlichen .NET-Kontrollelemente kennen. Zudem beschreiben wir, wie Sie Ihre C#-Programme mit Skins ausstatten können.

Das zu entwickelnde Programm soll im Normalfall einfach nur ein Icon in der Task-Leiste anzeigen: Ist das Icon grün, gibt es keine Probleme, wechselt es die Farbe und wird rot, gibt es bei mindestens einem der überprüften Webserver ein Problem. In diesem Fall kann man auf das Icon in der Statuszeile doppelklicken und erhält dann ein Fenster, in dem alle überwachten Server in tabellarischer Form angezeigt sind. Für jeden Server wird dabei der Hostname, die Domain, der Status in Form eines Fehlertextes sowie die Zeit des letzten Tests angezeigt. Außerdem hat jeder Server in der Tabelle nochmals ein Icon, das entweder grün oder rot ist: Server mit rotem Icon haben ein Problem.

Die Statusüberprüfung wird dabei mit Hilfe einer ASP-Seite bei ASP-Servern und mit Hilfe einer PHP-Seite bei PHP-Servern durchgeführt. Damit ein eventuell vorhandenes Caching den Statustest nicht durcheinander bringt, werden diese Seiten jeweils mit einem eindeutigen Parameter aufgerufen - der aktuellen "Tick"-Zahl am lokalen System. Das ASP- oder PHP-Script liest diesen Parameter aus und erhöht den übergebenen Wert um eins. Dieser wird dann zurückgeliefert und vom Programm ServerStatus ausgelesen. Dadurch kann das Programm erkennen, ob der Webserver antwortet oder irgendein Proxy.