Skip to content

Logfile-Auswertung mit AWStats

Webstatistik “macht” man heutzutage, so mein Eindruck, primär live und dann entweder mit Google Analytics, oder man legt - auch unter Datenschutzgesichtspunkten - lieber selbst Hand an und greift dann normalerweise zu Piwik. So war auch der Tenor der Antworten auf meine zwei Jahre zurückliegende Frage nach dem “Stand der Technik”.

Dieser Tage habe ich mich gefragt, ob sich nicht viele Fragen auch durch eine bloße Auswertung der Webserver-Logs beantworten lassen, und einmal geschaut, was mir das aus der Vergangenheit noch bekannte AWStats so macht. Und siehe da, die Software gibt es noch, und sie bekommt auch noch einmal jährlich ein Update, zumeist mit Daten zu neuen Browserversionen und Webcawlern.

Es ist auch gar nicht so viel Arbeit, damit einen ganzen Haufen Websites statistisch zu erfassen - wobei ich das folgende als konzeptionelles Beispiel verstanden sehen möchte, nicht als copy&paste-fähige Anleitung. Man sollte sich bspw. gut überlegen, ob man die Webserver-Logs wirklich weltweit lesbar haben möchte oder nicht lieber anderweitig dafür sorgt, dass AWStats auf sie zugreifen kann.

Ein Logfile pro virtual host

Man definiert im jeweiligen virtual host ein weiteres CustomLog, bspw. /var/log/awstats/$domain.log, wobei $domain natürlich durch einen passenden Bezeichner zu ersetzen ist. Dabei sollte man daran denken, dort auch das Standard-Logfile, zumeist also wohl /var/log/apache2/access.log, erneut anzugeben, weil der Apache sonst nicht zusätzlich in das weitere Logfile schreibt, sondern nur noch nach dort.

Alternativ lässt man die Webserver-Logs nicht in eine Datei schreiben, sondern in ein Script pipen, das dann die eingehenden Logzeilen je nach Domain bzw. Hostnamen in der jeweils passenden Datei speichert - wie auch immer.

Die zusätzlichen Logfiles müssen für AWStats lesbar sein!

Eine AWStats-Konfigurationsdatei pro virtual host

Dann legt man sich für jede Domain (respektive jeden Hostname, respektive jeden virtual host) eine passende Konfigurationsdatei awstats.$domain.conf an (wobei man $domain jeweils durch eine passende Bezeichnug ersetzt) - die Konfigurationsdatei kann im selben Verzeichnis wie das Script liegen, in /etc/awstats, in /usr/local/etc/awstats, direkt in /etc oder auch in /etc/opt/awstats. Legt man die Konfiguration im selben Verzeichnis wie das Script an und will man ebendieses auch über den Webserver aufrufen, empfiehlt es sich, den Zugriff auf die Konfiguration in einer .htaccess-Datei zu sperren:

<FilesMatch "\.(conf|txt)$">
 order allow,deny
 deny from all
</FilesMatch>

Für Apache 2.4 ist diese Syntax bekanntermaßen anzupassen.

Statistik erstellen und im Web mit AWStats anschauen

Danach muss man das Sript nur noch aufrufen: perl /path/to/awstats.pl -config=$domain -update, wobei freilich statt /path/to/ der richtige Pfad und statt $domain die zuvor für den Namen der Konfigurationsdatei vergebene Kennung stehen muss. Voilà.

Die fertige Statistik lässt sich dann durch Aufruf von http://domain.example/cgi-bin/awstats.pl?config=$domain anzeigen, wenn denn der Webserver von domain.example entsprechend konfiguriert ist. “Oberhalb” von cgi-bin kann man sich dann noch eine Startseite mit Links zu den einzelnen Statistiken basteln.

Regelmäßige Aktualisierung der Statistik per Cronjob

Per Cronjob (bspw. in /usr/local/bin/do-webstats.sh) lassen sich dann täglich (stündlich, …) alle Statistiken aktualisieren:

#!/bin/dash
for i in $domain1 $domain2 $domainX; do
  echo "--- $i"
  perl /path/to/awstats.pl -config=$i -update
done

Rotation der zusätzlich für AWStats angelagen Logfiles

Und wenn man die - in unserem Beispiel in /var/log/awstats/ zusätzlich angelegten Logfiles nicht ins unendliche wachsen lassen möchte, sollte man auch logrotate noch mit einer passenden Konfiguration versehen, bspw. in /etc/logrotate.d/awstats:

/var/log/awstats/*.log {
    weekly
    missingok
    rotate 4
    compress
    delaycompress
    notifempty
    # die Logs muessen so erzeugt werden, dass AWStats sie lesen kann!
    create 644 root adm
    sharedscripts
    postrotate
    /etc/init.d/apache2 reload > /dev/null
        endscript
        prerotate
            /usr/local/bin/do-webstats.sh
        endscript
}

Für meine Zwecke scheint mir das doch weitgehend auszureichen - vielleicht auch deshalb, weil ich die sonstigen vielfältigen Möglichen, die bspw. Piwik bietet, nicht recht verstanden habe und/oder nicht nutze.

Trackbacks

onliandone am : onliandone via Twitter

Vorschau anzeigen
Logfile-Auswertung mit AWStats | Netz - Rettung - Recht https://t.co/2D7WvYtlNV via @Szlauszaf

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Elmar Stellnberger am :

Elmar Stellnberger

Es gibt etwas, das viel mehr kann als AWStats und trotzdem nur die Apache Logfiles braucht: https://www.elstel.org/software/webstat-bash/ Kann alles was man so braucht: Besucher pro Land, welche Seiten am meisten gesurft werden, alle Seitenaufrufe chronologisch zu einem Besuch, Referer-Tag Auswertung, welche Seiten über Suchmaschinen und Links von anderen Seiten angesteuert werden, wann die Seite zum letzten mal vom Googlebot gecrawlt worden ist, etc.

Thomas Hochstein am :

Thomas Hochstein

Danke für den Hinweis - liest sich interessant, aber nicht so, als würden daraus im Web abrufbare Statistiken (also Webseiten) erzeugt? Bislang habe ich davon abgesehen bei AWStats noch nicht wirklich etwas vermisst …

Kommentar schreiben

HTML-Tags werden in ihre Entities umgewandelt.
Markdown-Formatierung erlaubt
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
BBCode-Formatierung erlaubt
Gravatar, Identicon/Ycon Autoren-Bilder werden unterstützt.
Formular-Optionen