Zum Inhalt springen

Handling Logfiles

    Ich verwende iTerm als Konsole (zsh), Homebrew als Paketmanager und macOs als Betriebssystem. 

    Mein Hosting-Anbieter stellt mir Logfiles der jeweils letzten 30 Tage zur Verfügung. Sie werden in 24h-Blöcke aufgeteilt, das heißt es steht für jeden Tag ein separates, gzip-Komprimiertes File zur Verfügung. 

    Lädt man die Dateien in die lokale Umgebung herunter, können sie anschließend per Kommandozeilen-Befehl extrahiert werden: 

    gunzip -dk *.gz

    Die extrahierten Dateien liegen theoretisch anschließend als normale Log-Dateien (*.log) vor. Aufgrund der Aufteilung in Blöcke verfügen sie allerdings noch über eine Dateiendung, die uns Probleme bereitet:

    Um die Dateien mit der richtigen Datei-Endung *.log zu erhalten, habe ich ein Python-Script geschrieben, welches mühsame Handarbeit abnimmt. Es benennt die Dateien so um, dass wir die Reihenfolge
    (also die Zahlen) beibehalten, allerdings die korrekte Dateiendung
    erhalten. 

    import os 
    
    path = „/Pfad/zu/den/Logfiles“
    files = os.listdir(path)
    print files 
    i = 2
    for file in files: 
     os.rename(os.path.join(path,file), os.path.join(path, str(i)+“.log“))
     i= i+1

    Es wird im Terminal mit dem Befehl

    python dateiname.py 

    ausgeführt und liefert folgendes Ergebnis:

    Nun können wir die Dateien zusammenführen. Dazu geben wir einfach folgenden Befehl in das Terminal ein: 

    cat *.log >> biglogfile.log

    Ergebnis

    Es liegt nun ein Logfile-Dokument mit Daten aus den letzten 30 Tagen vor. 

    Dieses können wir nun verwenden, um es über Logstash in die Elasticsearch zu schieben.