PHP - Axels Pimped Apache Server Status

Web GUI zum Lesen, sortieren, filtern des Apache Server Status - auch bei loadbalancten Webseiten

Apache Server status

For information in English see the Docs.

Der Pimped Apache Status ist ein Werkzeug, um aus der "normalen" Apache Status Seite etwas Lesbares, und Durchsuchbares zu machen. Es ist ein Tool für die Live-Ansicht der aktuellen Prozesse des Apache Webservers. Verschiedene Ansichten listen aktive Requests, häufigste Aufrufe, aktivste IP-Adressen, längste Requests u.v.m. in sortierbaren und filterbaren Tabellen auf. So findet man schnell die Ursache aktueller Performance-Engpässe. Das Ganze funktioniert auch bei loadbalancten Webseiten: mehrere Server können zu einer Ansicht zusammengefasst werden. Ein integrierter Updater aktualisiert das Tool im Webbrowser. Ein Must-Have für Sysadmins und Hoster.

phpclasses-org-nominee.png

Aktuell: Mein Tool wurde am 1.8.2015 auf phpclasses.org für den Innovation Award Juli 2015 nominiert.

phpclasses.org

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:

Kleines Quiz:
Wieviele aktive Prozesse gibt es im Bild?

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!

Screenshots

Machen wir uns erstmal ein Bild, wie es aussehen kann. Die nachfolgenden Screenshots zeigen teilw. den Status mehrerer Server vereint (z.B. für eine loadbalancte Webseite).

Wie es funktioniert, folgt weiter unten.

Axels Pimped Apache Server Status

Axels Pimped Apache Server Status sammelt zudem auf Wunsch die Daten mehrerer Server ein und aggregiert diese.
Man kann sich mehrere Konfigurationssets anlegen: Für Frontend-Systeme, Redaktionssysteme, Backendsysteme, ... es lassen sich die Server eines Sets als auch der Apache Server Status eines einzelnen Systems betrachten.


Funktionsweise:

pimped-apachestatus.png


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.
gut 20 gleichzeitig im LAN abgefragte Webserver stellen überhaupt kein Problem dar. Wie weit das Skript nach oben sklaliert, kann ich nicht sagen.

Voraussetzungen

  • zu überwachende Apache-Server
    • haben Apache Version 2
    • haben mod_status installiert
    • Extended Status ist aktiviert
  • Monitoring-Server
    • hat installiert: Apache und PHP 5 (eine Datenbank ist nicht erforderlich)
    • PHP-Module Curl und PHP-Xml (letzteres ist optional für den Export als XML)
    • hat Zugriff auf server-status-Seite aller zu überwachenden Server

Installation

Holen der Dateien:

  • Lade die Zip-Datei von Sourceforge herunter (s. Box auf der Seite rechts oben).
  • Dekomprimiere die Dateien unterhalb eines Webroots. Die Dateien können in einem beliebigen Unterverzeichnis abgelegt werden.

ODER
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

Konfiguration:

  • Ö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.

Anm.:

Auf deutsch ist hier nur ein Schnelleinstieg. Mehr Details zum Tool und dessen Konfiguration finden Sie in der englischen Dokumentation (s. Box rechts oben).