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.