Archive for November, 2006

AWStats installieren und konfigurieren unter Debian Sarge

Donnerstag, November 9th, 2006

Auf dem Server eines Kunden sollte ein OpenSource Statistik-Tool eingerichtet werden. Die Wahl fiel auf AWStats, weil es von allen mir bekannten Tools dieser Art die am besten aufbereiteten Informationen aus den Logs zieht und auch die Präsentation sehr übersichtlich und vor allem in deutscher Sprache arbeitet.

Der erste Teil der Installation geschieht auf die übliche Debian-Art mittels:

aptitude update
aptitude install awstats

Dabei werden die nötigen Programme, Konfigurationsdateien etc. gleich automatisch erzeugt und an die richtigen Stellen gepackt. Unter anderem entstehen:
/usr/lib/cgi-bin/awstats.pl, /etc/awstats/awstats.conf und das Verzeichnis /var/lib/awstats/
Außerdem wird in /etc/cron.d ein Cronjob erzeugt, der ebenfalls awstats heisst.

Jetzt ist es spätestens an der Zeit , sich einige Parameter zur auszuwertenden Log-Datei anzusehen. Ich verwende Apache2 als Server, weshalb die Logdatei /var/log/apache2/access.log heisst. Und auch die Art der Logdatei ist wichtig: Bei mir ist es „combined“. Das kann in den Konfigurationsdateien des Servers festgestellt werden. Und von Bedeutung ist auch noch der Name der Website, die beobachtet wird, also z.B. www.beispiel.de .
Es folgen nun einige Einstellungen in der Konfigurationsdatei /etc/awstats/awstats.conf . Also Öffnen dieser Datei mit einem Editor und Festlegen dieser Werte:
LogFile erhält als Wert den Pfad zur Logdatei: /var/log/apache2/access.log
LogType bekommt (weil es sich um ein Web-Log handelt) den Wert: W
LogFormat enthält eine Schlüsselzahl für die Art des Logs. „Combined“ wird durch die Zahl 1 bezeichnet.
SiteDomain soll den vollen Namen der Website enthalten, hier also www.beispiel.de
HostAliases kann weitere Bezeichnungen der Domain auflisten: z.B. localhost 127.0.0.1 etc.

Die Konfigurationsdatei ist gut dokumentiert und mit Beispielen versehen. Einfach mal durchblättern und eventuell weitere Parameter verändern – und dann speichern der Datei.

Jetzt ist AWStats schon funktionsfähig. Es muß aber zunächst einmal der erste Auswertungslauf vollzogen werden, damit die Daten aus der vorhandenen Logdatei verarbeitet werden. Das geschieht von der Kommandozeile aus mittels:

perl awstats.pl -config=www.beispiel.de -update

Das kann eine Weile dauern – je nach Größe der aktuellen Logdatei – und endet dann mit einem kleinen Statusreport.

Wenn wir jetzt zum ersten Mal das Ergebnis sehen wollen, dann geht das am besten mit einem Webbrowser. Diese Adresse wird aufgerufen:

http://www.beispiel.de/cgi-bin/awstats.pl?config=www.beispiel.de

Voila: AWStats funktioniert und bringt einen detaillierten Bericht über viele interessante Aspekte des Zugriffs auf unsere Website.

Nachtrag: die Angabe config=www.beispiel.de führt dazu, daß awstats nach einer Konfigurationsdatei namens awstats.www.beispiel.de.conf sucht. Wird solch eine Datei nicht gefunden, dann nimmt awstats automatisch die Default-Konfiguartionsdatei dafür, die awstats.conf heißt.
Ein Wermutstropfen ist leicht zu beheben: Es werden keine Icons angezeigt! Das läßt sich schnell ändern durch einen Symlink. Dazu schreiben wir in das Wurzelverzeichnis unserer Website (meist ist das /var/www/) eine Symlink namens awstats-icon, der auf das Verzeichnis /usr/share/awstats/icon weist. Und schon sind die Icons nach einem Reload der Seite sichtbar.

Damit nun das Log auch automatisch alle 10 Minuten ausgewertet wird, hat Debian bei der Installation schon eine Cron-Datei erzeugt: /etc/cron.d/awstats . Das Problem dabei ist aber, daß sich zeigt, daß dieser Job zwar regelmäßig angestossen wird, sich aber keine Ergebnisse der Cron-Läufe in der Statistik zeigen. Die Ursache dafür liegt in den Rechten, die Apache2 den Log-Dateien gibt: Sie gehören root und der Gruppe adm, sollen aber von www-data gelesen werden. Die Lese-Schreibrechte lauten aber auf 640, was das Lesen nicht erlaubt.

Um sie lesbar zu machen, sollte dafür 644 verwendet werden. Dazu öffnet man am einfachsten mit einem Editor die Datei /etc/logrotate.d/apache2 und ersetzt in der 8.Zeile die Zahl 640 durch 644. Jetzt speichern – und von nun an wird tatsächlich alle 10 Minuten die Statistik ergänzt um die neuen Werte aus dem Log.

Es gibt noch eine ganze Reihe weiterer Aspekte von AWStats, die zu bearbeiten wären:

1. Es kann sein, daß sich die Log-Rotation und der Einsatz des Cronjobs so überschneiden, daß ein paar Log-Einträge verloren gehen. Um das zu verhindern, muß im Ablauf der Log-Rotation noch ein Aufruf von awstats erfolgen als sog. prerotate.

2. Man kann mittels AWStats auch mehrere Websites getrennt voneinander beobachten.

3. Sicherheitsfragen: Wie kann der Zugriff auf die Statistik am effizientesten beschränkt werden.