Analog ist eine Statistik-Software, zur Analyse von Webseiten Zugriffen, die unter Windows, Mac OS, GNU/Linux, und Unix läuft.

Logdateien analysieren mit Analog

Fast alle Webspace-Hoster bieten eine (grafische) Auswertung der Server Log Files an, die den Besucherverkehr und alle Zugriffe auf eine Website dokumentieren. Doch selten sind sie aussagekräftig: mal fehlen die Suchbegriffe der Suchmaschinen, meistens auch die fehlgeschlagenen Anfragen (404 - File not found). Oder die Diffenzierung der benutzten Browser ist nicht vorhanden. Auch kann man den Zeitraum der Auswertung nicht selber festlegen. Und die Grafiken geben selten etwas her.

Dabei kann man sich diese Auswertungen leicht selber erstellen und zwar genau in der Form und für den Zeitraum, die man braucht: mit dem kostenlosen Programm Analog von Stephen Turner. Das Gute daran: man kann alles so einstellen wie man will und es läuft ohne Webserver und Datenbank auf jedem Desktop.

Der 1,6 MB große Download enthält das Programm selbst und eine sehr ausführliche englische Dokumentation. Für den schnellen Start und zum Ausprobieren reicht die Standard-Konfiguration aus. Um alle Optionen nutzen zu können, ist die Doku unentbehrlich, braucht jedoch einige Stunden der Einarbeit. Für alles dazwischen sind hoffentlich meine folgenden Tipps & Tricks hilfreich.

Installation von Analog und erster Report

Mit dem Download von Analog erhält man eine zip-Datei, die in ein beliebiges Verzeichnis entpackt werden kann. Eine Installation ist nicht notwendig.

Nachtrag: Da Analog seit einigen Jahren nicht mehr aktualisert wurde, aber einige neue Browser (z.B. Google Chrome) und Betriebssysteme (z.B. die internetfähigen Handys wie das iPhone) dazu kamen, sollte man sich die neueste Version von analog.exe von C:Amie herunter laden und die offizielle Datei damit ersetzen.

Jetzt braucht man noch die aktuelle(n) Logdatei(en) einer Website, die vom Webserver des Webspace-Anbieters erstellt wurden und die man per FTP herunter lädt. Meist handelt es sich dabei um gz-gepackte Dateien namens logfileXXX.gz, access.log.XXX.gz oder ähnlich im Verzeichnis /logs, wobei XXX oft die Wochennummer der protokollierten Zugriffe auf die Website darstellt. Wer diese Logdateien dort nicht findet, muss seinen Hoster fragen. Erstellt wurden sie auf jeden Fall.

Bevor man Analog mit einem Doppelklick auf analog.exe startet, muss man den Namen der Logdatei(en) in die Konfurations-Datei analog.cfg (eine Textdatei) eintragen:

LOGFILE logfile.gz

Hat man mehrere Dateien zu untersuchen, kann man diesen Eintrag mehrfach, für jede Logdatei einzelnd verwenden oder Platzhalter benutzen.

LOGFILE logfile*.gz

Die Logdateien müssen vorher nicht entpackt werden, das macht Analog selber.

Das Ergebnis kommt recht schnell und steht in der neu angelegten Datei Report.html, eventuell aufgetretene Fehler sind in errors.txt festgehalten. Namen und Speicherort dieser Dateien sowie die Überschrift des Reports kann man in der Konfigurations-Datei beliebig ändern:

OUTFILE Report.html
ERRFILE errors.txt
HOSTNAME "Stichpunkt.de"

Alle anderen Angaben in der Konfiguration kann man zunächst unverändert stehen lassen. Wenn dieser Standard-Report jedoch nicht ausreicht, kann man beliebig viele Einträge in analog.cfg hinzufügen. Sie sind alle in der ausführlichen Dokumentation beschrieben, die sich im Unterordner \docs befindet. Ein guter Startpunkt der 43 HTML-Dokumente ist \docs\Readme.html.

Format der Logdateien - Hilfe, mein Report zeigt nichts an

Je nach verwendetem Webserver oder der Konfiguration des Hosters haben die Logdateien unterschiedliche Formate. Analog kennt einige von ihnen standardmäßig, aber längst nicht alle. So wird auch das Format der Logdateien des beliebten deutschen Webspace-Anbieters 1und1 / Puretec / Schlund / 1&1 ohne genauere Angaben nicht erkannt; die Reports bleiben leer.

Für diesen Hoster hat sich folgender Eintrag vor der LOGFILE-Angabe als passend erwiesen:

LOGFORMAT (%s - %u [%d/%M/%Y:%h:%n:%j %j] "%j %r %j" %c %b %v "%f" "%B"%j)

LOGFILE access.log.*

Was genau die Buchstaben bedeuten und wie sie für andere Provider mit gleichfalls unbekannten Logformaten genutzt werden können, steht in der Dokumentation. Dazu am besten den Readme-Index \docs\indx.html aufrufen, dort unter L LOGFORMAT wählen und selber experimentieren.

 

Reports in deutscher Sprache

Stört die englische Sprache in den Reports? Dann einfach folgende Zeile in die analog.cfg eintragen:

LANGUAGE GERMAN

oder

LANGFILE de.lng

Letzterer Eintrag macht bereits deutlich, daß alle Sprachdefinitionen in eigenen Dateien mit der Endung .lng fest gelegt sind, die sich im Verzeichnis \lang befinden. Es stehen zahlreiche Sprachen zur Verfügung, von am (= armenisch) bis yu (= serbisch). Wem die Übersetzungen nicht zusagen, kann die jeweilige Sprachdatei leicht ändern oder neue hinzufügen.

Welche Auswertungen möchte ich sehen?

Was der Standard-Report von Analog anzeigt ist noch längst nicht alles, was dieses Programm an Auswertungen bieten kann. Am besten lässt man sich zunächst einmal alle nur möglichen Reports anzeigen und entfernt dann diejenigen, die man nicht braucht. Eine vollständige Liste findet sich in der Dokumentation unter \docs\output.html. Wer nicht alle Einträge abtippen will, kann die Liste auch aus der ausführlichen Beispiels-Konfigurationsdatei \examples\big.cfg heraus kopieren.

Zu allen Reports kann man ON oder OFF angeben, je nachdem ob man diese Auswertung will oder nicht. So bedeuten zum Beispiel folgende Zeilen, daß man eine Tagesauswertung wünscht, eine Quartalsauswertung jedoch nicht:

DAILYSUM ON
QUARTERLY OFF
 

In welcher Reihenfolge sollen meine Auswertungen erscheinen?

Im Standard-Report von Analog stehen die Berichte nicht in der Reihenfolge, in der ich sie gerne hätte. Macht nichts, denn ich kann das ja selber fest legen. Hier ist meine Ordnung:

REPORTORDER xmWDdhrEkNfsoZpBbzticKI

Was die einzelnen Buchstaben bedeuten und welche Reports in meiner Auswertung nicht aufgeführt sind, kann man unter REPORTORDER in der Doku nachlesen.

 

Was möchte ich in meinen Reports nicht sehen?

In den Logdateien werden alle Anfragen an den Webserver protokolliert, also alle angeforderten Webseiten genau wie alle Bilder, Script- und CSS-Dateien. Das ist für die meisten Auswertungen auch gut so, aber in dem wichtigen Report REQUESTS will ich nur sehen, welche Seiten wie oft angefordert wurden. Darum schließe ich nur hier die Auswertung aller Bilder und JavaScripte aus, die PHP-Scripte jedoch generell ein:

REQEXCLUDE /pics/*
REQEXCLUDE *.js
# REQEXCLUDE *.js,*.css
PAGEINCLUDE *.php

Im obigen Beispiel ist die Zeile auskommentiert, in der neben den JavaScripts auch die CSS-Dateien bei der Requests-Auswertung ausgeschlossen werden. In den meisten Fällen würde das jedoch Sinn machen, nur bei mir nicht: ich kann so nämlich sehen, wie intensiv mein Style-Switcher verwendet wird.

Auch bei der Referrern, also der Anzeige der Seiten von denen die Besucher zu meiner Site kamen, schliesse ich einzelne aus, nämlich meine eigene Domain. Denn ich will ja nur wissen, von welchen fremden Sites ich Besuch erhalte und nicht die internen Verweise:

REFREPEXCLUDE http://www.stichpunkt.de*,http://stichpunkt.de*
REFSITEEXCLUDE http://www.stichpunkt.de*,http://stichpunkt.de*
 

Auflösung der IP-Adressen

Die meisten Logdateien protokollieren nur, von welcher IP-Adresse die Besucher kommen und wandeln diese nicht wieder in ihre lesbare Form, also in die Domain-Namen, um. Wenn ich aber wissen will, woher meine Besucher kommen, brauche ich genau diese Angaben.

Analog beherrscht, wenn im Online-Modus aufgerufen, eine DNS-Abfrage, die die IP-Adressen wieder auflöst. Dazu schreibe ich in meine analog.cfg folgende Zeilen, wobei alles, was in einer Zeile hinter der Raute # steht, ein Kommentar ist und nicht interpretiert wird:

DNSFILE dns.log
DNS WRITE
# DNS READ
DNSGOODHOURS 10000  # etwa 1 Jahr
DNSBADHOURS 336   # 2 Wochen

Die erste Zeile legt fest, in welcher Datei der zu einer IP-Adresse gehörende Domainname fest gehalten wird. Die zweite Zeile besagt, dass in Zukunft vor einer webweiten DNS-Suche zuerst in dieser Datei gesucht werden soll, dann ein DN-Server befragt und die Ergebnisse zu dieser Datei hinzu gefügt werden sollen. Die dritte, hier auskommentierte, Zeile verzichtet auf die webweite DNS-Abfrage und liest nur aus der oben angegebenen Datei.

Die DNS-Abfrage dauert sehr lange, und sehr lange heisst hier wirklich sehr lange. Wenn ich also offline arbeite oder nur einmal schnell einen Report verändern möchte, etwa im Auswertungs-Zeitraum, will ich nicht stundenlang auf das Ergebnis warten. Dann kommentiere ich ich die Zeile mit DNS WRITE kurzfristig aus, entferne dafür die Raute # vor DNS READ und erhalte das Ergebnis in wenigen Sekunden.

Die beiden letzten Zeilen sagen aus, dass gefundene DNS-Einträge für eine lange Zeit gültig bleiben, während nicht auflösbare IP-Adressen in relativ kurzem Abstand noch einmal geprüft werden sollen.

Tipp: Um die DNS-Abfragen deutlich (um das ca. 50fache!) zu beschleunigen, empfehle ich das auch in den Analog Helper Applications angegebene QuickDNS. Dieses Tool wird vor dem Erzeugen der Analog-Reports gestartet, wie ausführlich in der Dokumentation beschrieben. Allerdings kommt es bisher nicht mit gepackten Logdateien klar, man muss sie also selber entpacken. Man kann eben nicht alles haben....

Festlegung des Auswertungs-Zeitraumes

Die meisten Webspace-Anbieter liefern wöchentliche Logfiles in gz-komprimierter Form an, viele von ihnen auch tägliche Logs. Ich habe meine Konfigurations-Datei flexibel angelegt, so dass ich schnell den Auswertungszeitraum ändern kann. Denn oft möchte ich nur das Ergebnis des vergangenen Tages sehen, ein anderes Mal den letzten Monat, gelegentlich aber auch einen Blick auf das gesamte laufende Jahr werfen.

Im Folgenden meine Einstellungen für eine Website, die bei 1und1 liegt. Die meisten Zeilen sind auskommentiert, können bei Bedarf aber schnell aktiviert werden. Im Beispiel wird nur der heutige Tag ausgewertet (5. Tag der 24. Woche).

# LOGFILE access.log*
# LOGFILE access.log.0*
# LOGFILE access.log.1*
# LOGFILE access.log.2*
# LOGFILE access.log.20*
# LOGFILE access.log.21*
# LOGFILE access.log.22*
# LOGFILE access.log.23*
LOGFILE access.log.24.5*

Anmerkungen dazu: Der Stern * ist ein Platzhalter für alle folgenden Zeichen im Dateinamen, einschliesslich der Endung. Es können beliebig viele LOGFILE-Einträge in der Konfigurations-Datei stehen, sie werden alle berücksichtigt.

Alternativ kann man Analog auch genau angeben, welchen Zeitraum man analysiert haben will.

FROM 061201
TO 061224

Diese Angabe bringt Analog dazu, nur den Zeitraum vom 1. bis 24. Dezember 2006 auszuwerten. Will man nur einen einzelnen Tag haben, muss man ihn sowohl in FROM als auch in TO eintragen.

Welche Informationen kann Analog nicht liefern?

Analog und alle anderen seriösen Programme können nur die Daten auswerten, die die Logdateien hergeben. Das ist oft weniger, als wir (oder unsere Auftraggeber) gerne wissen würden. Das folgende Zitat stammt aus dem von mir ins Deutsche übersetzen Artikel Wie das Web funktioniert (How the web works) von Stephen Turner, dem Entwickler von Analog:

Was du erfahren kannst: Die einzigen Dinge, die du [aus den Log-Dateien] sicher erfahren kannst, sind die Anzahl der Anfragen an deinen Server, wann sie gemacht wurden, nach welchen Dateien gefragt wurde und von welchen Hosts die Requests kamen. Dann kannst du noch erfahren, was die Browser deiner Besucher von sich selbst und ihrem Betriebssystem behaupten und von welcher Seite sie angeben gekommen zu sein.

Was du nicht erfahren kannst: Du weisst nichts über die Identität deiner Besucher. Du weisst nicht, wie viele Besucher du genau hattest. Du kannst den Klickpfad der Besucher durch deine Website nicht verfolgen. Du weisst oft nicht, auf welcher Seite ein Besucher deine Website betritt und warum er dort landete. Du weisst nicht, wie und wo der Besuch deine Website verlässt und wohin er dann geht. Du weisst nicht, wie lange ein Besuch sich auf einer Seite aufhält. Du weisst nicht, wie lange sich ein Besuch insgesamt auf deiner Website aufhält.