E-Toys








EMail an Thilo Brai


Zur Homepage










Log-Spitzel 0.9.4



Download circa 110 kB
LogSpitzel.zip


Die Logdateien
Die Filter
Die Sessions
Die IP-Auflösung teilweise neu
Die Flaggen
Das Kontextmenü neu
Der Dateien-Graph ganz neu
Sonstiges

Log-Spitzel ist ein Programm zur Logdateien-Auswertung von Web-Servern. Log-Spitzel liest CLF-Logdateien ein und zeigt sie in Tabellenform an. Die Besonderheit ist, dass die einzelnen Sessions der Besucher farblich markiert werden und man sich so leichter ein Bild über die Bewegungen auf dem Server machen kann.

Zur deutlicheren Anzeige können, ähnlich einer Datenbank, Ein-/Ausschlusskriterien angewendet werden.





Screenshoot von LogSpitzel



Die Logdateien

Log-Spitzel liest Dateien im NCSA-Common-Logfile-Format (CLF).

Die dekomprimierten Dateien sehen etwa so aus (gekürzt):
91.35.135.30 - - [01/May/2007:12:28:33 +0200] "GET /FastLink.h...
91.35.135.30 - - [01/May/2007:12:30:12 +0200] "GET /favicon.ic...
172.180.32.136 - - [01/May/2007:13:03:13 +0200] "GET /Record-1...
85.181.63.42 - - [01/May/2007:13:12:35 +0200] "GET /Record-1.4...
129.241.156.170 - - [01/May/2007:13:36:53 +0200] "GET /Record-...

Es können mehrere Log-Dateien auf einmal per Drag&Drop bei Log-Spitzel abgeliefert werden. Die Dateien werden dann den Dateinamen entsprechend sortiert und in dieser Reihenfolge eingelesen und – falls sie eine gz-Endung haben – dekomprimiert.

Die Spalten der Log-Dateien können über die Datei LogSpitzel.ini angepasst werden. Die Ini-Datei muss im gleichen Verzeichnis wie LogSpitzel.exe liegen und wird dann automatisch beim Programmstart eingelesen. Es ist eine Textdatei mit etwa folgendem Aufbau (Ausschnitt):

LogSpitzel-Datei             
-------------------------1&1-
LogFelder:                   
 IP           84    ip       
-              7             
Benutzer       7    user     
Datum Zeit   111    date     
Datei        150    file     
RCode         30    retcode  
Größe         40             
Domain        10    domain   
Referenzierer 70    referrer 
Programm     380    agent    
IP2           80             
LogFelderEnde                
-----------------------------
...                          

In der ersten Spalte stehen die Namen der Felder, die im Tabellenkopf der Programmtabelle benutzt werden. Wichtig ist, dass, wenn im Namen Zahlen verwendet werden, sie nicht durch ein Leer-/Tabzeichen abgesetzt sein dürfen, sonst wird die Zahl als Spaltenbreite eingelesen.

In der zweiten Spalte stehen die Spaltenbreiten der Tabellenzellen.

In der dritten Spalte stehen die Namen der Spalten, wie sie in den internen Programmfunktionen und den Ein-/Ausschließen-Filtern benutzt werden.

Für die internen Funktionen des Programms sind die Spalten ip und date besonders wichtig.

Die obige Ini-Datei verwendet das bei 1&1 gebräuchliche Format. Es unterscheidet sich von denen anderer Serverbetreibern dadurch, dass vor der referrer-Spalte eine Spalte domain eingefügt ist.

Bevor man den Log-Spitzel einsetzt, sollte man sich eine angepasste Ini-Datei erstellen, sonst können die Filter nicht vernünftig eingesetzt werden.

Tipp: Wer mit unterschiedlichen Logdateien arbeitet, kann sich verschiedene Ini-Dateien erstellen, die nur den Abschnitt LogFelder enthalten und kann die jeweils passende Ini-Datei zum Umschalten auf das Programmfenster ziehen.

Die Filter

Mit das Erste, was man ausfiltern will, sind wahrscheinlich die Bot-Zugriffe. Um sich einen Überblick zu verschaffen, welche Bots aktiv waren, kann man im Einschließen-Textfeld folgendes eingeben file LIKE *robots.txt*. Nach dem Aktivieren des Einschließen-Kontrollkästchens erhält man die Ansicht der Zugriffe auf die Datei robots.txt, und man kann in der Spalte Programm (agent) nach charakteristischen Zeichenfolgen für die Ausschlusskriterien suchen.

