Bild-Schulung-Solr-in-a-Nutshell

Monitoring mit Solr – Logstash to Solr

Wie bereits im vergangenen Blog (Monitoring mit Solr) angedeutet, möchte ich hier nun auf die Möglichkeit eingehen, wie man Log-Dateien mittels Logstash verarbeiten kann, so dass diese anstelle in einem Elasticsearch Index in einem Solr Index landen.
Logstash bietet eine Vielzahl von Plugins, sowohl für „input“, „filter“ oder „output“. Das Plugin für den Solr Output ist nicht integraler Bestandteil von Logstash, sondern wurde von der Community entwickelt. Um dieses Plugin zu nutzen, muss es separat installiert werden. Ich verzichte bewusst auf die Beschreibung, wie man dieses Plugin installiert, da ich mich auf die Konfiguration konzentrieren möchte. Weiter unten finden Sie jedoch einen Link mit der Beschreibung zur Plugin-Installation.

Konfiguration des Output Plugins

Das Output Plugin innerhalb der der Logstash Konfiguration zu definieren ist sehr einfach. Es wird innerhalb Output-Definitionen als eigenständiges Element mit dem Namen „solr_https“ definiert.
Wenn man direkt mit Solr aus dem Solr-Distributions-Paket arbeitet, kann die Konfiguration wie folgt aussehen:

output {
 solr_https {}
 }

Typischerweise ist Solr natürlich nicht über die URL https://localhost:8983/solr zu erreichen. Abweichendes Verhalten kann im Solr Output Plugin mittels Parameter konfiguriert werden. Im folgenden Beispiel wird neben der URL noch eine „flush_size“ definiert, mit der geregelt wird, wie viele Log-Events gleichzeitig an Solr geschickt werden sollen.

output {
  solr_https {
    flush_size => 50
    solr_url => "https://mySolr:8080/solr"
  }
}

Eine vollständige Liste der Parameter finden Sie gut dokumentiert auf der Website von logstash.

Konfiguration von Solr

Mit der Konfiguration des Output Plugins ist leider nicht alles getan. Die Default Solr Konfiguration – das Schema – wird nicht funktionieren, da Felder, wie beispielsweise das Log Level, unbekannt sind. Diese müssen natürlich in der Solr Core-Konfiguration nachgetragen werden.
Für einen schnellen Start mit Logstash und Solr kann man entweder auf den schemafreien Modus von Solr wechseln oder man konfiguriert ein dynamicFIeld mit dem Pattern „*“ in das Schema. Bei beiden Varianten werden nicht definierte Felder dennoch mit einem Default-Typ indexiert.
Die Daten – Log Events – sind nun im Solr Index und können somit für Analysezwecke genutzt werden. Jedoch ist es unerlässlich, das Schema an die eigenen Anforderungen anzupassen, um eine gute Qualität bei der Auswertung (Suche) zu erhalten.

Fazit

Der ELK Stack – hier insbesondere Logstash – bietet alles, was man braucht, um Logdateien in Solr zu indexieren. Die Konfiguration ist einfach und intuitiv und somit kann man Logstash mit gutem Gewissen für diesen Zweck empfehlen.
Es geht jedoch auch anders. In folgenden Blogs werde ich auf den SiLK Stack von Lucidworks näher eingehen und die Möglichkeiten von log4j aufzeigen um das gleiche Ergebnis zu erzielen.

Markus Klose