Zugriffsdaten auswerten mit Webalizer

Aus LinuxUser 04/2011

Zugriffsdaten auswerten mit Webalizer

© Sebastian Duda, 123rf.com

Zahlenspiele

Wer heutzutage eine erfolgreiche Webseite betreiben will, muss nicht nur auf Barrierefreiheit, Browserunabhängigkeit und Suchmaschinenoptimierung achten, sondern auch die Besuche auswerten. Als Klassiker der Logfile-Analyse gilt Webalizer.

Bei vielen Anwendern lösen Dienste wie Google Analytics [1] ein zwiespältiges Gefühl aus. Zwar verursacht Googles Webseitenanalyse keine Kosten und lässt sich sehr einfach bedienen, doch in der heutigen Zeit möchten viele Nutzer ihre Daten nicht an externe Dienstleister übermitteln. Moderne Analysetools wie Piwik [2] schaffen zwar insofern Abhilfe, als sie auf dem eigenen Server laufen und dort sehr detailliert Daten aufbereiten. Um zuverlässig zu funktionieren, sind sie jedoch auf Javascript-Ausführung im Browser angewiesen. Noch vor der Web-2.0-Zeit entstand der Klassiker Webalizer [3] – und beruht daher auf einem anderem Ansatz. Er benötigt weder externe Dienste, noch führt er Skripts auf dem Client aus – vielmehr begnügt er sich mit den gängigen Logfiles, die jeder Webserver standardmäßig anlegt. Zudem verarbeitet Webalizer auch Protokolle gängiger FTP-Server und Proxies.

Datenschutz ist wichtig

Die Vorgabe-Einstellungen so gut wie aller Linux-Distributionen sehen das Protokollieren sämtlicher Web- und FTP-Zugriffe vor. Doch wohlgemerkt: Hier herrscht in Deutschland juristisch gesehen bei weitem keine Narrenfreiheit. Organisationen benötigen ab einer gewissen Größe einen Datenschutzbeauftragten, nahezu jede Webseite braucht eine Datenschutzerklärung, und selbst dann dürfen Sie nicht nach Gutdünken protokollieren und auswerten. Insbesondere Firmen drohen empfindliche Strafen, falls sie den gesetzlichen Regelungen zuwiderhandeln. Daher sollten Sie zumindest vor der gewerblichen Nutzung von Analysetools entsprechenden Rat einholen.

Die Installation

Unser Testsystem besteht aus einem Server mit der aktuellen 32-Bit-Version von Ubuntu 10.10 (“Maverick Meerkat”) mit Apache als Webserver. Webalizer selbst steht als fertiges Ubuntu-Paket zur Verfügung. Sie installieren das Programm mittels sudo apt-get install webalizer, wobei als Zielverzeichnis für die aufbereiteten Statistiken das Verzeichnis /var/www/webalizer entsteht.

Standardmäßig startet Webalizer mittels Cronjob in /etc/cron.daily/webalizer einmal am Tag automatisch. Dabei liest er jedoch nicht die aktuelle Protokolldatei /var/log/apache2/access.log ein, sondern die jeweils schon durch die Log-Rotation archivierte Version mit dem Namen /var/log/apache2/access.log.1, um bei Schreibzugriffen während des Webalizer-Laufs keine Daten zu verlieren. Anstatt nun erst einige Tage zu warten, bis genug Material vorhanden und die Auswertung erzeugt ist, zwingen Sie Logrotate einfach dazu, die Dateien sofort zu rotieren, und führen Webalizer einmal händisch aus. Dazu geben Sie folgende Befehle auf der Konsole ein:

$ sudo logrotate -f /etc/logrotate.d/apache2
$ sudo /etc/cron.daily/webalizer

Diese Methode sollten Sie jedoch nur auf einem Testsystem nutzen, keinesfalls auf einem Produktionssystem. Nach dem Rotieren der Logdateien und dem Webalizer-Durchlauf öffnen Sie die Adresse http://Rechner/webalizer/ im Browser. Sogleich präsentiert sich die Auswertung (Abbildung 1) – naturgemäß noch mit recht wenig Daten, denn die Installation ist ja ganz frisch.

Abbildung 1: Webalizer nach dem ersten Durchlauf.

Abbildung 1: Webalizer nach dem ersten Durchlauf.

Einlasskontrolle

Allein schon aus Datenschutzgründen stellen Sie vor der weiteren Konfiguration von Webalizer besser sicher, dass kein ungebetener Gast Zugang zu den Daten erhält. Dazu bieten sich zwei Möglichkeiten an: Zum einen die Zugriffsbeschränkung auf bestimmte IP-Bereiche, zum anderen ein Passwortschutz. Beide Varianten konfigurieren Sie über die Datei /etc/apache2/conf.d/webalizer, die Sie zunächst anlegen müssen.

