Diskussion:Apache/HTTP/Logging
Beschreibung
Log-Dateien sind ein wichtiges Hilfsmittel für Sicherheit, Webdesign beziehungsweise Webentwicklung und sogar für das Marketing
- Apache verfügt über ein äußerst flexibles Verfahren zum Erstellen von Log-Dateien
Die erste Anlaufstelle bei Fehlern und Problemen ist die ErrorLog-Datei
- Wenn Apache sich merkwürdig verhält, sollten Sie das LogLevel herabsetzen und sie genau beobachten
- Besonders bei der Einstellung Debug gibt Apache bereitwillig über jeden Arbeitsschritt Auskunft
- Das ist wertvoll bei der Fehlersuche sowie bei der Modulprogrammierung, sollte aber im Alltagsbetrieb natürlich nicht verwendet werden
Die Nutzer- und Erfolgsanalyse Ihrer Website können Sie mithilfe von Zugriffsstatistiken vornehmen
- Apache macht es Ihnen leicht, genau die Informationen zu sammeln, die Sie benötigen: Die Definition eigener Log-Formate kann zahlreiche Felder enthalten, die weit über das Common Log Format hinausgehen
Die Auswertung der fertigen Log-Dateien können Sie leicht mithilfe eigener Skripte vornehmen; die Perl-Beispiele in diesem Kapitel geben einen ersten Einblick in die verschiedenen Möglichkeiten
- Darüber hinaus gibt es noch zahlreiche vorgefertigte Hilfsmittel: Zum einen wird Apache mit Hilfsmitteln wie rotatelogs oder logresolve geliefert, zum anderen gibt es viele DrittanbieterTools, die besonders die Aufbereitung und Analyse Ihrer Logs erleichtern
- Eine
Auswahl davon finden Sie auf der beiliegenden DVD-ROM
Log-Dateien (logfiles, Protokolldateien) sind für den ernsthaften Betrieb einer Website sehr wichtig: Sie geben sowohl über das Besucherverhalten als auch über Fehler und sogar Angriffsversuche Auskunft
- Apache kann deshalb nicht nur einfache Log-Dateien im klassischen CLF-Format oder im NCSA-Stil erstellen, sondern bietet zahlreiche zusätzliche Möglichkeiten
- In diesem Kapitel werden zunächst die eingebauten Logging-Fähigkeiten und -Tools von Apache 2 vorgestellt; anschließend lernen Sie noch einige selbst gestrickte Perl-Skripte sowie Hilfsprogramme von Drittanbietern kennen
Traditionellerweise werden mindestens zwei Log-Dateien geführt: die FehlerLog-Datei (ErrorLog), in der sämtliche unerwünschten Vorkommnisse dokumentiert werden, und die Zugriffs-Log-Datei (TransferLog oder auch AccessLog), die alle Client-Zugriffe protokolliert
Die TransferLog-Datei besitzt üblicherweise entweder das Common Log Format (CLF) oder das erweiterte Log-Format des NCSA HTTPd (Combined Log Format)
Ein Eintrag im Common Log Format sieht beispielsweise so aus
163.15.41.28 – - [29/Aug/2011:15:35:07 +0200] "GET / HTTP/1.1" 200 2263
Die Bedeutung der einzelnen Bestandteile wurde bereits in Kapitel 2, Funktionsweise von Webservern, erläutert
- Kurz gesagt handelt es sich um die IP-Adresse des Clients, die RFC-1413-Identität des entfernten Users (in aller Regel –, also nicht verfügbar), den Benutzernamen, das Datum und die Uhrzeit, die erste Zeile der HTTP-Anfrage, den HTTP-Statuscode sowie die Anzahl der Bytes im Antwort-Body
Das Combined Log Format enthält noch zwei zusätzliche Felder: den Referer (die URL der zuvor besuchten Seite) sowie den User-Agent (den Namen des ClientProgramms)
- Ein typischer Eintrag hat diese Form
163.15.41.28 – - [29/Aug/2011:15:36:24 +0200] "GET /seite2.html HTTP/ 1.1" 200 2326 "https://www.mynet.de/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 4.0; .NET CLR 1.0.3705)"
In Apache können Sie das Format der Log-Einträge völlig frei definieren
- Sie sind also nicht auf diese beiden Standardformate angewiesen
- Da zahlreiche Auswertungs- und Weiterverarbeitungsprogramme allerdings diese Formate erwarten, lohnt es sich, auf jeden Fall eine TransferLog-Datei in einem dieser Formate zu führen und zusätzlich eine weitere Datei für Ihre Spezialanwendungen anzulegen
Das Format der ErrorLog-Datei entspricht dagegen dem UNIX-Systemstandard syslog: Jede Zeile enthält das Datum, die Dringlichkeit der Meldung (siehe weiter unten bei der Beschreibung der Direktive LogLevel) und eine Beschreibung des Fehlers
- Beispiel
[Mon Aug 29 15:34:57 2011] [error] [client 145.82.41.93] File does not exist: /usr/local/apache2/htdocs/unavail.html
Seit Apache 2.4 existiert allerdings die neue Direktive ErrorLogFormat, mit der genau festgelegt werden kann, welche Informationen im ErrorLog abgelegt werden sollen
- Direktiven und Module
In diesem Abschnitt werden die Logging-Bordmittel des Apache-Webservers vorgestellt
- Die Einstellungen für die ErrorLog-Datei sind aufgrund ihrer besonderen Wichtigkeit im Core definiert
- Die TransferLog-Optionen befinden sich im Modul mod_log_config, weitere im Modul mod_logio
- Recht neue Entwicklungen sind die Module mod_log_forensic für forensische Log-Dateien sowie mod_dumpio zur Protokollierung der gesamten Ein- und Ausgabe des Servers
- Daneben enthält das URL-Umwandlungsmodul mod_rewrite (siehe Kapitel 8, Weiterleitungen und Indizes) seine eigenen Logging-Direktiven, die in Abschnitt 11.1.6, Logging-Direktiven in mod_rewrite, vorgestellt werden
Ein etwas anderes Ziel verfolgt mod_usertrack: Es ermöglicht die Verfolgung einer Client-Session über Cookies
- Auch die Direktiven dieses Moduls werden in einem eigenen Abschnitt, und zwar in Abschnitt 11.1.5, mod_usertrack, behandelt
Logdateien
Konfiguration
Analyse
Log Dateien analysieren