Wie konfiguriere und verwende ich den server-status unter Apache?
Was ist der server-status?
Das ist eine von Apache automatisch generierte Seite, die Ihnen den Zustand von Apache zu einem bestimmten Zeitpunkt anzeigt. Damit können Sie die Apache "slots" im Speicher sehen, die von diesem durchgeführten Requests, die zur Ausführung nötige Zeit, die CPU-Auslastung... Das ist zum Beispiel sehr praktisch um das "leechen" (komplettes Downloaden der Webseite inklusive aller Inhalte) der Webseite oder ein Skript auf dem Server das zu viele Ressourcen verbraucht zu identifizieren.
Wie konfiguriere ich den server-status?
2 Anwendungsfälle sind möglich:
- Sie haben einen dedizierten Server bei OVH und Apache ist bereits für server-status vorbereitet (es wurde bei dieser Gelegenheit in ovh-status umbenannt)
- Sie haben einen Cobalt Server oder ein System, das nicht vom OVH-System eingespielt wurde (Debian, FreeBSD...)
OVH Server:
Der server-status ist bereits konfiguriert und umbenannt in ovh-status in
/usr/local/apache/conf/httpd.conf
Er ist allerdings auf Ihr netzwerk beschränkt: proxy.ovh.net
Die Konfiguration ähnelt dieser:
Set Handler server-status
Order deny,allow
Deny from all
Allow from proxy.ovh.net
Es genügt dann, eine Zeile
Allow from ihre_IP einzufügen oder, wenn Sie keine feste IP haben
Allow from all :
Set Handler server-status
Order deny,allow
Deny from all
Allow from 81.52.48.XX
Allow from 127.0.0.1
In diesem Beispiel können sich 81.52.48.XX und der Server selbst (127.0.0.1) mit server-status verbinden.
Starten Sie anschliessend Apache neu:
/etc/init.d/httpd restart
Nun haben Sie Zugang zu folgender URL:
http://ip_der_maschine/ovh-status
Cobalt Server und andere nicht-OVH-installierte Server:
Überprüfen Sie daß der Parameter
Extended Status in der Konfigurationsdatei von Apache auf "On" steht (/etc/httpd/conf/httpd.conf auf einem Cobalt Server):
Extended Status On. Wenn diese Zeile nicht vorhanden ist, dann fügen Sie sie ein (zum Beispiel in Zeile 173).
Fügen Sie dann den Abschnitt für den "Handler" ein (zum Beispiel in Zeile 339):
Set Handler server-status
Order deny,allow
Deny from all
Allow from 81.52.48.XX
Allow from 127.0.0.1
Wenn Sie das getan haben genügt es, Apache neu zu starten:
/etc/rc.d/init.d/httpd restart
Sie können nun die Informationen hier einsehen:
http://ip_der_maschine/ovh-status
Welche informationen kann ich dort finden?
Unterhalb des Titels der Seite sehen Sie die Signatur des Servers in der Form:
Server Version: Apache/1.3.20 Sun Cobalt (Unix) mod_ssl/2.8.4 OpenSSL/0.9.6 PHP/4.0.6 FrontPage/5.0.2.2510 mod_perl/1.26 Server Built: Feb 13 2003 09:35:05
- Allgemeiner Zustand des Servers:
Dann sehen Sie allgemeine Informationen zum Server, zum Beispiel:
__Current Time: Monday, 06-Oct-2003 15:40:29 CEST
Restart Time: Monday, 06-Oct-2003 15:20:48 CEST
Parent Server Generation: 0
Server uptime: 19 minutes 41 seconds
Total accesses: 758 - Total Traffic: 4.0 MB
CPU Usage: u.79 s.41 cu.14 cs.14 - .125% CPU load
.642 requests/sec - 3595 B/second - 5.5 kB/request
5 requests currently being processed, 20 idle servers__
Hier kann man zum Beispiel erfahren daß:
- der Server eine Uptime von 19minutes hat (und also vor kurzem neu gestartet wurde)
- die CPU wenig belastet ist (weniger als 1%)
- im Schnitt 0.642 web requests pro Sekunde kommen
- der generierte Traffic 3595 byte pro Sekunde beträgt (wenig)
- die durchschnittliche Request 5.5KB beträgt
- zur Zeit 5 requests bearbeitet werden und
- noch 20 slots free für zukünftoge Verbindungen frei sind.
Dann sehen Sie eine Tabelle mit Zeichen, von denen jedes einen slot (oder dessen Zustand) repräsentiert:
_KWK__K_K.......................................
................................................................
................................................................
................................................................
................................................................
Jedes Zeichen steht für einen Zustand des Apache slots:
.: Keine Aktivität (belegt keinen Speicher).
_: Der slot wartet auf eine Verbindung.
S: Der slot wird gerade belegt.
R: Der slot liest den request des Benutzers.
W: Der slot sendet den angefordeten Inhalt / das Ergebnis an den Benutzer (dieser Zustand kann lang anhalten und dadurchden Server behindern, wenn Sie Dateien per HTTP anstatt per FTP zum Download anbieten).
K: Der slot hat seine Arbeit beendet, bleibt jedoch aktiv um schnell antworten zu können, falls vom gleichen Benutzer erneut ein request kommt (KeepAlive).
D: Der slot führt eine DNS-Abfrage durch, um den Host des Benutzers herauszufinden (dies kann störend sein wenn der DNS-Server langsam ist... Dies kann in der config von Apache deaktiviert werden:
Hostname Lookups off).
L: Der slot schreibt gerade in die Logdatei. Wenn dieser Vorgang zu lange dauert oder sich viele slots in diesem Zustand befinden gibt es eventuell Probleme mit den Logs (eine Logdatei grösser als 2 GB zum Beispiel).
G: Dieser Zustand ist selten und kommt nur vor wenn der slot "stirbt" weil er unnötig geworden ist.
- Von den slots durchgeführte Aufgaben:
- Der server-status endet mit einer je nach Anzahl der aktiven slots mehr oder weniger grossen Tabelle.
Sie können dort mehrere Spalten sehen (wir erläutern nur die wichtigsten):
PID: Die System-PID des betroffenen slots (die man zum Beispiel mit
top oder
ps auxww wiederfinden kann).
M: Status (mode) des slots.
CPU: Anzahl der real genutzten Sekunden CPU-Verwendung um die request zu bearbeiten.
SS: Anzahl der Sekunden seit der letzten Aktivität des slots (Inaktivitätszeit).
Req: Anzahl an Millisekunden für die Verarbeitung des letzten requests.
Slot: Anzahl der von diesem slot übertragenen KB (interessant um zu sehen wenn ein Skript sich im Kreis dreht und unnötig MB versendet oder um Downloads vom Webserver aufzuspüren die besser in einem FTP-Bereich aufgehoben wären).
Host: Die IP oder der host des Besuchers.
VHost: Die vom Besucher angeforderte Seite.
Request: Die ausgeführte request (normalerweise:
GET /ornder/datei.php HTTP/1.1 zum Beispiel).