Logs mit Logstash unter Windows parsen und an Elasticsearch übermitteln

Logs mit Logstash unter Windows parsen und an Elasticsearch übermitteln

Der ELK (Elasticsearch, Logstash und Kibana) Stack hat sich zum Quasi-Standardwerkzeug für das Sammeln und Auswerten von Logdateien entwickelt. Die Open Source Werkzeuge stammen traditionell ehre aus dem Linux-Bereich. Durch die Verwendung von Java wird mittlerweile auch Windows unterstützt. Gerade bei Logstash ist dies praktisch: So können die Logs von Windows-Servern ebenfalls mit Logstash geparst und an eine Elasticsearch-Instanz übermittelt werden. Es ist keine gesonderte Lösung für Software nötig, die Microsofts Betriebssystem benötigt. Dieser Artikel zeigt die Installation auf einem Windows Server 2016.

Benötigte Software

Einrichten von Java (OpenJDK)

Für Elasticsearch macht es in meinen Augen sinn, ein eigenes JDK anzulegen. Vor allem wenn bereits ein global installiertes Java vorhanden ist. So ist man unabhängig davon. Je nach Systemart und Präferenzen kann man Java global oder anwendungsspezifisch lokal installieren. Dies ist im Einzelfall zu entscheiden. Im folgenden Beispiel wird die ZIP-Version nach D:\openjdk entpackt.

In einem Terminal kann man über die Executable im bin-Ordner prüfen, ob Java ausgeführt werden kann:

D:\openjdk\bin>java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

Unter Windows sollte dies i.d.R. ohne weitere Anpassungen funktionieren.

Einrichten von Logstash

Auch hier kann man das ZIP-Archiv in ein beliebiges Verzeichnis entpacken, beispielsweise D:\install\logstash-7.6.1. Für die korrekte Funktion der Logstash Java-Anwendung muss die Umgebungsvariable JAVA_HOME gesetzt sein. Ist Java global in einer von Logstash unterstützten Version installiert und JAVA_HOME dafür gesetzt, kann diese beibehalten werden.

Ansonsten macht es Sinn, eine Batch-Datei anzulegen. Sie setzt JAVA_HOME (falls erforderlich) und startet Logstash mit der entsprechenden Konfigurationsdatei:

set JAVA_HOME=D:\openjdk
.\bin\logstash.bat -f .\config\your-config.conf

Die Datei config\your-config.conf ist frei wählbar. Sie enthält die Logstash-Konfiguration, welche im Wesentlichen aus 3 Blcken (Eingang, Filter und Ausgangsdaten) besteht. Folgende Datei kann als Vorlage genutzt werden:

input {
	file {
		path => "D:/..."
	}
}

filter {
       # ...
}
output {
	elasticsearch { 
		hosts => ["https://elasticsearch-host:443"]
		index => "ihs-testsystem01"
	}
	stdout { codec => rubydebug }
}

Die stdout Direktive unter output ist nur zu Testzwecken gedacht. Sie gibt alle geparsten Logeinträge auf der Konsole aus. Für den Produktivbetrieb sollte diese Zeile entfernt werden.

Nach Abschluss der Konfiguration kann man Logstash über die angelegte Batchdatei starten. Idealerweise bindet man diese noch als Aufgabe in den Autostart ein.

Leave a Reply