Um den Zugriff auf das Verzeichnis /var/www/webalizer nur dem lokalen Rechner (127.0.0.1 per IPv4 und ::1 per IPv6), dem lokalen Netzwerk (192.168.*.*) sowie allen Hosts unterhalb der Domain linux-user.de zu erlauben, tragen Sie die Zeilen aus Listing 1 in die Datei ein.

Listing 1

<Directory /var/www/webalizer>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
Allow from 192.168
Allow from linux-user.de
</Directory>

Soll sich hingegen die Seite zwar von überall öffnen lassen, aber nur mit dem richtigen Passwort (Abbildung 2), legen Sie mittels

$ sudo htpasswd -s -c /var/www/webalizer/.htuser webalizer

einen gleichnamigen Benutzer an und tragen in /etc/apache2/conf.d/webalizer die sechs Zeilen aus Listing 2 ein.

Listing 2

<Directory /var/www/webalizer>
AuthType Basic
AuthName "Webalizer"
AuthUserFile /var/www/webalizer/.htuser
Require valid-user
</Directory>

In beiden Fällen starten Sie Apache mittels sudo /etc/init.d/apache2 reload neu, um die Konfiguration zu aktivieren.

Abbildung 2: Sicher ist sicher – die Passwortabfrage schützt vor neugierigen Blicken.

Abbildung 2: Sicher ist sicher – die Passwortabfrage schützt vor neugierigen Blicken.

Passwörter im Klartext

Der Passwortschutz per .htaccess überträgt Passwörter im Klartext und ist daher unsicher. Setzen Sie ihn nur ein, wenn die Webalizer-Instanz über eine SSL-verschlüsselte Verbindung läuft, und aktivieren Sie dann in der Webalizer-Konfiguration zudem die Direktive UseHTTPS.

Die Konfiguration

Nach dem Absichern der Webalizer-Installation ist es an der Zeit, sich ein wenig näher mit den Konfigurationsdaten zu beschäftigen, die sich standardmäßig in /etc/webalizer/webalizer.conf finden. Webalizer liest die Datei bei jedem Durchlauf ein, in der Regel also einmal pro Tag. Ändern Sie die Konfiguration, hat dies eventuell jedoch keine Auswirkungen auf bereits erstellte Berichte, denn ohne gesonderte Parameter schreibt Webalizer nur die Startseite und die Statistik des aktuellen Monats neu.

Die Direktive LogFile gibt den Pfad zur jeweiligen Logdatei an, in der Regel /var/log/apache2/access.log.1, wobei Webalizer auch komprimierte Logfiles (.gz) unterstützt. Standardmäßig erwartet das Tool das Protokoll im LogType des Typs Common oder Combined, wie sie jeder gängige Webserver schreibt. Darüber hinaus versteht sich Webalizer aber auch mit Protokollen der gängigen FTP-Programme sowie des Squid-Proxyservers.