Die Asterix-Zeichen in *robots.txt* stehen für eine beliebige Zeichenfolge (inklusive keinen Zeichen). In der Log-Datei steht in diesem Feld eigentlich die Zeichenfolge "GET /robots.txt HTTP/1.1". In der file-Spalte werden die HTTP-Infos nur angezeigt, wenn es sich nicht um GET-Kommandos handelt.

Wollte man nach allen HTTP/1.0-Abfragen suchen, würde man also eingeben file LIKE *HTTP/1.0. Wollte man sich alle Zeilen ansehen, die nicht mit der GET-Funktion beginnen, würde man eingeben file NOTLIKE GET*. Auch bei den anderen Feldern, die Anführungszeichen (Zollzeichen) als Markierung für den Feldanfang und das Feldende benutzen, werden sie intern nicht bis zur Filterfunktion durch geleitet.

Vorsicht mit Filtern wie file LIKE *get* oder file LIKE *http* oder file LIKE *1.1* oder file LIKE *1.0*, man würde mehr Treffer erzielen als vielleicht beabsichtigt waren.

Um sich alle Aktivitäten eines bestimmten Tages anzusehen, kann man entweder im Einschließen-Textfeld eingeben date LIKE 01/May* oder im Ausschließen-Textfeld date NOTLIKE 01/May*. Das Ergebnis ist das gleiche. Man beachte, dass die eckigen Klammern der Log-Datumsangaben nicht angegeben werden.

Mit ip LIKE *.de kann man alle Hostnamen filtern, die aus Deutschland kommen. Die Domainnamen müssen aber mit der Option IP-Adressen auflösen angezeigt werden, sonst bewirkt die Filterregel nichts.

Hinweis: Die Einschließen-Filterregeln können aus dem Kontextmenüs der Tabellenfelder geholt werden:
• Rechtsklick auf das Feld,
• auswählen des Einfügen-Menüeintrags,
• anpassen der eingefügten Filterregel.

Wenn man eine Filterzeile nur kurzzeitig außer Kraft setzen will, kann man der Zeile einfach ein Semikolon voranstellen.

Hinweis: Die Ein- und Ausschlussfilterregeln können in Ini-Dateien in der Standardeinschlüsse- und  Standardausschlüsse-Abteilung dauerhaft gespeichert werden. Beispiel:

...                         
----------------------------
Standardeinschlüsse:        
;file LIKE *robots.txt*     
;ip LIKE *.de     
          
----------------------------
Standardausschlüsse:        
agent LIKE *Yahoo! Slurp*   
agent LIKE *Googlebot*      
agent LIKE msnbot*          
agent LIKE psbot*           
agent LIKE Seekbot*         
----------------------------
...                         

Die Sessions

Die Sessions werden in der Tabelle farbig hinterlegt dargestellt. Eine Session wird definiert durch eine IP-Nummer und eine Zeitdauer. Kommen von einer IP innerhalb einer bestimmten Zeit keine Anforderungen mehr, gilt die Session als beendet.

Interessiert man sich für die Session-Bedingungen einer bestimmten Datei, trägt man den entsprechenden Einschließenfilter ein und aktiviert zusätzlich das Kontrollkästchen ganze Session.

Die Sessionauszeit (1–120) kann in der SessionLimit-Zeile (Standard = 30) der Ini-Datei eingestellt werden:

...                         
----SessionLimit in Minuten-
----------------------------
SessionLimit      30        

----------------------------
...                         

Die IP-Auflösung

Nach dem Aktivieren des Kontrollkästchen IP-Adressen auflösen werden alle benötigten IPs kontrolliert und, falls das nicht schon früher geschehen ist, der Hostname aufgelöst. Das kann je nach Anzahl der aufzulösenden Adressen etwas dauern, wobei leider die Nummern, die gar nicht aufgelöst werden können, die meiste Zeit beanspruchen. Natürlich ist für diese Funktion ein Internetzugang erforderlich.

Während der Abfrage wird ein kleiner Dialog mit einem Abbrechen-Schalter eingeblendet. Der Schalter ist meist etwas zickig, reagiert aber zuverlässig, wenn man in klickt und die Maustaste gedrückt hält, bis die Nachricht zu ihm durchgedrungen ist.

Nachdem die Hostnamen verfügbar sind, erscheint, wenn der Hostname eine Länder-Top-Level-Domäne (ccTLD) hat, in der IP-Spalte der Hostname samt passender Nationalitätenflagge. Für Domänen wie com, net, info ... gibt es in der LogSpitzel.ini-Datei den Absatz AutomatischeLänderCodes, in dem die TLD Nationalitäten zugeordnet werden können. Beispiel:

...                                                   
----------------------------                          
AutomatischeLänderCodes:                             
ch  *.ch.*               das ist nur eine Vermutung! 
cn  *.cn.*               Beispiel: chinanet.cn.net    
de  *.de.*               das ist nur eine Vermutung!  
de  *.dip.t-dialin.net   Telekom-Adresse              
de  *.neomo.crawler.net  Francis                      
de  *.mediaWays.net      Telefonica Deutschland GmbH  
de  *.arcor-ip.net       Arcor                        
eu  cache-frr-*.proxy.aol.com AOL Internation...Europe
eu  *.ipt.aol.com                                    
se  *.picsearch.com      Picsearch AB Schweden        
us  *.crawl.yahoo.net    Yahoo                        
us  *.exabot.com         exabot                      
us  *.googlebot.com      Google                      
us  *.inktomisearch.com  Inktomi                      
us  *.search.live.com    search.live                  
AutomatischeLänderCodesEnde                          
----------------------------                          
...                                                   

Der Absatz kann manuell erweitert werden, wenn man Informationen zu Domänen oder IP-Blöcken hat, die eine Nationalitätenzuordnung ermöglichen.

Die automatisch ermittelten Hostnamen werden beim Beenden des Programms zusammen mit der IP in der Datei LogSpitzel.ip gespeichert. Wenn man über z. B. WhoIs-Dienste oder GeoIP selbst Domänen ermittelt hat, kann man sie ebenfalls in die Datei eintragen. Man sollte nur sicherstellen, dass Log-Spitzel gerade nicht läuft, weil er sonst beim Beenden, die händisch gemachten Einträge wieder überschreiben könnte.

Der Aufbau der LogSpitzel.ip-Datei ist sehr einfach. Zuerst kommt die IP-Adresse, dann eine Zahl (kodiertes Datum), dann eine Tilde oder eine TLD (de, at, eu, us ...) und zum Schluss der Zeile der Hostname oder eine IP (wenn der Hostname nicht ermittelt werden konnte; die IPs werden gespeichert, weil gerade sie bei der nächsten Abfrage wieder die meiste Zeit in Anspruch nehmen  würden).

Mehrere beieinanderliegende IP-Adressen können zu einem IP-Block zusammengefasst werden.  Als Hostname formuliert man dann einen Hostnamen mit Platzhalterzeichen. Platzhalterzeichen sind auch für die vielen dynamischen Hostnamen sinnvoll, wie z. B. von der Telekom (*.t-ipconnect.de, *.t-dialin.net) von Alice (*.alicedsl.de) oder 1&1 (*.einsundeins.de). 

Hat man erst mal einen Hostnamen mit Platzhalterzeichen definiert, erben alle nachfolgenden passenden Hostnamen den Platzhalternamen. Das heißt, dass beim nächsten Einlesen der Datei LogSpitzel.ip die neuen Namen benutzt werden.

Ergeben sich auf diese Art IP-Blöcke, werden sie beim nächsten automatischen Speichern als Blöcke geschrieben.





62.158.14.203             148407  de  *.t-ipconnect.de         
62.158.81.145             148288  de  *.t-dialin.net           
65.54.188.19-65.54.188.23 148434  us  livebot-*.search.live.com
72.30.177.76              148353  us  *.crawl.yahoo.net        
72.30.226.149             148290  us  *.inktomisearch.com      
77.176.16.23              148361  de  mnch-*.einsundeins.de    
77.56.80.154              148432  ch  *.hispeed.ch             



Man hat bei den Platzhaltername gewisse Spielräume, wie im obigen Beispiel bei der 1&1-Adresse. Lässt man das mnch für München dran, hat man die zusätzliche Info, dass der Besucher aus der Nähe Münchens kam. Andererseits muss man dann aber andere 1&1-IPs aus Berlin, Regensburg, Schwerin, Rostock, Hannover ... ebenfalls noch definieren.

Wem die Datei LogSpitzel.ip mit der Zeit zu groß wird, kann sie z. B. in einer Textverarbeitung in eine Tabelle umwandeln, nach der Zeit (2. Spalte) sortieren, und die ältesten Zeilen (kleinsten Zahlen) raus schmeißen. Aber bitte, Sicherheitskopie anlegen, falls beim Bearbeiten etwas schief läuft.

Die Flaggen

Die Nationalitätenflaggen kommen aus der Datei Flaggen.bmp. Zusammen mit der Datei Flaggen.txt werden die TLDs der Hostnamen oder die händisch in LogSpitzel.ip eingetragenen ccTLDs in einen XY-Offset in die Bitmap-Datei umgerechnet.

Wer will, kann eigene Flaggen eintragen/anhängen. Dazu malt man zuerst in der Flaggen.bmp-Datei eine neue Flagge und trägt dann in der Datei Flaggen.txt die entsprechende TLD ein. Die TLD muss mit einem Kleinbuchstaben beginnen und kann dann einen weiteren Kleinbuchstaben oder eine Zahl haben. Für eigene Kreationen empfehlen sich Kombinationen wie a0, a1, ... z8, z9, weil, wenn sich morgen oder übermorgen Bayern doch noch abspaltet, müsste wahrscheinlich Weißrussland sein by abgeben und sich eine andere Länderkennung suchen, die dann womöglich mit einer erfundenen kollidiert.

Ach ja, die Flagge für aq Antarktis ist natürlich auch erfunden. Ansonsten noch ein Dankeschön an markfennell.com der mir mit seinen Flaggen einig Arbeit erspart hat.

Das Kontextmenü

Klickt man mit der rechten Maustaste auf ein Feld der Tabelle, bekommt dann ein Kontextmenü angezeigt. Damit lassen sich schnell ein paar Optionen für die Einschließen-Filterliste zusammenklicken. Die Zeichenketten für die Vergleichsfunktion müssen aber noch angepasst (mit Platzhalterzeichen versehen werden).

Der Punkt Dateien-Graph öffnet ein Fenster in dem die Zugriffe auf verschiedene Dateien über die Zeit angezeigt wird (siehe folgenden Abschnitt Der Dateien-Graph). Wenn man das Kontextmenü auf einem Datei(file)-Feld öffnet, wird automatisch die Statistik für diese Datei vorgewählt. 

Die Option Sessions zusammenhalten gruppiert die Zugriffe so, dass alle Folgezugriffe einer Session aufgelistet werden, bevor die Zugriffe der nächsten Session beginnen. Die exakte zeitliche Abfolge der Zugriffe unterschiedlicher Sessions kann dadurch aufgehoben werden.

Mit dem Menüeintrag Bekannte Domainnamen anzeigen öffnet man eine Liste, mit den bisher aus der Datei Logspitzel.ip bekannten und automatisch ermittelten Hostnamen. Die Liste ist sortiert und zwar vom Wortende nach vorne. So lassen sich schnell alle gleichartigen Hostname entdecken, die man durch einen Hostnamen mit Platzhalterzeichen zusammenfassen könnte. 

Außerdem findet man so schnell die exotischen bzw. unerwarteten Web-Passanten aus Argentinien, Japan, Norwegen, Tschechien, Thailand, Mexiko, Taiwan, Uruguay, Litauen ... die sich aber meist nur bei Google verklickt haben.

Mit dem Punkt Adressblöcke anzeigen kann man sich die bekannten Adresse auflisten lassen. Mit der Auswahlliste kann man unter den verschiedenen CIDR(Classless Inter-Domain Routing)-Blöcken auswählen. CIDR 32 steht für Einzeladressen (32-Bit-Adressen).

Der Dateien-Graph

