
Protokolldateien sind für Entwickler und Systemadministratoren von unschätzbarem Wert, wenn es um die Fehlersuche in Webanwendungen geht. Sie dienen oft als Hauptinformationsquelle bei der Behebung von Website-Fehlfunktionen.
Unter diesen Protokollen sticht das Zugriffsprotokoll des Apache HTTP-Servers als wichtige Ressource für das Debuggen von Anwendungen und das Gewinnen von Einblicken in die Besucheraktivitäten hervor.
Lesen Sie weiter und erfahren Sie mehr über die Apache-Zugriffsprotokolle: welche Informationen sie erfassen, wo sie gespeichert werden und wie Sie die Daten richtig auswerten. Da die eigentliche Stärke von Protokolldaten in den durch die Analyse gewonnenen Erkenntnissen liegt, werden in diesem Blog die Vorteile des Einsatzes einer SaaS-Log-Analyse-Plattform wie Sumo Logic erläutert, um verwertbare Erkenntnisse aus Zugriffsprotokolldaten zu gewinnen.
Was sind Apache-Zugriffsprotokolle und welche Rolle spielen sie beim Webserver-Monitoring?
Wie bereits erwähnt, ist die Apache-Zugriffsprotokolldatei eine von mehreren Protokolldateien, die ein Apache-Webserver erzeugt. Diese spezielle Protokolldatei zeichnet Daten für alle vom Apache-Server verarbeiteten Anfragen auf. Wenn also eine Person eine Webseite auf Ihrer Website besucht, enthält die Zugriffsprotokolldatei Details zu diesem Ereignis.
Diese Informationen sind in einer Vielzahl von Situationen wertvoll:
- Wenn eine häufige Anfrage bei jedem Nutzer, der eine bestimmte Webseite aufruft, fehlschlägt, könnte der Link auf eine nicht mehr vorhandene Seite verweisen.
- Wenn das Laden einer bestimmten Seite auf der Website länger dauert als vorgesehen, kann der Protokolleintrag auf SQL-Abfragen hinweisen, die zur Verbesserung der Serverleistung optimiert werden müssen.
- Wenn eine bestimmte Seite auf der Website sehr beliebt ist, kann die Aggregation von Daten aus Zugriffsprotokollen Aufschluss über häufig nachgefragte Ressourcen geben und Unternehmen bei der Optimierung von Inhalten helfen.
Wo finde ich Apache-Zugriffsprotokolle?
Der Speicherort der Apache-Zugriffsprotokolle hängt von dem System ab, auf dem der Apache-HTTP-Server läuft. Da die meisten Apache-Serverinstanzen auf Linux-Distributionen laufen, konzentrieren wir uns auf das Auffinden von Apache-Zugriffsprotokollen auf einem Linux-Rechner.
Bei der Linux-Distribution Ubuntu werden Zugriffsprotokolle standardmäßig an folgendem Speicherort abgelegt:
/var/log/apache2/access.log
Der Standard-Speicherort kann bei anderen Linux-Distributionen leicht abweichen, aber in den meisten Fällen müssen Sie nicht lange suchen. Letztendlich werden der Speicherort und das Format (mehr dazu später) der Zugriffsprotokolle durch eine CustomLog-Anweisung festgelegt, die Sie in der Konfiguration Ihres Apache HTTP-Servers einsehen und ändern können.
Interpretation der Apache-Zugriffsprotokolle
Jetzt, da Sie wissen, was Apache-Zugriffsprotokolle sind und wo sie zu finden sind, können Sie die Einträge interpretieren, damit Ihr Entwicklungsteam und andere IT-Mitarbeiter sie optimal nutzen können.
Um Protokolleinträge zu verstehen, müssen Sie das Apache-Protokollformat kennen. Das Format für Zugriffsprotokolle wird in der CustomLog-Direktive definiert. Im Folgenden finden Sie zwei gängige Protokollformate, die häufig für Apache-Zugriffsprotokolle verwendet werden.
Common Log Format
Das Common Log Format ist ein standardisiertes Textdateiformat, das von verschiedenen Webservern zur Erstellung von Server-Protokolldateien verwendet wird. Mit einem Apache HTTP-Server kann das Common Log Format verwendet werden, um Zugriffsprotokolle zu erstellen, die für Entwickler und Administratoren einfach genug zu lesen sind. Da es sich um ein standardisiertes Format handelt, das von mehreren Webservern verwendet wird, können CLF-formatierte Protokolldateien außerdem problemlos von vielen Log-Analyse-Plattformen verwendet werden.
Ein Beispiel für einen im Common Log Format geschriebenen Zugriffsprotokolleintrag sieht wie folgt aus:
127.0.0.1 - Scott [10/Dec/2019:13:55:36 -0700] "GET /server-status HTTP/1.1" 200 2326
Die Felder stehen für:
- 127.0.0.1: IP-Adresse des Clients, der die Anfrage gestellt hat
- Bindestrich: Die Identität des Kunden. Dieses Feld wird oft als Bindestrich zurückgegeben, und die Dokumentation zum Apache HTTP-Server empfiehlt, sich nicht auf dieses Feld zu verlassen, es sei denn, es handelt sich um ein kontrolliertes internes Netzwerk.
- Scott: Benutzer-ID des Anfragenden
- [10/Dec/2019:13:55:36 -0700]: Datum und Uhrzeit der Anfrage
- „GET /server-status HTTP/1.1“: Anfragetyp und angeforderte Ressource
- 200: HTTP-Statuscode
- 2326: Größe des an den Client zurückgegebenen Objekts.
Combined Log Format
Ein weiteres Format, das häufig für Apache-Zugriffsprotokolle verwendet wird, ist das Combined Log Format. Dieses Format ähnelt dem Common Log Format, enthält jedoch einige zusätzliche Felder, um mehr Informationen für Protokollanalyse und Fehlersuche bereitzustellen. Ein Zugriffsprotokollsatz, der im Combined Log Format aufgezeichnet wird, sieht wie folgt aus:
127.0.0.1 - Scott [10/Dec/2019:13:55:36 -0700] "GET /server-status HTTP/1.1" 200 2326 "http://localhost/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
Wie Sie sehen können, sind die ersten sieben Felder identisch mit denen des Common Log Format. Die übrigen Felder stehen für zwei zusätzliche Eigenschaften:
- „http://localhost/„: Dies ist der HTTP-Referrer, der die Quell-URL anzeigt.
- „Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, wie Gecko) Chrome/78.0.3904.108 Safari/537.36„: Dies ist der User Agent, der die Browserdetails des Clients offenbart.
Die CustomLog-Direktive
Ich habe bereits erwähnt, dass Apache-Zugriffsprotokolle über die CustomLog-Direktive in einer Apache-Konfigurationsdatei konfiguriert werden. Werfen wir einen Blick auf eine Beispielkonfiguration des Zugriffsprotokolls, um die Flexibilität der CustomLog-Direktive zu zeigen:
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /var/log/apache2/access.log combined
Bei diesem Setup wird das kombinierte Protokollformat mit der Direktive LogFormat definiert, gefolgt von der Angabe des Speicherorts und des Formats des Zugriffsprotokolls mit der Direktive CustomLog. Wie Sie sehen, ist die Änderung des Speicherorts oder des Formats des Zugriffsprotokolls ein unkomplizierter Vorgang. Darüber hinaus bietet die CustomLog-Direktive einige weitere Funktionen.
Mehrfachzugriffsprotokolle
Um mehrere Zugriffsprotokolle für Ihren Apache-HTTP-Server zu konfigurieren, fügen Sie einfach weitere CustomLog-Direktiven hinzu, um eine zusätzliche, angepasste Zugriffsprotokolldatei hinzuzufügen:
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{User-agent}i" agent
CustomLog /var/log/apache2/access.log combined
CustomLog /var/log/apache2/agent_access.log agent
Bedingte Protokolle
Darüber hinaus können Zugriffsprotokolle mit bestimmten Bedingungen versehen werden. Dies kann aus verschiedenen Gründen nützlich sein, z. B. um Datensätze auszuschließen, die mit bestimmten Clients verbunden sind. Normalerweise geschieht dies durch das Setzen von Umgebungsvariablen und deren Referenzierung über die Klausel „env“. Besuchen Sie für weitere Informationen die offizielle Dokumentation zur CustomLog-Direktive.
Log-Rotation und gepipte Logs
Da Serverprotokolle viel Speicherplatz verbrauchen, ist die Verwaltung archivierter Protokolldateien unerlässlich. Auf einem relativ stark ausgelasteten Apache-Server können die Protokolldateien, insbesondere die Zugriffsprotokolle, schnell anwachsen. Daher ist es wichtig, dass Sie Prozesse zum regelmäßigen Verschieben oder Löschen alter Protokolldateien eingerichtet haben. Glücklicherweise kann ein Apache HTTP-Server dies durch die Verwendung von sanften Neustarts und Piped-Log-Prozessen erreichen.
Ein sanfter Neustart ermöglicht es einem Apache-Server, zu einer neuen Zugriffsprotokolldatei zu wechseln, ohne dass Client-Verbindungen verloren gehen. Dieser Neustart ermöglicht es dem Apache, neue Protokolldateien ohne Unterbrechung durch den Client zu öffnen und in sie zu schreiben, und erlaubt die Komprimierung oder das Löschen alter Protokolldateien, um Platz zu sparen.
Piped-Log-Prozesse hingegen können eine Log-Rotation ohne einen Server-Neustart ermöglichen. Ein Programm namens rotatelogs ist zum Beispiel im Apache HTTP-Server enthalten. Anstatt einfach in eine Datei zu schreiben, können Zugriffsprotokolleinträge über eine Pipe in dieses spezielle Programm geschrieben werden. Das Programm rotatelogs enthält Optionen, um Protokolle abhängig von Zeit oder Größe zu rotieren.
Analyse der Apache-Zugriffsprotokolle mit Sumo Logic
Das Sammeln großer Mengen von Protokolldaten ist nur dann sinnvoll, wenn die Daten effektiv verwaltet und analysiert werden können. Wenn es richtig gemacht wird, liefert es wertvolle Erkenntnisse, die zur Verbesserung der Webserver- oder Anwendungsleistung genutzt werden können.
Die Integration mit Sumo Logic vereinfacht die Sammlung von Apache-Protokolldateien und macht die Erstellung wertvoller Visualisierungen bei der Arbeit mit Apache-Zugriffsprotokollen zum Kinderspiel.
Sie können ganz einfach loslegen. Wenn Sie einen Sumo Logic-Collector und eine lokale Dateiquelle für das Apache-Zugriffsprotokoll konfigurieren, können Sie in wenigen Minuten loslegen.
Beginnen Sie mit der Optimierung von Log-Management und Datenanalyseprozessen. Testen Sie Sumo Logic noch heute mit unserer kostenlosen 30-Tage-Testversion.

