Logstash fait partie de la Suite Elastic avec Beats, Elasticsearch et Kibana. Logstash est un pipeline de traitement de données côté serveur qui ingère simultanément des données provenant d'une multitude de sources, les transforme, puis les envoie vers votre « réserve » préférée. (Le nôtre est Elasticsearch, naturellement.). Logstash propose plus de 200 plugins et vous pouvez également écrire le vôtre très facilement.
Pour plus d'informations, voir https://www.elastic.co/products/logstash
Vous pouvez trouver la documentation et les guides de démarrage pour Logstash sur le site elastic.co
Pour plus d'informations sur la création de la documentation, consultez le README sur https://github.com/elastic/docs
Vous pouvez télécharger les binaires Logstash officiellement publiés, ainsi que les packages Debian/rpm pour les plates-formes prises en charge, à partir de la page de téléchargement.
Les plugins Logstash sont hébergés dans des référentiels distincts sous l'organisation github logstash-plugins. Chaque plugin est une gemme Ruby autonome qui est publiée sur RubyGems.org.
Logstash est connu pour son extensibilité. Il existe des centaines de plugins pour Logstash et vous pouvez écrire le vôtre très facilement ! Pour plus d'informations sur le développement et le test de ces plugins, veuillez consulter la section Travailler avec les plugins.
Veuillez ouvrir de nouveaux numéros et tirer des demandes de plugins dans son propre référentiel
Par exemple, si vous devez signaler un problème/une amélioration concernant la sortie d'Elasticsearch, veuillez le faire ici.
Le noyau Logstash continuera d'exister dans ce référentiel et tous les problèmes et demandes d'extraction associés peuvent être soumis ici.
JAVA_HOME
sur le chemin d'accès à votre répertoire d'installation du JDK. Par exemple, set JAVA_HOME=<JDK_PATH>
rake
et bundler
en utilisant respectivement gem install rake
et gem install bundler
.Si vous préférez utiliser rvm (ruby version manager) pour gérer les versions Ruby sur votre machine, suivez ces instructions. Dans le dossier Logstash :
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
c url -sSL https://get.rvm.io | bash -s stable --ruby= $( cat .ruby-version )
Avant de continuer, veuillez vérifier votre version Ruby en :
$ ruby -v
La version imprimée doit être la même que celle du fichier .ruby-version
.
Le projet Logstash inclut le code source de l'ensemble de Logstash, y compris les fonctionnalités et fonctions X-Pack sous licence Elastic ; pour exécuter Logstash à partir de la source en utilisant uniquement le code sous licence OSS, exportez la variable d'environnement OSS
avec la valeur true
:
export OSS=true
export LOGSTASH_SOURCE=1
export LOGSTASH_PATH=/YOUR/LOGSTASH/DIRECTORY
gradle
(recommandé) 1./gradlew installDevelopmentGems
./gradlew installDefaultGems
Pour vérifier votre environnement, exécutez la commande suivante pour démarrer Logstash et envoyer votre premier événement :
bin/logstash -e ' input { stdin { } } output { stdout {} } '
Cela devrait démarrer Logstash avec une entrée stdin en attendant que vous saisissiez un événement
hello world
2016-11-11T01:22:14.405+0000 0.0.0.0 hello world
Avancé : lanceur de goutte à goutte
Drip est un outil qui résout le problème de démarrage lent de la JVM lors du développement de Logstash. Le script goutte à goutte est destiné à remplacer la commande java. Nous recommandons d'utiliser goutte à goutte pendant le développement, en particulier pour l'exécution de tests. En utilisant drip, la première invocation d'une commande ne sera pas plus rapide mais les commandes suivantes seront rapides.
Pour indiquer à logstash d'utiliser goutte à goutte, définissez la variable d'environnement JAVACMD=`which drip`
.
Exemple (mais consultez la section Tests ci-dessous avant d'exécuter rspec pour la première fois) :
JAVACMD=`which drip` bin/rspec
Mises en garde
Drip ne fonctionne pas avec STDIN. Vous ne pouvez pas utiliser goutte à goutte pour exécuter des configurations qui utilisent le plugin stdin.
Pour créer la référence Logstash (contenu open source uniquement) sur votre ordinateur local, clonez les dépôts suivants :
logstash - contient la documentation principale sur les fonctionnalités principales
logstash-docs - contient la documentation du plugin générée
docs - contient des fichiers de construction de documents
Assurez-vous que la même branche est extraite dans logstash
et logstash-docs
. Découvrez master
dans le dépôt docs
.
Exécutez le script de construction de documents à partir du dépôt docs
. Par exemple:
./build_docs.pl --doc ../logstash/docs/index.asciidoc --chunk=1 -open
La plupart des tests unitaires dans Logstash sont écrits en utilisant rspec pour les parties Ruby. Pour les parties Java, nous utilisons Junit. Pour les tests, vous pouvez utiliser les tâches test rake
et la commande bin/rspec
, voir les instructions ci-dessous :
1- Pour exécuter les tests de base, vous pouvez utiliser la tâche Gradle :
./gradlew test
ou utilisez l'outil rspec
pour exécuter tous les tests ou exécuter un test spécifique :
bin/rspec
bin/rspec spec/foo/bar_spec.rb
Notez qu'avant d'exécuter la commande rspec
pour la première fois, vous devez configurer les dépendances du test RSpec en exécutant :
./gradlew bootstrap
2- Pour exécuter le sous-ensemble de tests couvrant uniquement la base de code Java, exécutez :
./gradlew javaTests
3- Pour exécuter la suite de tests complète, y compris les tests d'intégration exécutés :
./gradlew check
4- Pour exécuter un seul test Ruby :
SPEC_OPTS="-fd -P logstash-core/spec/logstash/api/commands/default_metadata_spec.rb" ./gradlew :logstash-core:rubyTests --tests org.logstash.RSpecTests
5- Pour exécuter une seule spécification pour le test d'intégration, exécutez :
./gradlew integrationTests -PrubyIntegrationSpecs=specs/slowlog_spec.rb
Parfois, vous constaterez qu'une modification apportée à un morceau de code Logstash entraîne le blocage d'un test. Ceux-ci peuvent être difficiles à déboguer.
Si vous définissez LS_JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
vous pouvez vous connecter à un Logstash en cours d'exécution avec le débogueur de votre IDE, ce qui peut être un excellent moyen de trouver le problème.
Pour lancer les tests de tous les plugins actuellement installés :
rake test:plugins
Vous pouvez installer l'ensemble de plugins par défaut inclus dans le package logstash :
rake test:install-default
Notez que si un plugin est installé à l'aide du gestionnaire de plugins bin/logstash-plugin install ...
n'oubliez pas d'installer également les dépendances de développement du plugin à l'aide de la commande suivante après l'installation du plugin :
bin/logstash-plugin install --development
Les artefacts construits seront placés dans le répertoire LS_HOME/build
et créeront le répertoire s'il n'est pas déjà présent.
Vous pouvez créer un package d'instantanés Logstash sous forme de fichier tarball ou zip.
./gradlew assembleTarDistribution
./gradlew assembleZipDistribution
De la même manière, les artefacts OSS uniquement peuvent être créés avec leurs propres tâches de progression :
./gradlew assembleOssTarDistribution
./gradlew assembleOssZipDistribution
Vous pouvez également créer .rpm et .deb, mais l'outil fpm est requis.
rake artifact:rpm
rake artifact:deb
et:
rake artifact:rpm_oss
rake artifact:deb_oss
Si vous souhaitez que la construction utilise un JRuby personnalisé, vous pouvez le faire en définissant un chemin vers la racine source d'une distribution JRuby personnalisée via la propriété Gradle custom.jruby.path
.
Par exemple
./gradlew clean test -Pcustom.jruby.path= " /path/to/jruby "
Toutes les contributions sont les bienvenues : idées, correctifs, documentation, rapports de bugs, plaintes et même quelque chose que vous avez dessiné sur une serviette.
La programmation n'est pas une compétence requise. Quoi que vous ayez vu à propos de l'open source et des responsables ou des membres de la communauté disant "envoyer des correctifs ou mourir" - vous ne le verrez pas ici.
Il est plus important que vous puissiez contribuer.
Pour plus d'informations sur la contribution, consultez le fichier CONTRIBUTING.
gradle
vous pouvez également utiliser bundle
:Installer les dépendances de développement
bundle config set --local path vendor/bundle bundle install
Amorcer l'environnement :
rake bootstrap
Vous pouvez ensuite utiliser bin/logstash
pour démarrer Logstash, mais aucun plugin n'est installé. Pour installer les plugins par défaut, vous pouvez exécuter :
rake plugin:install-default
Cela installera plus de 80 plugins par défaut, ce qui permettra à Logstash de se connecter à plusieurs sources de données, d'effectuer des transformations et d'envoyer les résultats à Elasticsearch et à d'autres destinations.