2010-03-17

Lokale Installation von AWStats zur Auswertung von Webserver-Logdateien

Dieser Eintrag wurde aktualisiert: Zur aktuellen Version

Änderungen zur vorherigen Version

  • Erstellen eines Protokolls der Aktualisierung.
  • Sortierung der Logdatei vor der Auswertung.

Hintergrund

Nicht alle Webhosts verwenden Programme zur Apache-Server-Logdateianalyse, die:

  1. in einer (halbwegs) aktuellen Version installiert sind oder
  2. umfassende Auswertungen bieten.

Zusätzlich wird die Auswertung meist nur alle 24 Stunden aktualisiert.

Ziel

Ziel ist es, mit minimalem manuellen Aufwand, lokal auf dem Mac die aktuelle Apache-Server-Logdatei mit AWStats zu analysieren. Das Ergebnis ist, dass der Aufruf eines Skripts die aktuelle Server-Logdatei per FTP abruft, AWStats diese analysiert und die Auswertung im Browser automatisch angezeigt wird.

Was folgt, sieht zwar schlimm aus, geht aber sehr fix, ist nicht allzu schwierig und Änderungen beschränken sich weitgehend auf einen Ordner.

Voraussetzung

  1. MAMP herunterladen und installieren nach:
    /Applications/
  2. AWStats herunterladen, entpacken, Ordner in „awstats“ umbenennen und verschieben nach:
    /Applications/MAMP/cgi-bin/

Mit folgenden Versionen habe ich diese Anleitung getestet:

  • MAMP 1.8.4
  • AWStats 6.95
  • Mac OS X Snow Leopard 10.6.2

9 Schritte

  1. Terminal öffnen
  2. Pfad wechseln:
    cd /Applications/MAMP/cgi-bin/awstats/tools/
  3. AWStats konfigurieren:
    ./awstats_configure.pl
  4. Fragen beantworten:
    continue from this NON standard directory: Yes
    create new config file: Yes
    Profilname eingeben (z. B. „markusweimar.de“)
    bis zum Ende bestätigen
  5. Neu angelegte Konfigurationsdatei von AWStats öffnen (der Mittelteil des Dateinamens entspricht dem angegebenen Profilnamen):
    open -t /Applications/MAMP/cgi-bin/awstats/wwwroot/cgi-bin/awstats.markusweimar.de.conf
  6. Folgende Änderungen vornehmen (eventuell individuell anpassen) und anschließend speichern:
    LogFile="./access_log"
    DirData="."
    DNSLookup=1 # optional
  7. Folgendes Skript erstellen, anpassen und z. B. als awstats.command auf dem Desktop speichern:
    #!/bin/bash
    # Folgende Werte anpassen:
    HOST='ftp.beispiel.de'
    USER='Benutzer'
    PASSWD='Passwort'
    AWSTATSPROFILE='markusweimar.de' # Profilname von AWStats
    LOGDIR='log' # Pfad zum Ordner der Logdatei
    LOGFILE='access_log' # Dateiname der Logdatei
    LOGUPDATE='log.txt' # Log des Update-Verlaufs
    LOCALDIR='/Applications/MAMP/cgi-bin/awstats/wwwroot/cgi-bin/'
    
    open -ga /Applications/MAMP/MAMP.app/ # MAMP öffnen
    # Logdatei abrufen, analysieren, Auswertung anzeigen
    ftp -n $HOST<<EOFTP
    quote USER $USER
    quote PASS $PASSWD
    bin
    prompt off
    cd $LOGDIR
    lcd $LOCALDIR
    mget $LOGFILE
    quit
    EOFTP
    cd $LOCALDIR
    sort -s -b -t ' ' -k 4.9,4.12n -k 4.5,4.7M -k 4.2,4.3n -k 4.14,4.15n -k 4.17,4.18n -k 4.20,4.21n $LOGFILE > access_log_sorted # sortiert die Logdateieinträge (verhindert „korrupte Einträge“)
    perl awstats.pl -update -showdropped -showcorrupted -config=$AWSTATSPROFILE > $LOGUPDATE # auswerten
    #open $LOCALDIR$LOGUPDATE # zeigt das Protokoll der Aktualisierung im Texteditor an
    open http://localhost:8888/cgi-bin/awstats/wwwroot/cgi-bin/awstats.pl?config=$AWSTATSPROFILE # Auswertung anzeigen
  8. Obiges Skript per Terminal ausführbar machen (eventuell Pfad anpassen):
    chmod +x ~/Desktop/awstats.command
  9. awstats.command öffnen (z. B. per Doppelklick)

Nun sollten zwei Fenster angezeigt werden:

  1. ein Terminalfenster mit dem Skriptverlauf,
  2. ein Browserfenster mit der aktuellen Auswertung.

Das Sortier-Skript kommt von Sorting Apache Log Files, dessen Autor aber auch nicht weiß, woher es ursprünglich stammt…

Skript mit Quicksilver ausführen

Das Skript kann auch als awstats.sh gespeichert und z. B. mit Quicksilver geöffnet werden. Auf diese Weise wird beim Ausführen kein Terminalfenster angezeigt.

Skriptausführung automatisieren

Da Webserver-Logdateien meist wöchentlich archiviert werden, sollte das Skript mindestens einmal pro Woche ablaufen, damit lokal keine Datenlücken entstehen.

Wenn die Datei zum Beispiel in awstats.sh umbenannt wurde, kann die Skriptausführung mit cronnix automatisiert werden.

Im Skript können dann natürlich die letzten beiden Zeilen auskommentiert werden, sonst werden bei jeder Ausführung MAMP gestartet und die Auswertung im Browser geöffnet.