Einführung in Logstash & Überblick über benötigte Komponenten

Logging mit Logstash und log4net im Microsoft-Umfeld [Teil 1]
Keine Kommentare

Wie lässt sich eine Protokollinformationsflut in den Griff bekommen? Mit Logstash! Im ersten Teil dieses Artikels geben wir eine Einführung in Logstash sowie einen Überblick über die benötigten Komponenten für einen Betrieb von Logstash im Windows-Umfeld.

Jeder schreibt Logeinträge, einige einfach in eine Textdatei, wieder andere per E-Mail oder vielleicht in eine Datenbank. Ein Zeitstempel und einige Daten zeichnen normalerweise einen Logeintrag aus. Üblich sind Logfiles vor allem bei Anwendungen, die über keine grafische Benutzeroberfläche verfügen. Meist protokollieren sie ein Fehlverhalten oder eine bestimmte Aktion und helfen so, mögliche Problemstellen später identifizieren zu können. Wenn man professionelle Anwendungen schreibt, lässt sich das Protokollieren nicht vermeiden. Ein bekanntes Szenario ist: Der Kunde findet einen Fehler und stellt ihn vielleicht sogar direkt mit der Fehlermeldung in das Bugtracking-System ein, aber die Informationen reichen nicht aus. Man hat zwar ausführliche Logfiles, allerdings liegen sie beim Kunden oder aber man scrollt stundenlang durch die vielen Zeilen in der mäßig formatierten Textdatei. Wäre es da nicht viel einfacher, alle relevanten Protokollinformationen an einem Ort zu haben und sie bequem mit einfachen Abfragen oder in vorher definierten Masken zu sichten? Genau das bietet Logstash, das sich mit wenig Aufwand komplett in einem Windows-Umfeld betreiben lässt.

Was ist Logstash?

Neben der bekannten Windows-Ereignisanzeige gibt es einige mehr oder weniger bekannte kommerzielle, zentrale Logserverlösungen im Windows-Bereich. Logstash ist im Windows-Umfeld und vor allem im .NET-Bereich eher unbekannt, genießt im Java- und Webumfeld aber eine gewisse Bekanntheit. Dabei handelt es sich um eine kostenlose Open-Source-Lösung (Apache-2.0-Lizenz), um Logs zu managen. Es ist eine Java-Anwendung, die die Logs annimmt, filtert und wieder ausgeben kann. Logstash bietet mehr als dreißig, Input-Plug-ins genannte, Möglichkeiten, Logs einzulesen. Von der klassischen Datei über die Windows-Ereignisse bis hin zu Twitter-Nachrichten ist alles dabei. Die über den Input erhaltene Information wird mit einem Filter verarbeitet, um daraus die eigentlich zu protokollierende Information zu ermitteln. Zum Beispiel lässt sich mit dem Grok-Filter eine unstrukturierte Zeichenkette in vergleich- und sortierbare Felder parsen. Die gefilterten oder ungefilterten Informationen werden dann über einen Output-Plug-in ausgegeben. Hier gibt es wieder viele Optionen; die sinnvollste ist eindeutig Elasticsearch.

BASTA! Spring 2020

Dr. Holger Schwichtenberg

Von .NET Framework zu .NET Core migrieren oder nicht migrieren, das ist hier (nicht die einzige) Frage!

mit Dr. Holger Schwichtenberg (www.IT-Visions.de/5Minds IT-Solutions)

Rainer Stropek

C#-8- und .NET-Core-3-Workshop

mit Rainer Stropek (software architects/www.IT-Visions.de)

Adrienne Tacke

Azure Automation: The Good Parts

mit Adrienne Tacke (Adrienne Tacke)

Warum Elasticsearch?

Im August 2013 hat sich Jordan Sissel, der Schöpfer von Logstash, Elasticsearch angeschlossen und Logstash zu einem Teil der Firma Elasticsearch gemacht. Ihr gleichnamiges Produkt eignet sich wunderbar als Speicher für die von Logstash verarbeiteten Logs. Elasticsearch selbst ist, wie der Name schon erkennen lässt, eine Suche. Dabei sucht Elasticsearch jedoch nicht nur, sondern speichert Daten als JSON-Dokumente und ähnelt damit anderen dokumentenbasierten NoSQL-Systemen. Mithilfe eines REST-APIs lässt sich auf Elasticsearch zugreifen. Vor allem im Webbereich wird Elasticsearch bei großen Datenmengen für schnelle Abfragen genutzt. Mit Kibana bietet Elasticsearch auch direkt ein Produkt für die Suche und Analyse der gespeicherten Informationen. Kibana steht, wie auch Elasticsearch, unter der Apache-2.0-Lizenz zur Verfügung und lässt sich somit auch im kommerziellen Umfeld verwenden. Es ist eine Webanwendung, die auf Elasticsearch zurückgreift und dem Nutzer ohne Programmieraufwand die Visualisierung der Logeinträge ermöglicht.

Logstash unter Windows

Wenn man sich das Tutorial von Logstash ansieht, wird man schnell feststellen, dass hier das Augenmerk eher darauf gerichtet ist, dass Logstash unter Linux läuft. Da aber alle Komponenten Cross-Plattform-fähig sind, spricht auch nichts dagegen, das Ganze auf einem Windows-System aufzusetzen. Es muss kein Windows-Server-System verwendet werden; allerdings empfiehlt es sich für den produktiven Einsatz. Wichtig ist nur, dass die Java Runtime installiert ist. Logstash selbst empfiehlt eine aktuelle Java-Version; für diesen Artikel wurde die aktuellste 64-Bit-Version der Java Runtime verwendet. Auf der Elasticsearch-Webseite befinden sich die drei Hauptkomponenten: Elasticsearch, Logstash und Kibana (ELK abgekürzt). Es ist ratsam, dieselbe Logstash- und Elasticsearch-Version zu verwenden. Während dieser Artikel entstand, wurde die Version 1.4.2 verwendet. Um einige Hürden mit den vorhandenen Batch-Dateien zu umgehen, empfiehlt es sich, die JAVA_HOME-Variable im System zu hinterlegen, die auf die zu verwendende Java-Runtime-Installation zeigt. Elasticsearch lässt sich mit einer im Elasticsearch-Bin-Verzeichnis abgelegten Batch-Datei problemlos als Windows-Dienst registrieren:

C:\Logstash\elasticsearch-1.4.2\bin>service.bat install

Logstash selbst bietet leider keine eigene Möglichkeit, um als Windows-Dienst registriert zu werden; es gibt aber einige kleine Anwendungen, um das zu realisieren – zum Beispiel RunAsSvc. Die logstash.bat aus dem Bin-Verzeichnis sollte als Dienst laufen, da sie sich so automatisch mit dem System, auf dem sie läuft, starten lässt. Es empfiehlt sich, die logstash.bat mit folgenden Parametern zu starten:

Logstash.bat agent -f logstash.conf

Mit beiden Diensten ist nun theoretisch schon alles vorhanden, um Logstash zu nutzen. Da die Logeinträge aber auch wieder dargestellt werden sollen, braucht es eine Benutzeroberfläche. Hier kommt Kibana ins Spiel, das vom IIS problemlos gehostet wird. Dazu wird einfach eine neue Webseite angelegt, die auf das Kibana-Verzeichnis zeigt (Abb. 1). Mehr muss seitens Kibana nicht eingerichtet werden.

Abb. 1: Kibana-Webseite im IIS einrichten

Abb. 1: Kibana-Webseite im IIS einrichten

Bevor man nun den Logstash- und Elasticsearch-Dienst startet, sollte man ihn konfigurieren. Elasticsearch lässt sich im /Config/-Verzeichnis anhand der elasticsearch.yml-Datei anpassen. Hier empfiehlt es sich, Kibana im CORS (Cross-Origin Resource Sharing) zu erlauben. Es kann sonst passieren, dass Kibana nicht auf Elasticsearch zugreifen kann. Um den Zugriff freizugeben, wird CORS aktiviert und der URL (inklusive Port, sollte dieser nicht 80 sein), unter dem Kibana läuft, in der Elasticsearch-Konfiguration wie folgt hinterlegt:

http.cors.enabled: true
http.cors.allow-origin: http://kibana.adesso.de:8080

Logstash selbst liefert keine Konfiguration mit. In Listing 1 ist eine Beispielkonfiguration hinterlegt, die per UDP eine Nachricht empfängt, sie filtert und in die Elasticsearch ausgibt.

input { 
  udp 
  { 
    port => 5960 
    codec => plain { 
      charset => "UTF-8" 
    } 
    type => "log4net" 
  }
}

filter {
  grok {
    match => [ "message", "%{WORD:app} - %{WORD:level} - %{GREEDYDATA:message}" ]
    overwrite => [ "message" ]
  }
}

output {
  elasticsearch {
    host => "localhost"
    protocol => "http"
  }
}

Wenn die Konfiguration abgeschlossen ist, lassen sich der Elasticsearch-Dienst und der Logstash-Dienst starten.

Ausblick

Im zweiten Teil des Artikels betrachten wir den Versand von Logeinträgen per UDP, die Einrichtung von Kibana für die Visualisierung sowie möglichen Anwendungsfällen wie der Kombination von mehreren Logeintragsquellen oder dem Monitoring.

Entwickler Magazin

Entwickler Magazin abonnierenDieser Artikel ist im Entwickler Magazin erschienen.

Natürlich können Sie das Entwickler Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -