Logstash ist ein Werkzeug aus der Open Source Welt, welches dafür sorgt Filter und Logdateien zu managen.
Es wird dafür eingesetzt Logfiles von verschiedenen Servern zentral zu sammeln, zu parsen und für spätere Auswertungen mit Hilfe von ElasticSearch-Diensten zu speichern. Bei diesen Logdateien handelt es sich um alle möglichen Logs: System logs, Webserver logs, Fehler logs, Application logs und was auch immer.
Logstash ist eines der Tools, die wir bevorzugt selbst einsetzen. Wir empfehlen es auch unseren Kunden, die Wert auf ein professionelles Log-Management System legen (wobei wir gerne die Installation und Pflege von Logstash übernehmen). Es gibt unterschiedliche Gründe, warum man Logs sammeln, lesen und auszuwerten sollte. Ein wichtiger wäre, dass es nur so möglich wird Proaktiv zu handeln und einen anstehenden Super-GAU in einem (Web-)Projekt schnell zu identifizieren und zu beheben.
Ziele
Mit Logstash wird auch die Logfile-Analyse in verteilten Software-Architekturen einfacher, weil man sich nicht mehr einzeln auf den vielen unterschiedlichen Servern einloggen muss, um dort manuell die Logdateien nach bestimmten Meldungen zu durchsuchen.
Durch zentrale Logsammlung und Auswertung erhält man beispielsweise:
- einen Überblick in komplexen Umgebungen
- die Möglichkeit Engpässe zu erkennen, Ressourcen besser zu nutzen
- eine effektive Unterstützung bei der Ursachenforschung von Fehlern und Problemen
- eine gute Kontrollmöglichkeit wenn man sich vertraglich für bestimmte Tätigkeiten verpflichtet hat (SLAs)
- die Option das Systemverhalten unter realen Bedinungen zu beobachten
Wichtiger Vorteil von Logstash
Wie bereits in der Einführung erwähnt sammelt Logstash alle möglichen Logdateien. Es kommt mit einem Arsenal an eingebauten Inputs, Filtern, Codecs und Outputs daher (mehr dazu auf Logstash.net). Egal was für eine Anwendung oder welcher Dienst eingesetzt wird, auch wenn jedes Logfile anders aufgebaut ist, mit Logstash werden alle Logfiles einheitlich gemacht. Hat man mehrere Server im Einsatz wird alles zentral gesammelt und man hat zudem für alle nur eine Oberfläche.
Logstash Architektur
Die 3 Hauptelemente von Logstash
Die Logstash Konfigurationsdatei besteht aus drei Hauptelementen:
- input: von wo die Daten eingelesen werden sollen
- filter: mit Hilfe von Filtern legt man die verschiedenen Tätigkeiten fest (z.B. Log-Benachrichtigungen in verschiedene Felder parsen, Inhalte von Benachrichtigungen modifizieren, etc.)
- output: der Benutzer hat hier die Möglichkeit die sogenannten Outputs, also die geparsten Daten vielfältig zu verteilen / weiterzuleiten, beispielsweise an einen ElasticSearch Server, auf die Logstash Konsole, in eine andere Datei etc.
Beispiele für Logstash Plugins:
- Input: amqp, drupal_dblog, pipe, redis, twitter, zenoss, tcp, stopmp, evetnlog, file, s3, syslog, tcp, udp, websocket, wmi …
- Filter: csv, dns, geoip, grok, mutate, noop, split, syslog_pri, urldecode, xml, zeromq, alter, anonymize, date …
- Output: elasticsearch, email, exec, mongodb, rabbitmq, redis, file, loggly, lumberjack, nagios, null, opentsdb, websocket, xmpp, zabbix, zeromq …
Logstash an sich ist schnell aufgesetzt. Etwas kniffliger ist es schon die nötigen Hauptelemente an seine eigenen Bedürfnisse anzupassen. Wer Logstash in Kombination mit anderen Tools wie z.B. ElasticSearch, Zabbixx / Nagios etc. einsetzt, wird jedoch sehr bald die volle Power der Logfile-Analyse für sich nutzen können.