26 Oktober 2016 Veröffentlichungen

Logstash 5.0.0 ist da!

Von Suyog Rao

Logstash 5.0.0 ist da! Moment, wie bitte? 5.0.0? Oh ja, unsere neueste Version ist 5.0.0. Falls du unsere Ankündigung bei der Elastic{ON} 2016 versäumt haben solltest: Wir haben beschlossen, alle Komponenten des Elastic Stack in eine einzige Version zusammenzuführen. Und jetzt – fünf Alpha-Versionen, eine Beta- und eine RC-Version später – haben wir das aufregende Vergnügen, das GA-Release der umfassendsten Logstash-Version aller Zeiten bekanntzugeben. Und dabei geht es nicht bloß um Logstash: Der gesamte Elastic Stack feiert eine Release-Party, die alle neuen Versionen auf Elastic Cloud zur Verfügung stellt, damit du sie sofort ausprobieren kannst.

Wenn du nicht länger warten willst, um loszulegen, dann gehe einfach auf unsere Download-Seite. Allerdings empfehlen wir, zunächst die Liste der wichtigsten Änderungen zu lesen. Wenn du alle Release Notes lesen möchtest, findest du sie hier.

Breaking Changes

Wir empfehlen euch, diese wichtigen Informationen vor dem Upgrade älterer Versionen zu lesen.

Vorabversionen

Blog-Posts für jede vor 5.0 veröffentlichte Vorversion findest du hier:

Logstash 5.0.0-alpha1-Version
Logstash 5.0.0-alpha2-Version
Logstash 5.0.0-alpha3-Version
Logstash 5.0.0-alpha4-Version
Logstash 5.0.0-alpha5-Version
Logstash 5.0.0-beta1-Version

Höhepunkte

Ein wichtiges Thema dieser Logstash-Version war euch die selbstständige Problembehebung zu ermöglichen. Die Verbesserung der Performance gehört bei jeder neuen Version zu unseren Zielen und bei 5.0.0 haben wir in dieser Hinsicht auf der ganzen Linie große Fortschritte gemacht. Unten findest du die wichtigsten Features dieser Version:

Logstash ist keine Blackbox mehr

Eine neue Monitoring-Funktion verschafft Einblick ins dass Runtime-Verhalten der Logstash-Pipeline und deren Plugins. Die Komponente sammelt verschiedene Arten von Metriken während Logstash deine Daten verarbeitet. All diese Informationen können mit simplen APIs abgerufen werden. Die meisten APIs wurden in Anlehnung an Elasticsearch entwickelt und wir haben demnach versucht die Endpunkte und sogar die JSON-Antworten konsistent zu gestalten. Die Monitoring-APIs lassen sich grob folgenden Bereichen zuordnen:

  • Node-Info-API: Statische Informationen zur Logstash-Instanz und ihrer Umgebung wie JVM, Informationen zum Betriebssystem usw.
  • Plugins-Info-API: Zeigt Informationen über alle gegenwärtig installierten Logstash-Plugins an.
  • Node-Stats-API: Verschiedene Laufzeitstatistiken wie verarbeitete Events sowie CPU- und Systemstatistiken.
  • Hot-Threads-API: Finde heraus, welche Aktivitäten von Logstash deine CPU am meisten beschäftigen.

Weitere Details findest du in der Dokumentation.

Verbesserungen beim Logging

Wir haben weiter daran gearbeitet, die internen Vorgänge von Logstash sichtbarer zu machen, und auf diesem Weg das interne Logging-Framework von Logstash verbessert. Vor allem haben wir auf Log4j2, Javas beliebte Logging-Bibliothek, umgestellt. Das bedeutet für die Benutzer, dass ihr die Log-Granularität nun bis hinab zur Ebene einzelner Plugins konfigurieren könnt. Zur Erhöhung von Granularität und Log-Levels könnte man die Datei log4j2.properties verändern und Logstash neu starten, doch das ist mühsam und führt zu unnötigen Downtimes. Stattdessen haben wir APIs bereitgestellt, die man benutzen kann, um Logging-Ebenen dynamisch zu aktualisieren. Diese Einstellungen werden sofort wirksam und ein Neustart ist nicht notwendig. Ein weiterer Vorteil der Umstellung auf Log4j2: Die Strategie zur Logrotation kann direkt mit der Properties-Datei konfiguriert werden.

Performance: Java Event

In dieser Version haben wir einen kritischen Teil der Pipeline-Infrastruktur von Logstash komplett neu in Java geschrieben. Der Datenstrom in Logstash wird unter Verwendung eines internen Event-Objekts zusammengefasst, das an die Plugins weitergeleitet sowie für Bedingungen und Field-Reference-Lookups verwendet wird. In der Zukunft wird es auch auf die Festplatte persistiert werden. Was aber bedeutet das für die Benutzer? Bei unseren Performance-Tests haben wir nachhaltige Durchsatzsteigerungen über mehrere Konfigurationen hinweg beobachtet. In manchen Fällen waren das bis zu 75% Steigerung bei Events, die über Logstash verarbeitetet werden.

Wenn du ein Plugin-Entwickler bist oder ein benutzergeneriertes Plugin wartest, solltest du diesen Abschnitt lesen, um deine Programmierung an die neue Plugin-API anzupassen.

Einfach anzuwenden

Settings-Datei: Der Benutzer kann nun die Logstash-Optionen über die Settings-Datei logstash.yml einstellen, anstatt Befehlszeilenargumente zu benutzen. So kannst du zum Beispiel Pipelineeinstellungen, den Pfad zu Konfigurationsdateien und Logging-Optionen spezifizieren – alles in ein und derselben Datei.

Releasepakete: Die Logstash-Releasepakete (Debian, RPM) wurden für diese Version von Grund auf überarbeitet. Zuvor verwendete Logstash das Verzeichnis /opt/logstash zum Installieren der Binärdateien, wohingegen Elasticsearch die Verzeichnisse /usr/share und /var benutzte. Um das Verhalten über alle unsere Produkte hinweg einheitlich zu gestalten (ein Thema, das dir im Zusammenhang mit unserer Version 5.0.0 noch öfter begegnen wird), haben wir Logstash geändert, um den Aufbau der RPM- und DEB-Pakete von Elasticsearch zu übernehmen. Darüber hinaus haben wir Logstash so programmiert, dass es die Hintergrundprogramme Systemd und Upstart unterstützt und so als Service auf *nix-Plattformen laufen kann.

Verbesserte Integrationen und neue Plugins

Elasticsearch Output: Dieses Ausgabe-Plugin funktioniert standardmäßig mit Elasticsearch 5.0.0. Es wurde obendrein threadsicher gestaltet, um die neuesten Änderungen in der Pipelinearchitektur besser zu nutzen. Weitere Verbesserungen sind ein neuer Connection Pool für das effiziente Wiederverwenden von Verbindungen mit Elasticsearch, ein exponentieller Backoff beim Aufbau von Verbindungen und ein besseres Sniffing-Handling.

Hinweis: Logstash 5.0 ist kompatibel mit Elasticsearch 5.x, 2.x und sogar 1.x.

Unterstützung von Kafka 0.10: Von Apache Kafka waren erst vor wenigen Monaten die neuen Versionen 0.9 und 0.10 veröffentlicht worden, die neue Sicherheitsfunktionen (SSL, Client-Based-Auth, Zugangskontrolle), eine verbesserte Consumer-API und noch vieles mehr mit sich brachten. Diese Logstash-Version unterstützt von Haus aus SSL-Verschlüsselung und Client-Auth-Funktionen in Kafka.

Einführung des Dissect-Filters: Das Auslesen von Feldern aus unstrukturierten Daten ist eine beliebte Logstash-Funktion. Bisher war der Grok-Filter das einzige Mittel zum Auslesen von Feldern. Grok benutzte intern reguläre Ausdrücke und der Benutzer hatte gute Chancen, mit teuren Ausdrücken richtig viel Zeit zu verlieren. Es war so, als würde man mit dem Vorschlaghammer Erdnüsse knacken. Dissect bietet eine Alternative für das Auslesen von Feldern durch das Splitten von Trennzeichen. Reguläre Ausdrücke werden dabei nicht einmal in Betracht gezogen. Das bedeutet auch, dass Dissect nur bei Logzeilen funktioniert, deren Struktur gut bekannt ist. Das ersetzt Grok nicht, doch wir hoffen, dass Dissect diesen Filter ergänzen wird.

Protobuf-Codec von Google: Ein neuer Codec für das Parsen von Protobuf-Messages und deren Konvertierung in Logstash-Events; entwickelt von Inga Feick.

Sprachfilter: Ermittelt die Sprache eines bestimmten Feldes oder von bestimmten Feldern. Ein möglicher Anwendungsfall könnte das Einstellen des korrekten Analyzers in Elasticsearch sein; entwickelt von Justin Bovee.

Feedback

Logstash 5.0.0 war ein Mammutprojekt, das ohne all die Beiträge, Rückmeldungen, Kommentare und Verbesserungsvorschläge unserer Community nicht möglich gewesen wäre. Ein ganz besonderes Dankeschön geht an unsere fantastischen Plugin-Maintainer, die uns dabei geholfen haben, 5.0.0 Gestalt annehmen zu lassen. Wenn du am Pioneer Program teilgenommen hast, wird sich unser Developer Relationship Team bald bei dir melden. Vom gesamten Logstash-Team also nochmals vielen Dank an alle unsere Benutzer dafür, dass ihr Logstash einsetzt und zu seiner Entwicklung beitragt.

Probiert die neue 5.0.0 Version aus und lasst uns wissen, was ihr davon haltet. Wir sind gespannt, was ihr draus macht!