2010-02-23

Lokale Installation von AWStats zur Auswertung von Webserver-Logdateien

Dieser Eintrag wurde aktualisiert: Zur aktuellen Version

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 Server-Logdatei mit AWStats zu analysieren. Das Ergebnis ist, dass der Aufruf eines Skripts die aktuelle Apache-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

10 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
    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
    perl awstats.pl -update -config=$AWSTATSPROFILE # auswerten
    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.

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 in awstats.sh umbenannt wurde, kann das Skript komfortabel mit cronnix regelmäßig ausgeführt werden:

  1. Skriptdatei ins cronnix-Fenster ziehen,
  2. im Feld „Command“ den Text /usr/bin/open entfernen,
  3. Ausführungszeitplan festlegen.

Für eine stündliche Ausführung zum Beispiel:

0 * * * *

Eine genaue Beschreibung dieser Syntax ist in der Hilfe von cronnix zu finden.

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

Achtung: Ist der Rechner zum eingestellten Zeitpunkt ausgeschaltet, wird das Skript nicht ausgeführt.