Über das Kontextmenü lässt sich das Fenster Dateien-Graph öffnen. In den Dropdownlisten sind die verfügbaren Dateien entsprechend ihrer Häufigkeit aufgelistet. Mit den beiden Datumsschiebereglern wird das Start- und Enddatum der Graphen eingestellt. Mit dem Auswerten-Schalter startet man die Auswertung und Anzeige.

Die tagweise Aufschlüsselungen ist vor allem nützlich, um Ausreißer zu entdecken, die in den summarischen Statistiken von z. B. Webalizer nicht auffallen. So gibt es immer wieder wildgewordene Downloader, die einzelne Dateien innerhalb weniger Sekunden 97 Mal downloaden ... mhh ... ja gut, wie interessant auch immer das sein mag, es ist nicht die Regel...

Eine einfache Möglichkeit diese Mehrfachzugriffe aus der Statistik zu bekommen, ist bei den Ausschlussfilterregeln im Hauptfenster ein retcode NOTLIKE 200 einzufügen.

Noch mehr Übersicht erhält man eventuell, wenn man als Einschließen-Regel file LIKE *.zip* und file LIKE *.htm* eingibt. Das filtert alle Bilder, Icons und sonstigen Sachen raus. Wie die Ein-/Ausschluss-Regeln aussehen sollten, bzw. wie sinnvoll sie sind, ist natürlich abhängig vom Inhalt und Zweck der Homepage. 

Hinweis: Die Suchzeichenfolgen der Dropdown-Listen können geändert werden. Gibt man z. B. *.htm* und/oder *.zip* ein, erhält man die Tagesstatistik der HTML- bzw Zip-Dateien. Mit einem einfachen * bekommt man die Tageszugriffe aller Dateien angezeigt.

Sonstiges

• Mit dem ? Web-Schalter kommt man auf diese Seite.

• Ini-Dateien können auch nachträglich geladen werden: Einfach den normalen Öffnen...-Schalter klicken und statt einer Log-Datei eine Ini-Datei öffnen oder eine Ini-Datei auf das Programmfenster ziehen.

• LogSpitzel ist eher für übersichtliche Datenmengen ausgelegt. Wenn die Wartezeiten bei Zig-MByte-Dateien zu lang werden, sollte man die Möglichkeit ist Auge fassen, die Logdateien in kleinere Teile zu unterteilen.

• Bei viel Betrieb auf der Domain, kann es sein, dass die sieben Farben, zum Unterscheiden der Sessions nicht mehr ausreichen. Das ist immer dann der Fall, wenn zur gleichen Zeit mehr als sieben Besucher aktiv sind. Da hilft dann nur noch, die Datensätze über die Kontextmenüfunktion Sessions zusammenhalten zu gruppieren oder die IP-Nummern mit angepassten Filteroptionen zu reduzieren. 

Man kann auch versuchen im Colors-Abschnitt der Ini-Datei weitere Farben zu definieren, um Übersichtlichkeit herzustellen. Es können maximal 16 Farben definiert werden. Die Summe der einzelnen R-, G- und B-Werte muss über 400 liegen, damit die jeweilige Farbe eine gewisse Grundhelligkeit erreicht.

• Hier noch das Beispiel einer Ini-Datei für FTP-Logs:

LogSpitzel-Datei             
---------------------1&1-ftp-
LogFelder:                   
 IP          120    ip       
-              7             
Benutzer      80    user     
Datum Zeit   112    date     
Datei        200    file     
RCode         30    retcode  
Größe         50             
LogFelderEnde                
-----------------------------

Die Zeilen einfach kopieren und als FTP.ini speichern. Zum Anwenden ins Log-Spitzel-Fenster ziehen und anschließend die FTP-Logs ins Fenster ziehen.

• Für mich selbst war Log-Spitzel sehr neugierbefriedigend, allerdings auch etwas ernüchternd. Wurde doch schnell klar, dass öfter mal mehr Zip-Download-Roboter als humanoide Leserschaft unterwegs ist. Über die Sinnhaftigkeit einiger Web-Automaten, Zip-Archive innerhalb weniger Sekunden fünf Mal und öfter runterzuladen, enthalte ich mich jeden Kommentars ... außer vielleicht: doppelt hält eben besser.

• Anregungen, Thanks und Fehlerberichte bitte an Thilo Brai.








Zum Seitenanfang


Zur Homepage