25 März 2014

Logstash mit Elasticsearch und Kibana auf Ubuntu

Logstash ist eine Software zur zentralen Sammlung und Anzeige von Log-Daten. Dabei kann Logstash verschiedenste Eingabeformate aufnehmen, filtern und einheitlich in einer Datenbank wie Elasticsearch ablegen. Darüber hinaus bietet Logstash mit Kibana ein benuzterfreundliches Webfrontend zur Anzeige und Filterung der Logs.

Log-Dateien werden jederzeit und in großer Zahl auf Clients erstellt: von den System-Logs über „typyische“ Logs wie mail.log und Apache-Logs bis hin zu den angepassten Logs einzelner Applikationen. Am einfachsten ist es, wenn diese Logs an ein zentrales Logsystem wie Rsyslog geschickt werden, da so eine zentrale Verwaltung möglich ist. Außerdem bietet Rsyslog die Möglichkeit, Logdaten mehrerer Server an eine zentrale Instanz zu schicken.

Um die Logdaten auf einer solchen zentralen Instanz sinnvoll aufzuarbeiten müssen mehrere Aufgaben erfüllt werden: die Annahme, Filterung und Aufbereitung der Logdaten in ein einheitliches Format, die Speicherung der Daten um komplexe Abfragen zu ermöglichen – und zu guter Letzt die benutzerfreundliche Anzeige der Daten, um eine Auswertung vorzunehmen.

Der erste Schritt, die Annahme und Filterung, kann mit Hilfe von Logstash erfolgen: es bietet die Möglichkeit, mehrere verschiedene Log-Quellen zu verarbeiten, diese zu filtern, zu normalisieren und an verschiedene Ziele weiter zu geben. Als Ziel empfiehlt sich bei großen Datenmengen eine eigene Datenbank. Hier wird von den Machern von Logstash die ebenfalls von diesen entwickelte Datenbank Elasticsearch empfohlen. Zur Anzeige greifen wir auf die vom gleichen Projekt entwickelte Weboberfläche Kibana zurück.

Um diese Kombination von Diensten auf einem Ubuntu-Server zu installieren sind mehrere Schritte notwendig. Auf den Clients, aber auch auf dem Server, auf dem Logstash selbst läuft, muss Rsyslog so konfiguriert werden, dass  alle Logdaten auf den Logstash-Port 5544 des Logstash-Servers weitergeleitet werden:

*.*   @@logstash.our-domain.com:5544

Anschließend müssen die beiden Repositories http://packages.elasticsearch.org/elasticsearch/0.90/debian und http://packages.elasticsearch.org/logstash/1.3/debian hinzugefügt, und die Pakete openjdk-7-jre, elasticsearch und logstash installiert werden. Danach kann Logstash bereits konfiguriert werden. Wie bereits erwähnt ist es möglich, mehrere Quellen und Ziele sowie Filter zu definieren. Für eine einfache Konfiguration, in der nur Daten von Rsyslog entgegen genommen und in eine Elasticsearch-DB eingetragen werden, reichen folgende Zeilen:

input {
    syslog {
        type => syslog
        port => 5544
    }
}
 
output {
    elasticsearch {
    }
}

Weitere Quellen und Ziele sowie Filter sind in der Logstash-Doku aufgeführt.

Kibana ist derzeit noch nicht für Ubuntu oder Debian paketiert, daher erfolgt die Installation durch das Klonen des Kibana Repositories nach /var/www/kibana. Mehr ist da allerdings nicht mehr zu tun: Kibana greift über die REST-API der Elasticsearch-DB auf die Datenbank selbst zu. Solange beide auf dem gleichen Host installiert sind, ist keine weitere Konfiguration mehr notwendig. Das Webinterface kann direkt mit dem Link http://$SERVERNAME/kibana/src/index.html#/dashboard/file/logstash.json aufgerufen werden:

Kibana

Dieser erste Einstieg zeigt, welche Möglichkeiten Logstash zusammen mit Elasticsearch und Kibana bieten kann. Für eine produktive Umgebung wäre der nächste Schritt nun, darauf zu achten, dass alle Logdateien aufgegriffen und ausreichend normalisiert werden, um diese im zentralisierten Webinterface übersichtlich darzustellen. Durch die Javascript-Unterstützung von Kibana können Administratoren darüber hinaus genau die Views und Darstellungen konfigurieren, die benötigt werden.

 

Dieser Artikel wurde ursprünglich geschrieben von Roland Wolters.

Kategorien: HowTos
Tags: Elasticsearch Kibana Logstash Ubuntu

SH

über den Autor

Sascha Heuer


Beitrag teilen: