GoAccess wertet Web Server Log Dateien aus

Real-Time HTML Report

Real-Time HTML Report

Unabhängig von all den Diskussionen über Datenschutz sammeln Webserver, je nach Konfiguration, Daten. Diese Daten werden Zeile für Zeile in eine Datei für die erfolgten Zugriffe (access.log) und eine Datei für die Fehler (error.log) geschrieben. Die Fehlerdatei ist praktisch für den Betreiber des Servers. Eine Fehlerzeile sieht beispielsweise so aus:

[Mon Jan 18 05:23:45.817962 2016] [:error] [pid 21125] [client 188.40.53.18:46625] PHP Fatal error:  Call to a member function insertBefore() on a non-object in /.../public_html/wp-content/plugins/mollom/includes/Entity.php on line 357

In diesem Fall hat am 18. Januar ein WordPress Plugin für einen PHP Fehler gesorgt. Im besten Fall ist die error.log Datei leer.

In der access.log Datei findet sich pro Zugriff eine Zeile, beispielsweise so etwas:

79.240.242.199 - - [04/Mar/2017:20:49:21 +0100] "GET /2017/03/04/heute-mal-mit-musik/ HTTP/1.1" 200 33791 "https://t.co/CS5eZgKKFN" "Mozilla/5.0 (Windows NT 6.1; rv:51.0) Gecko/20100101 Firefox/51.0"
  • 79.240.242.199 ist die IP Adresse des Besuchers
  • [04/Mar/2017:20:49:21 +0100] ist das Datum des Zugriffs
  • GET / HTTP/1.1 ist die Abfragemethode und das Protokoll
  • 200 ist der Status Code für OK, die Seite wurde ausgeliefert
  • 33791 sind die Anzahl der vom Server gelieferten Bytes
  • https://t.co/CS5eZgKKFN zeigt, das der Besucher in einem Tweet auf einen Link geklickt hat
  • Mozilla/5.0 (Windows NT 6.1; rv:51.0) Gecko/20100101 Firefox/51.0 Ist der sogenannte User Agent, in diesem Fall der Browser Firefox auf Windows 7. Der Browser wurde vor sieben Jahren kompiliert (20100101)

Auch diese Angaben sind für den Webmaster interessant, weil sie Informationen bieten, die zum Betrieb des Servers sehr hilfreich sind und daher hat sich im Laufe der Jahre die Software Gattung Logfile Analyzer entwickelt. Um „mal schnell“ in so einen Datenschatz hinein zu schauen, gibt es zahlreiche Tools, u.a. GoAccess, ein Open Source Tool.

Es liest die entsprechende Logdatei ein und erzeugt einen Report mit folgenden Auswertungen:

  • Allgemeine Statistiken: Metadaten über die Logdatei
  • Unique visitors: (inklusive Suchmaschinen Spider). Das Ergebnis kann beispielsweise nach Datum gefiltert werden.
  • Requested files: Hier werden die am meisten angeforderten Dateien angezeigt.
  • Requested static files: Hier finden sich die Zugriffe auf statische Dateien wir JPG, CSS, SWF, JS, GIF und PNG Dateien.
  • 404 oder nicht gefunden: Hier werden die nicht gefundenen Dateien angezeigt (Statuscode 404).
  • Hosts: Hier findet man u.a. Informationen über aggressive Crawler. Dieser Bereich kann erweitert werden um die IP Adressen, das Land und die Stadt.
  • Operating System
  • Browsers
  • Besuchszeiten: Zugriffe aufgeschlüsselt nach Stunden pro Tag
  • Virtual Hosts
  • Referrers URLs: Der ganze URL
  • Referring Sites: Hier wird nur der Teil mit dem Hostnamen angezeigt
  • Keyphrases: Schlüsselbegriffe aus Google Suche, Google Cache und Google Translate.
  • Geo Location
  • HTTP Status Codes
  • Remote User (HTTP authentication) Falls HTTP authentication genutzt wird, wird der entsprechende Username angezeigt.

Die Installation von GoAccess kann über fertige Binaries oder den Quellcode, der dann noch kompiliert werden muss, erfolgen.

Ich nutze Ubuntu 16.04 und installiere GoAccess mit dem Paketmanager:

sudo apt-get install goaccess

Danach ist das Programm einsatzbereit und muss nur noch aufgerufen werden. Der Minimalbefehl lautet:

goaccess -f access.log

Es erscheint ein Fenster, in dem das Format der access.log Datei ausgewählt werden muss. In meinem Fall das NCSA Combined Log Format. Je nach Größe der Datei kann das Einlesen ein wenig dauern.

Interaktiver Terminal Report
Interaktiver Terminal Report

Wenn die Datei eingelesen ist, erscheint ein interaktiver Report auf dem Bildschirm:

Interaktiver Terminal Report - Ausgabe
Interaktiver Terminal Report – Ausgabe

Mit den Pfeiltasten kann durch die Ausgabe navigiert werden. Der Report wertet die Logdatei aus und zeigt die Ergebnisse übersichtlich an, beispielsweise die Hosts:

Hosts
Hosts

Die Ausgabe kann auch im HTML (oder CSV) Format erfolgen:

goaccess -f access.log -a -o report.html

Oder im JSON Format zur Weiterverarbeitung auf einer Website:

goaccess -f access.log -a -d -o report.json

Die Ausgabe lässt sich filtern, Beispiele finden sich auf der Website des Projekts (https://goaccess.io/man#examples).

In der neueren Version 1.1, die nicht für Ubuntu als Binary vorliegt und kompiliert werden muss, ist sogar ein Echtzeit HTML Report enthalten, der über einen eigenen kleinen Webserver auf einem definierten Port läuft.

Real-Time HTML Report
Real-Time HTML Report

Fazit

GoAccess ist schnell, praktisch und einfach auf dem eigenen Server bedienbar. Es bietet sinnvolle Informationen für Betreiber von Websites ohne die Daten an Dritte übertragen zu müssen.

Link


tl;dr: GoAccess visualisiert den Inhalt von Logdateien

Save

Autor: Hagen Graf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

Kommentar verfassen