Architektur und Komponenten

Logstash

Da sich Logstash auf den Transport und die Filterung von Log- und Informationen spezialisiert hat, nutzt es für die Speicherung und Bufferung von Events zusätzliche Open Source Komponenten, die unter Verwendung von Input- und Output-Plugins angebunden werden.

Durch die Verwendung von Standard-Plugins ist der Anwender nicht an ein statisches Installationsszenario gebunden und kann die eingesetzten Komponenten frei in der bestehenden Infrastruktur einbinden. Die Entscheidung zu verarbeitende Events nicht zu persistieren garantiert darüber hinaus eine gute Skalierbarkeit und Transparenz bei der Analyse des Datenflusses.

Die Anlieferung, das so genannte Shipping von Logs, kann entweder mit Logstash auf den entsprechenden Clients oder Lumberjack, einer kleinen leichtgewichtige Alternative, erfolgen. Wer bereits die Verteilung der Logs mit Syslog konfiguriert hat, braucht hier lediglich Logstash mit Syslog-Input zu starten und schon werden die Daten ohne Änderungen am zuliefernden System verarbeitet.

Indexierung und Langzeitarchivierung

Zur Speicherung und Indexierung von Loginformationen setzt Logstash auf Elasticsearch. Die Anbindung ist unter Verwendung des Output-Plugins zwar optional, jedoch Voraussetzung für die Verwendung des Webinterfaces Kibana, welches die Daten via REST-Interface aus Elasticsearch liest. Bei der Speicherung von Events kümmert sich Elasticsearch selbst um die Anlage des entsprechenden Schemas und die Verteilung der Informationen. Zu beachten ist, dass der Zugriff auf die REST-API keine weitere Authentifizierung erfordert und somit auf die berechtigten Systeme zu achten ist.

Bufferung und Verteilung

Um die Verarbeitung von Loginformationen aus verschiedenen Kanälen zu entkoppeln setzt Logstash auf Redis. Redis ist leichtgewichtiger, performanter Key-Value Store, der sämtliche Daten im Hauptspeicher vorhält und bei Bedarf auch auf Festplatte persistieren kann. Im Umfeld von Logstash kann er als Gateway für Datenlieferanten und zur Entkopplung des eigentlichen Indexers verwendet werden. So gehen auch bei Anpassung der Konfiguration zur Laufzeit keine Informationen verloren und verweilen bis zum erneuten Verbindungsaufbau des Redis-Inputs im entsprechenden Speicher.