Handling Logfiles

  • Text Hover


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. 

  • Starten von Logstash, Elasticsearch und Kibana über homebrew
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:
  • Starten von Logstash, Elasticsearch und Kibana über homebrew
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:
  • Starten von Logstash, Elasticsearch und Kibana über homebrew
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. 

Fragen?


Falls Sie Fragen haben kommen Sie gerne per Mail auf mich zu.