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.