Logfile Tools

Kommandozeilen-Tools für die Auswertung großer Logdateien

Was haben Webmaster mit Mathematikern gemeinsam? Natürlich das Interesse an Statistiken; insbesondere die Besucherstatistiken des eigenen Blogs, an denen der Erfolg der Selbstdarstellung gemessen werden kann. Dies ist oft der einzige Antrieb, der den engagierten Webmaster, Redakteur und Pressereferenten in Personalunion zum Weitermachen antreibt.

Wenn der Erfolg nicht ausbleibt, steht der Betreiber bald vor Gigabyte umfassenden Logdateien, die einfach nicht mehr handlebar sind. Google Analytics ist im kommerziellen Umfeld ausgeschlossen, da Daten ohne Zustimmung der Besucher nicht in die USA übertragen werden dürfen. Dies geschieht aber bereits beim Aufruf der ersten Seite einer Internetpräsenz.

Was tun?

Logfile Tools

Mit den Logfile Tools sind Sie in der Lage, Standard-Logdateien des Apache Webserver in auswertbare Stücke zu schneiden, zu verbinden, zu sortieren und vieles mehr.

Bei den Logfile Tools handelt es sich um 32-bittige Kommandozeilenprogramme, die unter Windows XP bis Windows 10 ausführbar sind. Damit ist das Werkzeug "SortLog" leider auf einen Speicherraum von 4 Gigabyte beschränkt. Mehr dazu später.

Um die Logfile Tools zu verwenden, kopieren Sie diese einfach zu Ihren Logdateien, oder in den Systempfad.

SplitLog.exe

Um eine Logdatei von mehreren Gigabyte zu bearbeiten ist meistens mehr Arbeitsspeicher notwendig, als man eingebaut hat (Murphy's Law #683).

Mit SplitLog können Sie eine einzelne Logdatei in kleine Happen zu je "n" Zeilen aufteilen.

SplitLog.exe dateiname.log 10000

teilt eine Logdatei beliebiger Länge namens "dateiname.log" in Einzelteile zu je 10.000 Zeilen auf. Die Originaldatei bleibt unverändert.

ConcatLog.exe

erzeugt aus mehreren Dateien eine zusammenhägende Logdatei, ist also der Gegenpart zu SplitLog. Es ist unbedingt darauf zu achten, daß ConcatLog die Dateien in alphabetischer Reihenfolge bearbeitet! Linux' Logrotate erstellt die Dateinamen der archivierten Logs allerdings in umgekehrter Reihenfolge: access.log.gz.1 liegt zeitlich also nach access.log.gz.2! Um dieses Problem zu beheben, blättern Sie bitte zum Programm "ReverseRename.exe" weiter.

ConcatLog.exe access.* access_komplett.log

alle Dateien der Dateimaske access.* in eine große Logdatei access_komplett.log.

ExtractLog.exe

Sucht man in einer umfangreichen Logdatei nach einem bestimmten Zugriff, dessen Uhrzeit man kennt, erlaubt ExtractLog, einen zeitlich umgrenzten Bereich einer Logdatei für die weitere Bearbeitung auszuschneiden. Es wird nach einer IP-Adresse oder einem Hostnamen gesucht (es wird aber keine Namensauflösung durchgeführt!)

Die Ausgabe erfolgt auf der Konsole und kann mit dem ">"-Operator in eine Datei umgeleitet werden.

Folgende Parameter können angegeben werden:

--h hostname: Gesuchter Hostname , notwendiges Argument.
--from "date/time":
--to "date/time":
    Datum und Uhrzeit von und bis im Format: "YYYY-MM-DD HH:MM".
    Bitte verwenden Sie Anführungszeichen. Die Uhrzeit ist ein notwendiges
    Argument.

--around "datum/uhrzeit":
-ts minuten:
    Diese beiden Optionen sind alternativ zu --from und --to und sollten
    nicht zusammen verwendet werden. Der Parameter --around wird im Format
    "YYYY-MM-DD HH:MM" angegeben. Minuten muß als Ganzzahl angegeben werden.

SortLog.exe

SortLog.exe ist das vermutlich beste Tool für die Archivierung von Logdateien. Es liest eine Zahl von Logdateien ein und sortiert deren Inhalte nach Monaten in Unterdateien. Die Originaldateien bleiben unverändert.

Für die Sortierung nach Datum/Uhrzeit muß SortLog die einzelnen Zeilen der Logdateien einlesen und zumindest den Inhalt eines kompletten Monats im Arbeitsspeicher halten. Dabei ist der Speicher auf 4 Gigabyte beschränkt - und zwar unabhängig davon, wieviel Arbeitsspeicher Sie in Ihrem Computer eingebaut haben! (32-bit-Software!)

Um möglichst effizient zu arbeiten, schaut SortLog zunächst durch die Logdateien und berechnet deren kleinstes und höchstes Datum. Für die jeweiligen Monate werden im zweiten Sortierungsdurchgang nur diejenigen Logdateien behandelt, die für den jeweiligen Monat relevante Daten enthalten.

Als Eingangs-Dateien werden alle Dateien im aktuellen Verzeichnis herangezogen, die mit dem Wort "access" beginnen. Als Ausgabe erstellt SortLog.exe pro Monat eine Datei nach dem Schema: access.YYYY.MM.log.

SortLog.exe kommt somit ohne Parameter aus.

FilterLog.exe

Es ist oft sinnvoll, Zugriffe von Suchmaschinen aus der Statistik auszuklammern. Dies übernimmt FilterLog.exe für Sie.

Achtung! FilterLog arbeitet destruktiv!

FilterLog liest zunächst eine Datei namens filter.dat zeilenweise ein.

Sodann werden die aus dem Wildcard-Parameter erkannten Dateien nacheinander eingelesen und aller Zeilen beraubt, in denen eines der in der filter.dat enthaltenen Suchbegriffe vorkommt, z.B. "GoogleBot", "Bing" etc.

In diesem Prozess gehen die Originaldateien verloren. Da FilterLog aber ursprünglich in einer Kaskade gemeinsam mit SortLog verwendet wurde, welches Duplikate der Quelldateien erstellte, wurde dieses Verhalten niemals geändert.

ReverseRename.exe

In der Unix-Umgebung kommt das Werkzeug "Logrotate" zum Einsatz, welches in regelmäßigen Abständen Logdateien komprimiert und archiviert. Archivierte Dateien bekommen dann die Endung ".gz.1" mit fortlaufenden Nummern. Dabei werden ältere Logdateien mit höheren Zahlen versehen. Um solche Dateien mit ConcatLog.exe in der korrekten Reihenfolge zu einer großen Datei zu verbinden, kann man das Tool ReverseRename verwenden.

Hat man zum Beispiel die Logdateien "access_log.gz.1" bis "access.log.gz.10", genügt die Eingabe von:

ReverseRename.exe access.*

um die Dateien in umgekehrter Reihenfolge umzubenennen, ohne die Uhrzeiten in den Logdateien chronologisch durcheinanderzubringen.

LogTools herunterladen