Logfile-Analyse mit dem ELK-Stack

Vorwort – Logfiles & SEO

Ich verwende iTerm als Konsole (zsh), Homebrew als Paketmanager und macOs als Betriebssystem.Logstash, ElasicSearch und Kibana liegen in der Version 6.2.3. vor.  

  • Server-Logfiles sind eine Art Mitschrift aller Aktivitäten, die auf einem Server ablaufen. Bei Webservern werden beispielsweise alle Aufrufe einer Website mitgeschrieben bzw. protokolliert. 
  • Es handelt sich hierbei also nicht nur um Zugriffe eines Nutzers, sondern auch um die der Bots von Suchmaschinen. Damit Google immer die aktuellste Version einer Website vorliegt, muss diese in mehr oder weniger regelmäßigen Abständen gecrawlt werden. 
  • Durch die Zugriffszahlen von Bots auf die eigene Website können somit Informationen gewonnen werden, die für die Suchmaschinenoptimierung genutzt werden können. Besucht ein Bot eine bestimmte Unterseite einer Website weniger
    häufig als andere, kann dies beispielsweise als Indiz für die Relevanz dieser Seite gesehen werden.
  • Außerdem bestätigte Google den Umstieg auf den „mobile first Index“ noch innerhalb dieses Jahres durchführen zu werden. Eine Logfile-Analyse kann Aufschluss über diesen Wechsel geben. 
  • Das Ziel dieser Logfile-Analyse ist also einerseits ein Grundlegendes Verständnis für das Verhalten von Suchmaschinen-Bots herzustellen und andererseits den Wechsel auf den mobile first Index sichtbar zu machen. 

Voraussetzungen & Installation

Wir verwenden hierzu aus dem Elastic Stack die via Open Source zur Verfügung gestellten Technologien Logstash, Elasticsearch und Kibana

Logfiles unterscheiden sich in Struktur und Aufbau aufgrund der unterschiedlichen Arten von Webservern. Die gängigsten hierbei sind Apache und nginx. 

Als grundlegende Voraussetzung müssen also die Logfiles vorliegen, welche i.d.R. vom Hosting-Anbieter zur Verfügung gestellt werden. In einem anderen Blogbeitrag erläutere ich wie man mit Problemen bei der Bereitstellung von Logfiles umgeht.

Für die Installation von Logstash, Elasticsearch und Kibana verwenden wir den Paketmanager homebrew. Der Befehl zur Installation der drei Komponenten lautet:

brew install logstash 

brew install elasticsearch

brew install kibana

Unter macOs werden diese unter 

/usr/local/Cellar

installiert. 

Zum Starten der Anwendungen wird folgender Befehl eingegeben: 

brew services start logstash 

brew servces start elasticsearch

brew services start kibana

Logs mit Logstash in Elasticsearch schieben

Damit Logstash die Logfiles korrekt in die Datenbank schieben kann, müssen in der Konfigurationsdatei entsprechende Änderungen vorgenommen werden. Sie befindet sich bei macOs in 

/usr/local/Cellar/logstash/6.2.3/libexec/config/<datei>.conf

Die Konfigurationsdatei ist, grob zusammengefasst, in drei Bereiche aufgeteilt: 

  • Input:
    • Hier wird u.a. die Quelldatei angegeben, also der Pfad wo das Logfile liegt
  • Filter:
    • Quasi das Herzstück von Logstash. Hier werden die Felder festgelegt, die in dem Logfile zur Verfügung  stehen. Je nach Webserver unterscheiden sich hier die
      Felder
  • Output:
    • Hier wird das Ziel angegeben wo das geparste logfile hingeschickt werden soll. Zusätzlich wird angegeben wie der Index heißen soll in dem die Daten gespeichert werden.
      (Selbstverständlich kann Logstash die Daten nicht nur in die Elasticsearch, sondern an sämtlich andere Orte schicken)

Idealerweise findet man im Netz eine für den jeweiligen Webserver entsprechende config-Datei. Anderenfalls muss man sich in das Thema etwas tiefer einlesen, da die Funktionsweise der Filter im ersten Moment nicht so einfach zu verstehen ist. 

Ist die config-Datei eingerichtet, kann das Logfile mit folgendem Befehl in die Elasticsearch geschoben werden: 

/usr/local/Cellar/logstash/6.2.3/bin/logstash –f /usr/local/Cellar/logstash/6.2.3/libexec/config/<datei>.conf  

(Eine Auflistung und Erklärung der Parameter/Optionen von Logstash (z.B. „-f“) erhält man mit „–help“)

Zur Kontrolle und Fehlerquellensuche liefert die Konsole den entsprechenden Output. Hat alles soweit geklappt, geht es im  nächsten Schritt mit Kibana weiter. 

Kibana

Kibana dient zur Visualisierung der Daten, die in Elasticsearch liegen. Sofern Kibana über den Befehl oben erfolgreich gestartet wurde, lässt sich nun im Browser über die Adresse

localhost:5601 

das User-Interface zu Kibana öffnen. 

  • Unter dem Menü-Punkt „Management“ finden wir die Option „Index Patterns“.
    Hier müssen wir den nach dem im config-File erstellen Index suchen, auswählen und das Setup mit „Next step“ fortführen bzw. beenden. 
  • Wurde das Index Pattern erfolgreich erstellt, kann man nun unter dem Menü-Punkt „Discover“ zuerst den entsprechenden Index auswählen und dann idealerweise die ersten Daten sehen. 

Achtung: Sehr oft hängen Probleme mit dem ausgewählten Zeitraum (oben rechts) zusammen. Standardmäßig ist „Last 15 minutes“ ausgewählt, was bei Logfiles, die bspw. eine Woche alt sind,
logischerweise zum Ergebnis „No results found“ führt.