Website-Suche

Linux Apache-Protokollanalysator


Bei jedem Besuch Ihres Apache-Webservers wird eine Zeile innerhalb der Protokolldatei generiert. Wie Sie sich vorstellen können, können sich die Protokolldateien sehr schnell mit Besucherinformationen und Fehlern füllen, so dass sie unhandlich und schwer zu durchsuchen sind. Die Analyse der Protokolle ist ein wichtiger Bestandteil der Verwaltung von Apache und der Sicherstellung, dass es wie erwartet läuft.

In diesem Tutorial sehen wir, wie Sie die Apache-Protokolldateien auf einem Linux-System finden und sie nach relevanten Informationen über Besucher, Fehler und Apache-Leistung durchsuchen. Dabei lernen Sie, wie Sie Apache-Protokolldateien interpretieren. Wir werden auch einige Tools durchgehen, die installiert werden können, die die Protokolldateien durchsuchen und relevante Statistiken zusammenstellen, die für eine Person einfacher durchzugehen sind.

In diesem Tutorial lernen Sie:

  • Wo werden Apache-Protokolldateien gespeichert?
  • Wie werden Apache-Protokolldateien vom System rotiert?
  • Interpretieren der Daten in access.log und error.log
  • So installieren und verwenden Sie andere Tools zum Interpretieren von Apache-Protokolldateien

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.

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/

Interpretieren von Apache-Protokollen

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.

Nachdem Sie nun wissen, wie Sie einen typischen Eintrag in die Apache-Protokolldateien einfügen können, werfen wir einen Blick auf einige Einträge (passen Sie den folgenden Pfad an den Speicherort Ihrer Apache-Protokolldateien an):


less /var/log/apache2/access.log
OR
less /var/log/apache2/error.log

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.

WUSSTEN SIE SCHON?
Sie können die Formatierung von Apache-Protokollen anpassen und sogar genau konfigurieren, welche Informationen Apache protokollieren soll. In unserem Tutorial zur Analyse und Interpretation von Apache Webserver Log erfahren Sie mehr über Apache-Protokollmodule und wie Sie Ihre Apache-Protokollierung anpassen können.

Randnotiz: Möglicherweise sehen Sie viele komprimierte Protokolldateien in Ihrem /var/log/apache2- oder /var/log/httpd-Verzeichnis:


ls /var/log/apache2

Ihre Apache-Protokolldateien werden automatisch komprimiert und rotiert, um Speicherplatz zu vermeiden oder Millionen von Zeilen in einer einzigen Textdatei zu sammeln. Dies wird durch den Befehl logrotate und den Systemdienst erleichtert, und die Funktionalität kann angepasst werden, wenn Sie möchten.

Interpretieren von Apache-Protokolldateien mit einem Tool

Sie haben im vorherigen Abschnitt gesehen, wie Protokolldateien interpretiert werden, aber diese Aufgabe ist unmöglich mit irgendeiner Art von Effizienz zu erledigen. Es dauert zu lange, jeden Protokolleintrag zu lesen, und eine beliebte Website kann jeden Tag Tausende von Zeilen in den Protokolldateien generieren. Anstatt manuell zu versuchen, jedes einzelne zu verarbeiten, gibt es Tools von Drittanbietern, die die Protokolle für uns analysieren und uns die relevantesten Informationen daraus präsentieren können.

Eines, das wir uns in diesem Artikel ansehen werden, ist GoAccess. Sie können den entsprechenden Befehl unten verwenden, um GoAccess mit dem Paketmanager Ihres Systems zu installieren.

So installieren Sie GoAccess unter Ubuntu, Debian und Linux Mint:


sudo apt install goaccess

So installieren Sie GoAccess auf Fedora, CentOS, AlmaLinux und Red Hat:


sudo dnf install goaccess

So installieren Sie GoAccess auf Arch Linux und Manjaro:


sudo pacman -S goaccess

Nach der Installation können wir mit GoAccess einen Bericht aus einer Protokolldatei erstellen. So erstellen Sie beispielsweise einen Bericht aus dem Apache-access.log:


sudo goaccess /var/log/apache2/access.log --log-format=COMBINED -a -o /var/www/html/report.html

Dieser Befehl generiert report.html und legt sie in Ihrem /var/www/html-Verzeichnis ab, dem Standardverzeichnis, in dem Apache Websites hostet. Es besteht eine gute Chance, dass Ihr Server so konfiguriert wurde, dass Websites in einem anderen Verzeichnis gehostet werden, daher müssen Sie diesen Befehl entsprechend anpassen. Nachdem Sie den Befehl ausgeführt haben, können Sie report.html in Ihrem Webbrowser aufrufen.

Abschließende Gedanken

In diesem Tutorial haben wir gesehen, wie man Apache-Webserver-Protokolle auf einem Linux-System analysiert und interpretiert. Wir haben gelernt, wie man die access.log und error.log Dateien manuell öffnet und die darin angezeigten Daten sinnvoll nutzt. Dann haben wir gesehen, wie man ein Tool wie GoAccess verwendet, das die Dateien automatisch durchsuchen und die relevanten Daten auf eine für Menschen lesbarere und verdaulichere Weise zusammenstellen kann. Ein Teil der Webserver-Verwaltung besteht darin, den Überblick über Ihre Apache-Protokolle zu behalten und sie kontinuierlich auf Anomalien und Fehler zu überwachen. Sie haben die Wahl, ob Sie ein Tool zur Unterstützung der Arbeit verwenden, dies manuell erledigen oder selbst eine benutzerdefinierte Lösung konfigurieren möchten.

Verwandte Artikel: