Wie Ihnen jeder Entwickler oder Systemadministrator mitteilt, sind Protokolldateien ein äußerst nützliches Tool zum Debuggen von Problemen in einer Webanwendung. Tatsächlich werden Protokolldateien normalerweise als primäre Informationsquelle verwendet, wenn eine Website eine Fehlfunktion aufweist.

Eine bestimmte Protokolldatei, die beim Debuggen von Anwendungen verwendet werden kann (oder einfach Einblick in die Besucheraktivität erhält), ist das Zugriffsprotokoll, das von einem Apache HTTP-Server erstellt wird., Im Folgenden werde ich auf die Einzelheiten dieser Protokolle eingehen: Ich erkläre, was in den Apache-Zugriffsprotokollen aufgezeichnet wird, wo sie gefunden werden können und wie die in der Datei enthaltenen Daten sinnvoll sind. Da die wirkliche Kraft von Protokolldaten darin besteht, die Bedeutung der Daten durch Analyse zu verstehen, werde ich auch die Vorteile der Arbeit mit einer Protokollverwaltungs-und Analyseplattform (wie Sumo-Logik) diskutieren, um wertvolle Erkenntnisse aus Zugriffsprotokolldaten abzuleiten.

Was sind Apache-Zugriffsprotokolle?,

Wie oben erwähnt, ist das Apache-Zugriffsprotokoll eine von mehreren Protokolldateien, die von einem Apache-HTTP-Server erstellt wurden. Diese spezielle Protokolldatei ist für die Aufzeichnung von Daten für alle vom Apache-Server verarbeiteten Anforderungen verantwortlich. Wenn also eine Person eine Webseite auf Ihrer Website besucht, enthält die Zugriffsprotokolldatei Details zu diesem Ereignis., informationen sind wertvoll in einer Vielzahl von Situationen: zum Beispiel, wenn eine gemeinsame Anfrage für jede einzelne Person, die versucht, auf eine bestimmte Webseite zu erhalten, fehlschlägt, kann der Link auf eine Seite verweisen, die nicht mehr existiert; wenn eine bestimmte Seite auf der Website länger dauert, als es sollte zu laden, Protokolleinträge könnten SQL-Abfragen angeben, die zur Verbesserung der Leistung refactored werden könnten; wenn eine bestimmte Seite auf der Website sehr beliebt ist, Aggregieren von Daten aus Zugriffsprotokollen könnte ein Licht auf häufig angeforderte Ressourcen leuchten, so dass Unternehmen ihre Popularität durch die Bereitstellung von mehr verwandten Inhalten zu erhöhen.,

Wo finde ich Apache Access Logs?

Der Speicherort der Apache-Zugriffsprotokolle hängt vom System ab, auf dem der Apache-HTTP-Server ausgeführt wird. Die meisten Apache HTTP Server Instanzen laufen auf Linux Distributionen. Für die Zwecke dieses Artikels werden wir uns daher an die Details halten, wo sich die Apache-Zugriffsprotokolle auf einem Linux-Computer befinden.

Auf der Ubuntu Linux-Distribution werden beispielsweise Zugriffsprotokolldatensätze standardmäßig an den folgenden Speicherort geschrieben:

/ var / log / apache2 / access.,log

Der Standardspeicherort kann bei anderen Linux-Distributionen leicht variieren, aber Sie müssen in den meisten Fällen nicht sehr weit schauen. Letztendlich werden der Speicherort und das Format (dazu später mehr) der Zugriffsprotokolle durch eine CustomLog-Direktive definiert, die in Ihrer Apache HTTP Server-Konfiguration angezeigt und geändert werden kann.

Interpretation der Apache-Zugriffsprotokolle

Nachdem Sie nun wissen, was Apache-Zugriffsprotokolle sind und wo sie zu finden sind, können wir Ihnen erklären, wie Sie die Einträge interpretieren, damit Ihr Entwicklungsteam und andere IT-Mitarbeiter sie gut nutzen können.,

Lesen von Apache-Zugriffsprotokollen

Um die Apache-Zugriffsprotokolle zu verstehen, muss der Analyst das Format verstehen, in dem die Zugriffsprotokolle aufgezeichnet werden. Wie oben erwähnt, wird das Format für die Zugriffsprotokolle zusammen mit dem Speicherort in der CustomLog-Direktive definiert. Wir werden uns zwei gängige Protokollformate ansehen, die häufig mit Apache Access Logs verwendet werden.

Allgemeines Protokollformat

Das gemeinsame Protokollformat ist ein standardisiertes Textdateiformat, das von verschiedenen Webservern beim Generieren von Serverprotokolldateien verwendet wird., Mit einem Apache HTTP-Server kann das gängige Protokollformat 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 problemlos von vielen Protokollanalyseplattformen verwendet werden.

Ein im allgemeinen Protokollformat geschriebener Zugriffsprotokolldatensatz sieht ungefähr so aus:

127.0.0.1-Scott „GET / server-status HTTP/1.1“ 200 2326

Die Felder im obigen Beispieldatensatz stellen Folgendes dar:

  • 127.0.0.,1-IP-Adresse des Clients, der die Anforderung gestellt hat;
  • Der Bindestrich, der das zweite Feld in der Protokolldatei definiert, ist die Identität des Clients. Dieses Feld wird häufig als Bindestrich zurückgegeben, und in der HTTP-Serverdokumentation von Apache wird empfohlen, sich auf dieses Feld nur im Falle eines kontrollierten internen Netzwerks zu verlassen.
  • „- USERID der Person, die die Ressource anfordert;
  • – Datum und Uhrzeit der Anforderung;
  • “ GET / server-status HTTP / 1.,1″ – Anforderungstyp und angeforderte Ressource;
  • 200 – HTTP – Antwortstatuscode;
  • 2326-Größe des an den Client zurückgegebenen Objekts.

Kombiniertes Protokollformat

Ein weiteres Format, das häufig mit Apache-Zugriffsprotokollen verwendet wird, ist das kombinierte Protokollformat. Dieses Format ist dem allgemeinen Protokollformat sehr ähnlich, enthält jedoch einige zusätzliche Felder, um weitere Informationen für die Verwendung bei Analyse-und Debugging-Vorgängen bereitzustellen., Ein Zugriffsprotokolldatensatz, der im kombinierten Protokollformat aufgezeichnet wird, sieht ungefähr so aus:

Wie Sie sehen, sind die ersten sieben Felder identisch mit denen im allgemeinen Protokollformat. Die verbleibenden Felder stellen zwei zusätzliche Eigenschaften dar:

Die“ CustomLog “ – Direktive

Zuvor habe ich erwähnt, dass die Konfiguration für Apache-Zugriffsprotokolle über die CustomLog-Direktive in einer Apache HTTP-Serverkonfigurationsdatei erfolgt., Werfen wir einen Blick auf ein Beispiel-access-log-Konfiguration zu zeigen, die Flexibilität, die der CustomLog-Anweisung:

LogFormat „%h %l %u %t \“%r\“ %>s %O \“%{Referer}i\“ \“%{User-Agent}i\““ combined

CustomLog /var/log/apache2/access.log combined

Hier haben wir das kombinierte Protokollformat über die LogFormat-Direktive definiert und anschließend den Speicherort und das Format (kombiniert) für das Zugriffsprotokoll mithilfe der CustomLog-Direktive definiert. Wie Sie sehen, ist das Ändern des Speicherorts oder Formats des Zugriffsprotokolls ein einfacher Vorgang., Darüber hinaus bietet uns die Verwendung der CustomLog-Direktive einige andere Funktionen, die wir im Folgenden beschreiben werden.

Mehrfachzugriffsprotokolle

Es gibt keine Regel, die besagt, dass Sie nicht Mehrfachzugriffsprotokolle für Ihren Apache HTTP-Server konfigurieren können, und der Prozess ist eigentlich ziemlich einfach; Alles, was Sie tun müssen, ist einfach zusätzliche CustomLog-Anweisungen hinzuzufügen, um eine zusätzliche, benutzerdefinierte Zugriffsprotokolldatei hinzuzufügen:

LogFormat „%h %l %u %t \“%r\“ %>s %O \“%{Referer}i\“ \“%User-Agent}i\““ kombiniert

LogFormat „%{User-agent}i“ Agent

CustomLog /var/log/apache2/access.,loglog

CustomLog / var/log/apache2/agent_access.log agent

Bedingte Protokolle

Zusätzlich ist es möglich, bedingt auf Zugriffsprotokolle zu schreiben. Dies könnte aus einer Vielzahl von Gründen nützlich sein, einschließlich des Ausschlusses von Datensätzen, die bestimmten Clients zugeordnet sind. In der Regel erfolgt dies, indem Umgebungsvariablen festgelegt und über die Klausel „env“ referenziert werden. Weitere Informationen finden Sie in der offiziellen Dokumentation zur CustomLog-Direktive.

Protokollrotation & Piped Logs

Wie alles andere auf einem Server nehmen Protokolldateien Speicherplatz ein., Und auf einem relativ geschäftigen Apache-Server können Protokolldateien wie Zugriffsprotokolle schnell wachsen. Daher ist es wichtig, dass Prozesse zum regelmäßigen Verschieben oder Löschen alter Protokolldateien vorhanden sind. Glücklicherweise kann ein Apache HTTP-Server dies mithilfe anmutiger Neustarts und weiterleitender Protokollprozesse tun.

Ein anmutiger Neustart eines Apache-Servers ermöglicht einen Neustart, ohne Clientverbindungen zu verlieren., Dieser Neustart ermöglicht es Apache, neue Protokolldateien ohne Clientunterbrechung zu öffnen und zu schreiben, wodurch die Ausführung der Verarbeitung alte Protokolldateien komprimieren oder löschen kann, um Platz zu sparen.

Piped-Logprozesse hingegen können eine Protokollrotation ohne Neustart des Servers ermöglichen; Beispielsweise ist ein Programm namens rotatelogs 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 Rotatelogs-Programm enthält Optionen zum bedingten Drehen von Protokollen basierend auf Zeit oder Größe.

Apache-Zugriffsprotokolle mit Sumo-Logik analysieren

Das Sammeln großer Datenmengen in Protokolldateien ist nur dann sinnvoll, wenn die Daten effektiv verwaltet und einfach analysiert werden können. Wenn es richtig gemacht wird, erzeugt es wertvolle Erkenntnisse, die genutzt werden können, um Verbesserungsmöglichkeiten innerhalb Ihrer Webserver-Konfiguration oder Anwendung zu identifizieren., Wenn Sie mit Apache-Zugriffsprotokollen arbeiten, integrieren Sie sie am besten in Sumo Logic, um Ihre Apache-Protokolldateien zu sammeln, wodurch der Prozess zur Erstellung wertvoller Visualisierungen weniger schmerzhaft wird als je zuvor.

Der Einstieg ist relativ einfach. Indem Sie einfach einen SumoLogic Collector und eine lokale Dateiquelle für das Apache-Zugriffsprotokoll konfigurieren, können Sie in wenigen Minuten in einem grundlegenden Sinne betriebsbereit sein. Schauen Sie sich noch heute Sumo Logic an, um zu sehen, wie sie Ihre Prozesse für die Protokollverwaltung und Datenanalyse verbessern können.,

Vollständige Sichtbarkeit für DevSecOps

Reduzieren Sie Ausfallzeiten und wechseln Sie von reaktiver zu proaktiver Überwachung.