Zum Inhalt springen

AWStats einrichten und Logs richtig lesen

Logfile-Analyse ohne JavaScript: Installation, regelmässiger Lauf, Bot-Filter und die Kennzahlen, die tatsächlich etwas aussagen.

Zuletzt geprüft: Gedacht für: serverseitige Auswertung

Das Wichtigste

  • Logfile-Analyse zählt jeden Zugriff, auch von Clients ohne JavaScript. Deshalb liegen die Zahlen systematisch über denen einer Tag-basierten Messung.
  • Ohne Bot-Filter ist die Hälfte der Zugriffe automatisiert. Die Roh-Zahl ist keine Besucherzahl.
  • AWStats braucht einen regelmässigen Lauf über die aktuellen Logs – nach der Rotation sind alte Einträge nicht mehr nachverarbeitbar.
  • Hits, Seitenaufrufe und Besuche sind drei verschiedene Dinge. Nur die letzten beiden sagen etwas über Nutzung aus.

Logfile-Analyse ist die ältere Methode der Reichweitenmessung und in einem Punkt bis heute überlegen: Sie sieht jeden Zugriff, unabhängig davon, ob JavaScript ausgeführt wurde. Genau das macht sie zur richtigen Ergänzung, wenn man wissen will, was Crawler auf der Seite tun.

Installation und Konfiguration

apt install awstats

Pro Domain eine Konfigurationsdatei unter /etc/awstats/awstats.example.com.conf:

LogFile="/var/log/apache2/example.com-access.log"
LogType=W
LogFormat=1
SiteDomain="example.com"
HostAliases="www.example.com localhost 127.0.0.1"
DirData="/var/lib/awstats"
DirIcons="/awstats-icon"

# Auswertungen, die sich lohnen
ShowRobotsStats=1
ShowHTTPErrorsPageDetail=1
ShowLinksOnUrl=1

LogFormat=1 entspricht dem combined-Format von Apache. Wer ein eigenes Format definiert hat, muss es hier nachbauen – sonst verarbeitet AWStats null Zeilen und meldet trotzdem Erfolg.

Regelmässiger Lauf

# /etc/cron.d/awstats
5 * * * * www-data /usr/lib/cgi-bin/awstats.pl -config=example.com -update >/dev/null

Stündlich ist der sichere Rhythmus. Der Grund ist die Logrotation: AWStats verarbeitet nur, was seit dem letzten Lauf dazugekommen ist. Rotiert das Log um Mitternacht und AWStats läuft erst um 6 Uhr, sind die Einträge der Nacht weg.

Prüfen, ob es tatsächlich läuft:

ls -la /var/lib/awstats/
# awstats082026.example.com.txt sollte aktuell sein

Bots herausrechnen

Ohne Filter besteht ein erheblicher Teil der Zugriffe aus automatisiertem Verkehr: Suchmaschinen, SEO-Werkzeuge, Sicherheitsscanner, Vorschaudienste, KI-Crawler. AWStats bringt eine Erkennungsliste mit, die aber nur so gut ist wie ihre Pflege.

Ergänzen lässt sie sich in der Konfiguration:

# eigene Bot-Muster, die die Standardliste nicht kennt
LevelForRobotsDetection=2

Direkt im Log nachsehen lohnt sich ohnehin:

# die häufigsten User-Agents
awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -rn | head -25

# IPs mit auffällig vielen Zugriffen
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -25

# Zugriffe pro Minute einer verdächtigen IP
grep '203.0.113.77' access.log | awk '{print substr($4,2,17)}' | uniq -c | head

Die dritte Abfrage trennt zuverlässig: Ein Mensch erzeugt einige Aufrufe pro Minute, ein Crawler dreistellige Zahlen.

Die Kennzahlen richtig lesen

BegriffBedeutung
Hitsjede angeforderte Datei, inklusive Bildern und Stylesheets
SeitenAnforderungen, die AWStats als Seite wertet (HTML, PHP)
BesucheFolge von Zugriffen einer IP mit weniger als 60 Minuten Pause
Eindeutige Besucherverschiedene IP-Adressen im Zeitraum
Bandbreiteübertragene Datenmenge

Hits sind keine Besucherzahl. Eine Seite mit 40 Bildern erzeugt bei einem Aufruf über 40 Hits. Die Zahl steigt, wenn jemand mehr Bilder einbaut, und sagt nichts über Reichweite.

Eindeutige Besucher über IP sind eine Näherung. Ein Firmennetz mit hundert Mitarbeitern hinter einer IP zählt als ein Besucher. Ein Mobilnutzer, dessen IP sich unterwegs ändert, als mehrere.

Nützlich sind vor allem die Auswertungen, die andere Werkzeuge nicht liefern:

  • HTTP-Fehler mit Detailseite. Welche URLs erzeugen 404? Das ist die Liste, aus der Weiterleitungen entstehen.
  • Robots-Statistik. Welcher Crawler holt wie viel? Wenn ein einzelner Bot mehr Bandbreite zieht als alle Besucher zusammen, ist das eine Entscheidung wert.
  • Dateitypen und Bandbreite. Wo geht das Volumen hin – oft in unoptimierte Bilder.

Zugriff auf die Auswertung schützen

Die Statistik verrät viel über Struktur und Nutzung der Seite. Sie gehört hinter einen Verzeichnisschutz:

<Location "/awstats">
  AuthType Basic
  AuthName "Statistik"
  AuthUserFile /var/www/secure/.htpasswd
  Require valid-user
</Location>

Die statische Variante ist noch sicherer: AWStats erzeugt HTML-Dateien, die gar nicht im Web liegen müssen.

/usr/lib/cgi-bin/awstats.pl -config=example.com -output -staticlinks \
  > /var/reports/example.com-$(date +%Y-%m).html

Damit läuft kein CGI-Skript im Web, und die Auswertung liegt als Datei vor, die per SSH abgeholt wird.

Ergänzung, kein Ersatz

Logfile-Analyse und eine Tag-basierte Messung beantworten verschiedene Fragen. Die Logs sagen dir, was am Server ankommt – inklusive Crawler, blockierter Skripte und Fehlerseiten. Ein Analyse-Tag sagt dir, was Nutzer im Browser tun – Scrolltiefe, Klickwege, Interaktionen.

Wer Bot-Verkehr, Fehlerseiten oder Bandbreitenverbrauch verstehen will, kommt am Log nicht vorbei. Wer Nutzerverhalten verstehen will, am Tag nicht.

Häufige Fragen

Warum zeigt AWStats mehr Besucher als mein Analyse-Tag?

Weil beide Verschiedenes messen. Die Logfile-Analyse zählt jeden Serverzugriff, auch von Bots und Clients ohne JavaScript. Ein Tag-basiertes Werkzeug zählt nur, wo das Skript ausgeführt und nicht blockiert wurde. Beide Zahlen sind richtig und nicht vergleichbar.

Wie oft muss AWStats laufen?

Mindestens einmal täglich, besser stündlich. Der Lauf verarbeitet die seit dem letzten Mal hinzugekommenen Zeilen. Wenn die Logrotation dazwischenkommt und die alte Datei komprimiert oder löscht, fehlen die Einträge dauerhaft.

Wie erkenne ich Bots im Log?

Über den User-Agent, über auffällige Muster wie hunderte Aufrufe pro Minute aus einer IP, und über Zugriffe auf Pfade, die kein Mensch aufruft. AWStats bringt eine Bot-Liste mit, die aber gepflegt werden muss – neue Crawler tauchen ständig auf.

Ist Logfile-Analyse datenschutzfreundlicher?

Sie setzt keine Cookies und braucht kein Skript im Browser. IP-Adressen fallen aber trotzdem an, weil der Webserver sie protokolliert. Wer sauber arbeiten will, kürzt sie beim Schreiben oder verkürzt die Aufbewahrung der Logs.