Einführung in Logstash-4-Solr
In einem meiner letzten Beiträge bin ich bereits auf die Möglichkeit eingegangen, Suchtechnologie zu Analysezwecken einzusetzen. Die Produkte bzw. Projekte, die ich genannt hatte, waren Apache Solr, ElasticSearch, Logstash, Kibana und LogStash-4-Solr.
Dieser Beitrag soll Ihnen eine kurze Einführung in das noch sehr junge Projekt LogStash-4-Solr geben, welches sich im Moment in einer Beta-Version befindet. Die Funktionsweise des Tools ist folgende: Es gibt ein bestimmtes Set an Quelldaten (z.B. Log-Dateien wie der Name schon andeutet), die von LogStash-4-Solr gesammelt und zur Indexierung aufbereitet werden. Danach werden diese Daten an Solr gesendet, damit diese indexiert werden können.
Logstash ist „im Original“ in der Version 1.3.2 veröffentlicht. LogStash-4-Solr ist ein Plugin, welches Sie mit Logstash 1.2.2 verwenden.
Systemvoraussetzungen
Und damit sind wir schon bei den notwendigen Systemvoraussetzungen, um den Anleitungen dieses Beitrags folgen zu können. Sie benötigen Solr ab Version 4.4. Getestet wurde die Anleitung mit Solr 4.6, der aktuell jüngsten Version. Des Weiteren benötigen Sie oben erwähnte Logstash-Version, die Sie über die ElasticSearch-Homepage beziehen können.
Zudem noch den Teil, der dafür sorgen soll, dass Logstash auch mit Solr zusammenarbeitet.
Vorbereitung und Einrichtung von Solr und LogStash-4-Solr
Erfüllen Sie die Voraussetzungen, können Sie mit der Einrichtung beginnen. Zunächst legen Sie einen neuen Solr-Core an, in dem die Daten später zu finden sein sollen. Kopieren Sie dazu das Verzeichnis logstash_logs aus dem Archiv deploy.zip in das Verzeichnis, in dem Ihre Solr-Cores sich befinden, also dem Solr-Home-Verzeichnis. Erstellen Sie dann einen Core, der denselben Namen des Verzeichnisses trägt, das Sie eben kopiert haben (logstash_logs). Nun sollten Sie einen laufenden Solr Suchserver haben, der mindestens einen Core namens logstash_logs hat.
Im nächsten Schritt richten Sie Ihre Logstash-Konfiguration ein. Eine Logstash –Konfiguration besteht immer aus drei Teilen: Input, Filter, Output. Input definiert eine oder mehrere Quellen, die Sie indexieren möchten. Filter ist für die Aufbereitung der Daten zuständig. Hier können Sie unter anderem angeben, welche Informationen in dem Input-Datenstream sind und in welchen Feldern Sie diesen indexieren wollen. Output definiert schließlich eine oder mehrere Ziele dieser Strecke.
Im Folgenden finden Sie eine Beispielkonfiguration, die sich eignet sich für folgendes Szenario:
- Quelldaten sind Syslog-Dateien Ihres Unix-Systems (Input)
- Indexierung mit Solr
- Solr Umgebung: Identischer Host, Port 8983
- Name eines Cores: logstash_logs
input { file { type => "syslog" exclude => ["*.gz","*.zip","*.tgz"] path => [ "/var/log/syslog" ] sincedb_path => "/dev/null" start_position => "beginning" } } filter { if [type] == "syslog" { grok { match => [ "message", "%{SYSLOGLINE}" ] } date { match => ["timestamp", "MMM dd hh:mm:ss"] } } } output { stdout { debug => true codec => "rubydebug" } lucidworks_solr_lsv122 { collection_host => "127.0.0.1" collection_port => "8983" collection_name => "logstash_logs" field_prefix => "logstash_" } }
Ist Ihre Solr-Installation nicht unter https://localhost:8983/solr erreichbar, müssen Sie die Konfiguration eben entsprechend anpassen. Gleiches gilt natürlich für den Fall, dass Sie unter dem angegebenen Pfad nicht Ihre Syslog-Daten haben. Die Konfiguration nennen Sie logstash.conf und legen Sie in dem Verzeichnis ab, in das Sie das Archiv deploy.zip entpackt haben.
Die ausführbare Logstash-Jar (logstash-1.2.2-flatjar.jar) kopieren Sie ebenfalls in dieses Verzeichnis. Die vorbereitenden Maßnahmen sind hiermit getroffen.
Indexierung Ihrer Daten
Sie starten die Indexierung Ihrer Syslog-Dateien mit folgendem Aufruf (inklusive Leerzeichen und Punkt am Ende):
java -jar logstash-1.2.2-flatjar.jar agent -f logstash.conf -p .
In Ihrem Terminalfenster sollten Sie nun alle Events aus Ihrem Syslog sehen, die nacheinander indexiert werden. Da Sie bei Ihrem Input definiert haben, dass vom Anfang der Datei begonnen werden soll (start_position => “beginning”), kann dieser Prozess natürlich etwas dauern. Nachdem die ersten Dokumente in Ihrem Index gelandet sind, können Sie in Ihrem Browser erste Suchanfragen starten:
https://localhost:8983/solr/logstash_logs/select?q=*%3A*
Jetzt können Sie zum Beispiel herausfinden, welches Programm am häufigsten für Syslog-Einträge verantwortlich ist. Dafür können Sie obige Query verwenden und auf dem Feld program eine Facette bilden:
https://localhost:8983/solr/logstash_logs/select?q=*%3A*&facet=on&facet.field=program&rows=0
In Ihrem Response sehen Sie nun die Anzahl der einzelnen Programme:
<result name="response" numFound="3447" start="0"/> <lst name="facet_counts"> <lst name="facet_queries"/> </lst><lst name="facet_fields"> </lst><lst name="program"> <int name="kernel">2866</int> <int name="networkmanag">165</int> <int name="dhclient">129</int> <int name="daemon">74</int> <int name="dbu">40</int> <int name="rtkit">40</int> <int name="manag">38</int> <int name="modem">38</int> <int name="avahi">32</int> <int name="anacron">18</int> <int name="pulseaudio">16</int> <int name="cron">15</int> <int name="dnsmasq">12</int> <int name="rsyslogd">11</int> <int name="acpid">10</int> <int name="bluetoothd">10</int> <int name="configur">8</int> <int name="printer">8</int> <int name="udev">8</int> <int name="aptdaemon">6</int> <int name="aptdaemon.packagekit">6</int> <int name="aptdaemon.work">6</int>< <int name="ntpdate">4 <int name="2039">2</int> <int name="account">2</int> <int name="failsaf">2</int> <int name="gnome">2</int> <int name="goa">2</int> <int name="mtp">2</int> <int name="polkitd">2</int> <int name="probe">2</int> <int name="python">2</int> <int name="session">2</int> <int name="hp">1</int> </lst>
Natürlich gibt es zahllose weitere Quellen, die Sie so indexieren können. Dazu werfen Sie am besten einen Blick in die Logstash-Doku. Achten Sie darauf, dass Sie nicht die Dokumentation der aktuellsten Version verwenden, denn diese wird immer „zu aktuell“ für die eingesetzte Logstash-Version sein und unter Umständen Features haben, die mit der momentan einsetzbaren LogStash-4-Solr-Version nicht verwendbar sind.
Happy Logging, Indexing and Searching!

Newsletter
Anmelden |
