Logstash ist zusammen mit Beats, Elasticsearch und Kibana Teil des Elastic Stack. Logstash ist eine serverseitige Datenverarbeitungspipeline, die Daten aus einer Vielzahl von Quellen gleichzeitig aufnimmt, umwandelt und sie dann an Ihren bevorzugten „Stash“ sendet. (Unsere Lösung ist natürlich Elasticsearch.) Logstash verfügt über mehr als 200 Plugins, und Sie können auch ganz einfach eigene Plugins schreiben.
Weitere Informationen finden Sie unter https://www.elastic.co/products/logstash
Die Dokumentation und Erste-Schritte-Anleitungen für Logstash finden Sie auf der Website elastic.co
Informationen zum Erstellen der Dokumentation finden Sie in der README-Datei unter https://github.com/elastic/docs
Sie können offiziell veröffentlichte Logstash-Binärdateien sowie Debian/RPM-Pakete für die unterstützten Plattformen von der Download-Seite herunterladen.
Logstash-Plugins werden in separaten Repositorys unter der Github-Organisation logstash-plugins gehostet. Jedes Plugin ist ein eigenständiges Ruby-Gem, das auf RubyGems.org veröffentlicht wird.
Logstash ist für seine Erweiterbarkeit bekannt. Es gibt Hunderte von Plugins für Logstash und Sie können ganz einfach Ihre eigenen schreiben! Weitere Informationen zum Entwickeln und Testen dieser Plugins finden Sie im Abschnitt „Arbeiten mit Plugins“.
Bitte öffnen Sie neue Issues und Pull-Anfragen für Plugins in einem eigenen Repository
Wenn Sie beispielsweise ein Problem/eine Verbesserung für die Elasticsearch-Ausgabe melden müssen, tun Sie dies bitte hier.
Der Logstash-Kern bleibt in diesem Repository bestehen und alle damit verbundenen Probleme und Pull-Anfragen können hier eingereicht werden.
JAVA_HOME
auf den Pfad zu Ihrem JDK-Installationsverzeichnis eingestellt ist. Legen Sie beispielsweise set JAVA_HOME=<JDK_PATH>
rake
und bundler
Tool mit gem install rake
bzw. gem install bundler
.Wenn Sie zum Verwalten von Ruby-Versionen auf Ihrem Computer lieber rvm (Ruby-Versionsmanager) verwenden möchten, befolgen Sie diese Anweisungen. Im Logstash-Ordner:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
c url -sSL https://get.rvm.io | bash -s stable --ruby= $( cat .ruby-version )
Bevor Sie fortfahren, überprüfen Sie bitte Ihre Ruby-Version durch:
$ ruby -v
Die gedruckte Version sollte mit der .ruby-version
identisch sein.
Das Logstash-Projekt umfasst den Quellcode für das gesamte Logstash, einschließlich der Elastic-lizenzierten X-Pack-Features und -Funktionen; Um Logstash aus der Quelle auszuführen und dabei nur den OSS-lizenzierten Code zu verwenden, exportieren Sie die OSS
Umgebungsvariable mit dem Wert true
:
export OSS=true
export LOGSTASH_SOURCE=1
export LOGSTASH_PATH=/YOUR/LOGSTASH/DIRECTORY
gradle
installieren (empfohlen) 1./gradlew installDevelopmentGems
./gradlew installDefaultGems
Um Ihre Umgebung zu überprüfen, führen Sie Folgendes aus, um Logstash zu starten und Ihr erstes Ereignis zu senden:
bin/logstash -e ' input { stdin { } } output { stdout {} } '
Dies sollte Logstash mit stdin-Eingabe starten und darauf warten, dass Sie ein Ereignis eingeben
hello world
2016-11-11T01:22:14.405+0000 0.0.0.0 hello world
Erweitert: Drip Launcher
Drip ist ein Tool, das das Problem des langsamen JVM-Starts bei der Entwicklung von Logstash löst. Das Drip-Skript soll ein direkter Ersatz für den Java-Befehl sein. Wir empfehlen die Verwendung von Drip während der Entwicklung, insbesondere für die Durchführung von Tests. Bei Verwendung von Drip wird der erste Aufruf eines Befehls nicht schneller sein, die nachfolgenden Befehle jedoch schnell.
Um Logstash anzuweisen, Drip zu verwenden, legen Sie die Umgebungsvariable JAVACMD=`which drip`
.
Beispiel (sehen Sie sich jedoch den Abschnitt „Testen“ unten an, bevor Sie rspec zum ersten Mal ausführen):
JAVACMD=`which drip` bin/rspec
Vorbehalte
Drip funktioniert nicht mit STDIN. Sie können Drip nicht zum Ausführen von Konfigurationen verwenden, die das stdin-Plugin verwenden.
Um die Logstash-Referenz (nur Open-Source-Inhalte) auf Ihrem lokalen Computer zu erstellen, klonen Sie die folgenden Repos:
logstash – enthält Hauptdokumente zu Kernfunktionen
logstash-docs – enthält generierte Plugin-Dokumente
Dokumente – enthält Dokument-Build-Dateien
Stellen Sie sicher, dass in logstash
und logstash-docs
derselbe Zweig ausgecheckt ist. Schauen Sie sich master
im docs
-Repo an.
Führen Sie das Dokumenterstellungsskript im docs
-Repository aus. Zum Beispiel:
./build_docs.pl --doc ../logstash/docs/index.asciidoc --chunk=1 -open
Die meisten Unit-Tests in Logstash werden mit rspec für die Ruby-Teile geschrieben. Für die Java-Teile verwenden wir junit. Zum Testen können Sie die Test- rake
Aufgaben und den Befehl bin/rspec
verwenden, siehe Anweisungen unten:
1- Um die Kerntests auszuführen, können Sie die Gradle-Aufgabe verwenden:
./gradlew test
oder verwenden Sie das rspec
Tool, um alle Tests oder einen bestimmten Test auszuführen:
bin/rspec
bin/rspec spec/foo/bar_spec.rb
Beachten Sie, dass Sie vor der ersten Ausführung des Befehls rspec
die RSpec-Testabhängigkeiten einrichten müssen, indem Sie Folgendes ausführen:
./gradlew bootstrap
2- Um die Teilmenge der Tests auszuführen, die die Java-Codebasis abdecken, führen Sie nur Folgendes aus:
./gradlew javaTests
3- Um die komplette Testsuite einschließlich der Integrationstests auszuführen:
./gradlew check
4- So führen Sie einen einzelnen Ruby-Testlauf aus:
SPEC_OPTS="-fd -P logstash-core/spec/logstash/api/commands/default_metadata_spec.rb" ./gradlew :logstash-core:rubyTests --tests org.logstash.RSpecTests
5- Um eine einzelne Spezifikation für den Integrationstest auszuführen, führen Sie Folgendes aus:
./gradlew integrationTests -PrubyIntegrationSpecs=specs/slowlog_spec.rb
Manchmal kommt es vor, dass eine Änderung an einem Teil des Logstash-Codes dazu führt, dass ein Test hängen bleibt. Diese können schwer zu debuggen sein.
Wenn Sie LS_JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
festlegen, können Sie mit Ihrem IDE-Debugger eine Verbindung zu einem laufenden Logstash herstellen, was eine gute Möglichkeit sein kann, das Problem zu finden.
So führen Sie die Tests aller aktuell installierten Plugins aus:
rake test:plugins
Sie können die im Logstash-Paket enthaltenen Standard-Plugins installieren:
rake test:install-default
Beachten Sie Folgendes: Wenn ein Plugin mit dem Plugin-Manager bin/logstash-plugin install ...
vergessen Sie nicht, nach der Plugin-Installation auch die Entwicklungsabhängigkeiten des Plugins mit dem folgenden Befehl zu installieren:
bin/logstash-plugin install --development
Gebaute Artefakte werden im Verzeichnis LS_HOME/build
abgelegt und erstellen das Verzeichnis, wenn es noch nicht vorhanden ist.
Sie können ein Logstash-Snapshot-Paket als Tarball- oder ZIP-Datei erstellen
./gradlew assembleTarDistribution
./gradlew assembleZipDistribution
Nur-OSS-Artefakte können auf ähnliche Weise mit ihren eigenen Gradle-Aufgaben erstellt werden:
./gradlew assembleOssTarDistribution
./gradlew assembleOssZipDistribution
Sie können auch .rpm und .deb erstellen, aber das fpm-Tool ist erforderlich.
rake artifact:rpm
rake artifact:deb
Und:
rake artifact:rpm_oss
rake artifact:deb_oss
Wenn Sie möchten, dass der Build ein benutzerdefiniertes JRuby verwendet, können Sie dies tun, indem Sie über die Gradle-Eigenschaft custom.jruby.path
einen Pfad zum Quellstammverzeichnis einer benutzerdefinierten JRuby-Distribution festlegen.
Z.B
./gradlew clean test -Pcustom.jruby.path= " /path/to/jruby "
Alle Beiträge sind willkommen: Ideen, Patches, Dokumentationen, Fehlerberichte, Beschwerden und sogar etwas, das Sie auf eine Serviette geschrieben haben.
Programmieren ist keine erforderliche Fähigkeit. Was auch immer Sie über Open Source und Betreuer oder Community-Mitglieder gesehen haben, die sagen: „Senden Sie Patches oder sterben Sie“ – das werden Sie hier nicht sehen.
Wichtiger ist, dass Sie einen Beitrag leisten können.
Weitere Informationen zum Mitwirken finden Sie in der Datei CONTRIBUTING.
gradle
auch bundle
verwenden:Entwicklungsabhängigkeiten installieren
bundle config set --local path vendor/bundle bundle install
Bootstrap der Umgebung:
rake bootstrap
Sie können Logstash dann bin/logstash
starten, es sind jedoch keine Plugins installiert. Um Standard-Plugins zu installieren, können Sie Folgendes ausführen:
rake plugin:install-default
Dadurch werden die über 80 Standard-Plugins installiert, wodurch Logstash bereit ist, eine Verbindung zu mehreren Datenquellen herzustellen, Transformationen durchzuführen und die Ergebnisse an Elasticsearch und andere Ziele zu senden.