Die nächste Direktive, OutputDir, gibt den Zielpfad für die generierten Webseiten an, in unserem Fall /var/www/webalizer. Weitere interessante Möglichkeiten bieten die Optionen Incremental zur Verarbeitung von inkrementellen Logdateien, sowie Hostname. Testweise können Sie letztere Direktive auch mit einer Raute (#) am Zeilenanfang ausklammern und so Webalizer dazu bringen, den Rechnernamen jeweils automatisch zu ermitteln. Setzen Sie ein CMS-System ein, das spezielle Dateinamen, Verzeichnisse oder Endungen benutzt, editieren Sie auch die Direktiven PageType, PagePrefix und IndexAlias, damit die Statistik korrekt ausfällt.

Standardmäßig löst Webalizer die IP-Adressen anfragender Rechner nicht zu Hostnamen auf. Um auch die DNS-Namen zu erfahren, aktivieren Sie den DNSCache und setzen DNSChildren auf einen Wert zwischen 5 und 20. Soll der Webalizer-Report global eingesetzt werden, setzen Sie mittels GMTTime die Zeitzone auf die international übliche UTC. Die Webalizer-Konfiguration hält zudem noch viele weitere Optionen bereit, die für die grundlegenden Funktionen jedoch nichts zur Sache tun. Unter anderem passen Sie über die entsprechenden Optionen das Design der Statistik an.

Rufen Sie nach einigen Tagen die Webalizer-Seite erneut auf, steht Ihnen eine umfassende Statistik zur Verfügung (Abbildung 3). Auf der Startseite finden Sie eine nach Monaten geordnete Übersicht, und durch Klick auf den jeweiligen Monatsnamen gelangen Sie zur Detailansicht. Sie enthält ausführliche Angaben zu Besucherzahlen, Tages- und Stundenstatistiken, Statuscodes, Datenmengen, den am häufigsten aufgerufenen und geladenen Seiten, Einstiegsseiten, Referrern, benutzten Browsern, Suchbegriffen und vieles mehr (Abbildung 4).

Abbildung 3: Mit einigen Daten an der Hand bereitet Webalizer die Logfiles grafisch auf.

Abbildung 3: Mit einigen Daten an der Hand bereitet Webalizer die Logfiles grafisch auf.

Abbildung 4: Nicht nur monats-, sondern auch tages- und stundenweise erstellt Webalizer die Statistiken.

Abbildung 4: Nicht nur monats-, sondern auch tages- und stundenweise erstellt Webalizer die Statistiken.

Pflicht und Kür

Im Einzelfall kann es sinnvoll sein, nicht nur das Haupt-Logfile von Apache zu analysieren, sondern auch Statistiken für verschiedene Virtual Hosts oder den FTP-Server zu erstellen. Der Cronjob unter Ubuntu stellt dafür schon den Rahmen bereit, da er nicht nur die webalizer.conf, sondern alle auf .conf endenden Dateien im Verzeichnis /etc/webalizer mit einbezieht. Möchten Sie beispielsweise einen zweiten Host in einem separaten Unterverzeichnis per Webalizer analysieren, so geben Sie einfach folgende die Befehle aus Listing 3 auf der Konsole ein.

Listing 3

$ mkdir /var/www/webalizer/zweiteseite
$ cp /etc/webalizer/webalizer.conf /etc/webalizer/webalizer-zwei.conf

In der zusätzlichen Konfigurationsdatei webalizer-zwei.conf passen Sie noch die Direktiven LogFile, OutputDir und Hostname an, und beim nächsten Durchlauf des Cronjobs liegen die zusätzlichen Statistiken im Unterverzeichnis zweiteseite. Voraussetzung dafür: Der Webserver muss so konfiguriert sein, dass er ein separates Logfile anlegt.

Analog dazu beherrscht Webalizer auch die Auswertung von FTP-Logdateien, mit denen unter anderem Mirrors den Datentransfer beobachten können. Um beispielsweise für ProFTPD eine entsprechen Auswertung zu erstellen, geben Sie die Befehle aus Listing 4 auf der Konsole ein. Danach passen Sie wiederum in der neuen Konfigurationsdatei LogFile, OutputDir und Hostname an. Da sich das FTP-Logformat von dem des Webservers unterscheidet, ändern Sie zusätzlich den Eintrag LogType auf ftp.

Listing 4

$ mkdir /var/www/webalizer/ftp
$ cp /etc/webalizer/webalizer.conf /etc/webalizer/webalizer-ftp.conf

Fazit

Webalizer mag zwar in die Jahre gekommen sein und weniger bunte Grafiken produzieren als moderne Dienste – seine Arbeit erledigt er jedoch zuverlässig, frei von externen Diensten und ohne Javascript-Code. Die Installation geht dabei schnell von der Hand. Eine Alternative gibt es mit AWStats [4], das ebenfalls einen Blick wert ist.

Glossar

UTC

Universal Time Coordinated, koordinierte Weltzeit. Das “koordiniert” bezieht sich auf den Ausgleich von Schwankungen der Erdrotation mittels Schaltsekunden. UTC ersetzt seit 1972 die Greenwich Mean Time (GMT), von der sie durch die Koordination um bis zu 0,9 Sekunden abweicht.

Referrer

Adresse der Website, von der der Benutzer via Link zur aktuellen Seite gekommen ist. Man unterscheidet zwischen Internal Referrer, External Referrer, Search Referrer, Visit Referrer und Original Referrer.

Der Autor

Florian Effenberger engagiert sich seit vielen Jahren ehrenamtlich für freie Software. Er ist Gründungsmitglied und Mitglied des Steering Committee der Document Foundation. Zuvor war er fast sieben Jahre im Projekt OpenOffice.org aktiv, zuletzt als Marketing Project Lead. Zudem schreibt er regelmäßig für zahlreiche deutsch- und englischsprachige Fachpublikationen.

LinuxUser 04/2011 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

1 Kommentar
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Susa
13 Jahre her

Eine Frage: der Webalizer führt ja auch die Anfragen je Seite auf (unter Top 30 von XY URLs), also z.B. 1028 Anfragen für /dateiordnerXY/index.html. Sagt jetzt diese Zahl aus, wie oft eine Zeile beim Aufruf dieser html-Seite in das Logfile geschrieben wird, oder umfasst sie auch alle Elemente auf dieser Seite? Falls nicht, wäre diese Zahl doch recht aussagekräftig bezüglich der Häufigkeit an Aufrufen (natürlich nicht über die Besucher)?

Nach oben