Wie man das Apache Webserver Log analysiert und interpretiert
Apache-Webserver können eine Menge Protokolle generieren. Diese Protokolle enthalten Informationen wie die HTTP-Anforderungen, die Apache verarbeitet und beantwortet hat, sowie andere Aktivitäten, die für Apache spezifisch sind. Die Analyse der Protokolle ist ein wichtiger Bestandteil der Verwaltung von Apache und der Sicherstellung, dass es wie erwartet ausgeführt wird.
In diesem Leitfaden gehen wir auf die verschiedenen Protokollierungsoptionen in Apache ein und wie diese Protokolldaten zu interpretieren sind. Sie erfahren, wie Sie die von Apache erstellten Protokolle analysieren und wie Sie die Protokollierungseinstellungen konfigurieren, um die relevantesten Daten darüber zu erhalten, was Apache tut.
In diesem Tutorial lernen Sie:
- Konfigurieren und Verstehen der Apache-Webserver-Protokollierung
- Was sind Apache-Protokollebenen?
- Wie man die Apache-Protokollformatierung und ihre Bedeutung interpretiert
- Was sind die gebräuchlichsten Apache-Protokollkonfigurationsdateien?
- Erweitern der Protokollierungskonfiguration um forensische Daten
Wie man das Apache Webserver Log analysiert und interpretiert
Verwendete Softwareanforderungen und Konventionen
| Kategorie | Anforderungen, Konventionen oder verwendete Softwareversion |
|---|---|
| System | Ubuntu, Debian, CentOS, RHEL, Fedora |
| Software | Apache Webserver |
| Andere | Privilegierter Zugriff auf Ihr Linux-System als root oder über den Befehl sudo. |
Apache-Protokolldateien und ihr Speicherort
Apache erzeugt zwei verschiedene Protokolldateien:
- access.log speichert Informationen über alle eingehenden Verbindungsanfragen an Apache. Jedes Mal, wenn ein Benutzer Ihre Website besucht, wird dies hier protokolliert. Jede Seite, die ein Benutzer anfordert, wird auch als separater Eintrag protokolliert.
- error.log speichert Informationen über Fehler, auf die Apache während des Betriebs stößt. Im Idealfall sollte diese Datei relativ leer bleiben.
Apache-Standardprotokollkonfiguration auf dem Ubuntu Linux-Server
Der Speicherort der Protokolldateien kann davon abhängen, welche Version von Apache Sie ausführen und auf welcher Linux-Distribution sie sich befindet. Apache kann auch so konfiguriert werden, dass diese Dateien an einem anderen nicht standardmäßigen Speicherort gespeichert werden.
Standardmäßig sollten Sie jedoch in der Lage sein, die Zugriffs- und Fehlerprotokolle in einem der folgenden Verzeichnisse zu finden:
- /var/log/apache/
- /var/log/apache2/
- /etc/httpd/logs/
Formatierung des Apache-Protokolls
Apache ermöglicht es Ihnen, anzupassen, welche Informationen protokolliert werden und wie jeder Protokolleintrag dargestellt wird, was wir später in diesem Tutorial behandeln werden.
Das übliche Format, das Apache für die Darstellung von Protokolleinträgen verwendet, ist:
"%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""So ist diese Formatierung zu interpretieren:
- %h – Die IP-Adresse des Clients.
- %l – Dies ist die 'identd' auf dem Client, die zur Identifizierung verwendet wird. Dieses Feld ist in der Regel leer und wird als Bindestrich dargestellt.
- %u – Die Benutzer-ID des Clients, wenn die HTTP-Authentifizierung verwendet wurde. Ist dies nicht der Fall, wird im Protokolleintrag für dieses Feld nichts angezeigt.
- %t – Zeitstempel des Protokolleintrags.
- \%r\ – Die Anforderungszeile vom Client. Hier wird angezeigt, welche HTTP-Methode verwendet wurde (z. B. GET oder POST), welche Datei angefordert wurde und welches HTTP-Protokoll verwendet wurde.
- %>s – Der Statuscode, der an den Client zurückgegeben wurde. Codes von 4xx (z. B. 404, Seite nicht gefunden) weisen auf Clientfehler hin, und Codes von 5xx (z. B. 500, interner Serverfehler) weisen auf Serverfehler hin. Andere Zahlen sollten auf Erfolg (z. B. 200, OK) oder auf etwas anderes wie Umleitung (z. B. 301, dauerhaft verschoben) hinweisen.
- %O – Die Größe der angeforderten Datei (einschließlich Header) in Bytes.
- \"%{Referer}i\" – Der verweisende Link, falls zutreffend. Hier erfahren Sie, wie der Benutzer zu Ihrer Seite navigiert ist (entweder über einen internen oder externen Link).
- \"%{User-Agent}i\" – Enthält Informationen über den Webbrowser und das Betriebssystem des verbindenden Clients.
Ein typischer Eintrag im Zugriffsprotokoll sieht in etwa so aus:
10.10.220.3 - - [17/Dec/2019:23:05:32 -0500] "GET /products/index.php HTTP/1.1" 200 5015 "http://example.com/products/index.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"Das Fehlerprotokoll ist etwas einfacher und einfacher zu interpretieren. So kann ein typischer Eintrag aussehen:
[Mon Dec 16 06:29:16.613789 2019] [php7:error] [pid 2095] [client 10.10.244.61:24145] script '/var/www/html/settings.php' not found or unable to stat
Dies ist eine gute Möglichkeit, um zu sehen, auf wie viele 404-Fehler Ihre Besucher stoßen, und kann Sie auf einige tote Links auf Ihrer Website hinweisen. Noch wichtiger ist, dass es Sie auf fehlende Ressourcen oder potenzielle Serverprobleme aufmerksam machen kann. Das obige Beispiel zeigt eine *.php Seite, die angefordert wurde, aber fehlt.
Konfiguration des Apache-Protokolls
Die Protokollierung von Apache ist hochgradig anpassbar und kann anhand einiger Konfigurationsdateien angepasst werden. Unter Ubuntu und Debian befindet sich hier die Hauptkonfigurationsdatei für die Protokollierung von Apache:
- /etc/apache2/apache2.conf
Da Sie mehrere Websites (die als virtuelle Hosts bezeichnet werden) von einer einzigen Apache-Instanz aus ausführen können, können Sie jede von ihnen auch so konfigurieren, dass sie über separate Zugriffs- und Fehlerprotokolle verfügt. Um zu definieren, wie diese separaten Protokolldateien benannt werden sollen und wo sie gespeichert werden sollen, konfigurieren Sie diese Datei:
- /etc/apache2/sites-available/000-default.conf
Unter CentOS, RHEL und Fedora befinden sich die beiden Konfigurationsdateien an den folgenden Speicherorten:
- /etc/httpd/conf/httpd.conf
- /etc/httpd/conf.d/ (zusätzliche VirtualHost-Konfigurationen in diesem Verzeichnis platzieren)
Log-Direktiven
Es gibt eine ganze Reihe verschiedener Anweisungen, die in diesen Dateien konfiguriert werden können, aber dies sind die wichtigsten, mit denen Sie sich befassen sollten, wenn Sie die Protokollierung von Apache anpassen möchten:
- CustomLog – Definiert, wo die Zugriffsprotokolldatei gespeichert wird.
- ErrorLog – Definiert, wo die Fehlerprotokolldatei gespeichert wird.
- LogLevel – Definiert, wie schwerwiegend ein Ereignis sein muss, um protokolliert zu werden (weitere Informationen finden Sie weiter unten).
- LogFormat – Definieren Sie, wie jeder Eintrag im Zugriffsprotokoll formatiert werden soll (weitere Informationen finden Sie weiter unten).
LogLevel ist standardmäßig auf Warnung eingestellt, was bedeutet, dass bei Warnbedingungen oder schwerwiegenderen Ereignissen in das Fehlerprotokoll geschrieben wird. Wenn Ihr Fehlerprotokoll mit vielen harmlosen Warnmeldungen gefüllt wird, können Sie es auf einen Fehler hochstufen, der nur Fehler oder schwerwiegendere Probleme meldet.
Weitere Optionen sind (in der Reihenfolge ihres Schweregrads) Crit, Alert und Emerg. Apache empfiehlt, mindestens kritisch zu sein. Zu Debugzwecken können Sie LogLevel vorübergehend auf debuggen festlegen, aber beachten Sie, dass Sie am Ende eine unhandliche Anzahl von Einträgen in Ihrem Fehlerprotokoll haben können.
Mit LogFormat können Sie anpassen, wie die Einträge im Zugriffsprotokoll aussehen. Wenn Sie den Beispieleintrag in access.log (aus dem Abschnitt zur Apache-Protokollformatierung oben) ein wenig verwirrend finden, sind Sie nicht allein. Apache ermöglicht es Ihnen, das Format von Protokolleinträgen anzupassen, so dass Sie sie auf logischere Weise einrichten können. Sie können diese Anpassung auch verwenden, um bestimmte Informationen auszuschließen, die Sie möglicherweise für irrelevant halten.
Apache-Protokollierungsmodule
Die Protokollierungskonfiguration, die wir bisher in diesem Handbuch gezeigt haben, bezieht sich auf das mod_log_config Apache-Modul. Um die Protokollierungsfunktionalität noch weiter zu erweitern, können Sie andere Protokollierungsmodule in Apache laden. Dies kann einige weitere Funktionen bereitstellen, die in den Standardeinstellungen nicht verfügbar sind.
mod_log_forensic beginnt mit der Protokollierung vor einer Anforderung (wenn die Header zum ersten Mal empfangen werden) und protokolliert sie nach der Anforderung erneut. Das bedeutet, dass für jede Anforderung zwei Protokolleinträge erstellt werden, die es einem Administrator ermöglichen, die Antwortzeiten genauer zu messen.
Definieren Sie den Speicherort Ihres forensischen Protokolls mit der CustomLog-Direktive. Zum Beispiel:
CustomLog ${APACHE_LOG_DIR}/forensic.log forensicmod_logio protokolliert die Anzahl der Bytes, die an jede Anforderung gesendet und von ihr empfangen wurden. Es liefert sehr genaue Informationen, da es auch die Daten zählt, die im Header und Text jeder Anfrage vorhanden sind, sowie die zusätzlichen Daten, die für SSL/TLS-verschlüsselte Verbindungen erforderlich sind.
Hängen Sie die Platzhalter %I und O% an die LogFormat-Direktive an, um die zusätzlichen Daten zu nutzen, die von diesem Modul bereitgestellt werden.
Andere Module sind vorhanden; Dies sind nur zwei der nützlichsten.
Schlussfolgerung
In diesem Artikel haben wir gesehen, wie man die Zugriffs- und Fehlerprotokolle von Apache analysiert und interpretiert. Wir haben auch gelernt, wie wir die Protokollierung in den Konfigurationsdateien von Apache anpassen können, um die Protokolldaten relevanter zu machen. Mit diesem Wissen können Sie Probleme schneller isolieren und Probleme mit Apache beheben.
Denken Sie daran, dass die Protokollierungsfunktionalität von Apache durch andere Protokollierungsmodule weiter erweitert werden kann, obwohl dies nur in Grenzfällen erforderlich ist, die erweitertes Debuggen erfordern.

