PHP - Axels Pimped Apachestatus
ApachestatusAxels Pimped Apachestatus
Voraussetzungen
Installation
Apachestatus
Die Status Seite des Apache Webservers gibt Aufschluss über Dinge, die gerade passieren. Leider ist sie optisch wenig ansprechend und die richtigen Informationen herauszuziehen ist ... - sagen wir: "eine Herausforderung".Beispiel:
Es ist genau einer. Relevant hierbei ist die Spalte unter "M" - der Status "_" zeigt beendete Requests, deren Slot wartet auf eine neue Anfrage.
Noch weit schwieriger wird es, wenn man eine Webseite mit mehreren Servern hinter einem Loadbalancer hat. Wenn man dann wissen will, warum die Webseite bei jedem 5. Request langsam ist und welcher Webserver dafür verantwortlich war oder woher von welchen Request der viele Datenbanktraffic kommt, dann wir es extrem mühsam. Man müsste sich durch die einzelnen Apachestatus-Seiten mehrerer Server kämpfen. Das macht definitiv keinen Spass!
Seitenanfang
Axels Pimped Apachestatus
Der Apache Status ist eine Ausgabe als HTML. Und lässt sich somit parsen und in ein Array verpacken, dass man nach verschiedenen Kriterien filtern und sortieren kann.Die Ausgabe des Arrays erfolgt auf verschiedene Art und Weise:
- Es gibt mehrere Einzelansichten mit je einer Tabelle: Aktive Apache-Worker, Serverinformationen, nur aktive Prozesse, langsamste Requests uvm.
- Requests werden entsprechend ihrem Status eingefärbt (z.B.: aktive Prozesse sind grün, inaktive grau).
- Bei jedem Request gibt es eine Kommentarspalte, der die Bedeutung des Status des Slots erklärt.
- Alle Tabellen haben einen Suchfilter. Requests lassen sich so über alle Webserver hinweg suchen.
- Alle Tabellen sind nach jeder Spalte sortierbar.
Man kann sich mehrere Konfigurationssets anlegen: Für Frontend-Systeme, Redaktionssysteme, Backendsysteme, ... es lassen sich die Server eines Sets wie gesagt gruppieren als auch der Apachestatus eines einzelnen Systems betrachten.
Sceenshots:
Funktionsweise:
Zur Performance:
Mein Skript startet alle Abfragen des Apache-Status zu allen Systemen gleichzeitig. Die Performance der Abfrage hängt somit nur vom langsamsten Response aller Systeme ab.
8 gleichzeitig im LAN abgefragte Webserver stellen überhaupt kein Problem dar. Wie weit das Skript nach oben sklaliert, kann ich nicht sagen.
Seitenanfang
Voraussetzungen
- zu überwachende Apache-Server
- haben Apache Version 2
- haben mod_status installiert
- Monitoring-Server
- hat installiert: Apache und PHP 5 (eine Datenbank ist nicht erforderlich)
- hat Zugriff auf server-status-Seite aller zu überwachenden Server
Seitenanfang
Installation
Holen der Dateien:- Lade die Zip-Datei von Sourceforge herunter.
- Dekomprimiere die Dateien unterhalb eines Webroots. Die Dateien können in einem beliebigen Unterverzeichnis abgelegt werden.
Mit einem Svn-Client das Repository auschecken. Diese Variante macht es einfacher, die Dateien für den Pimped Apache-Status aktuell zu halten.
- Gehe ins Webroot
cd [Webroot-Verzeichnis]
- Checkout des trunks
Dieses Kommando legt das Unterverzeichnis "apachestatus" an und holt die aktuelle Version:
svn checkout http://svn.code.sf.net/p/pimpapachestat/code/trunk apachestatus
- Öffne http://Rechnername/Pfad mit Apachestatus-Skript/ - z.B. http://localhost/apachestatus/ in deinem Webbrowser.
Beim ersten Aufruf wird im Unterverzeichnis ./config/ eine Kopie der config_user_default.php als Benutzer-Konfiguration config_user.php angelegt. -
Bearbeite die ./config/config_user.php und konfiguriere darin die Systeme,
die du überwachen möchtest.
Schau in die ./config/config_default.php, welche Variablen du sonst noch übersteuern könntest. - Erlaube deinem Server, die server-status Seite der Systeme
abzurufen, die du überwachen möchtest.
Auf jedem der zu überwachenden Apache Server ist in der Apache Konfiguration der Zugriff anhand der IP Adresse zu erlauben:<Location /server-status> SetHandler server-status order deny, allow allow from 127.0.0.1 allow from 192.168.123.4 # IP des monitorenden Systems deny from all </Location>Nach Änderung der Apache-Konfiguration ist ein Reload/ Restart des Apache notwendig, um die Konfiguration auf dem Server anzuwenden.
Seitenanfang




