Logstash は、Beats、Elasticsearch、Kibana とともに Elastic Stack の一部です。 Logstash は、多数のソースから同時にデータを取り込み、変換して、お気に入りの「スタッシュ」に送信するサーバー側のデータ処理パイプラインです。 (当然のことながら、私たちのものは Elasticsearch です。) Logstash には 200 を超えるプラグインがあり、独自のプラグインを簡単に作成することもできます。
詳細については、https://www.elastic.co/products/logstash を参照してください。
Logstash のドキュメントとスタート ガイドは elastic.co サイトで見つけることができます。
ドキュメントの構築については、https://github.com/elastic/docs の README を参照してください。
公式にリリースされた Logstash バイナリと、サポートされているプラットフォーム用の debian/rpm パッケージをダウンロード ページからダウンロードできます。
Logstash プラグインは、logstash-plugins github 組織の下の別のリポジトリでホストされています。各プラグインは自己完結型の Ruby gem であり、RubyGems.org に公開されます。
Logstash はその拡張性で知られています。 Logstash には何百ものプラグインがあり、独自のプラグインを非常に簡単に作成できます。これらのプラグインの開発とテストの詳細については、「プラグインの使用」セクションを参照してください。
独自のリポジトリで新しい問題を開き、プラグインのプル リクエストをオープンしてください。
たとえば、Elasticsearch 出力の問題/機能強化を報告する必要がある場合は、ここで報告してください。
Logstash コアは引き続きこのリポジトリの下に存在し、関連するすべての問題とプル リクエストはここで送信できます。
JAVA_HOME
バージョン 11 または 17 をインストールします。JAVA_HOME 環境変数を JDK インストール ディレクトリへのパスに設定してください。たとえば、 set JAVA_HOME=<JDK_PATH>
gem install rake
とgem install bundler
それぞれ使用して、 rake
ツールとbundler
ツールをインストールします。RVM (Ruby バージョン マネージャー) を使用してマシン上の Ruby バージョンを管理する場合は、次の手順に従ってください。 Logstash フォルダー内:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
c url -sSL https://get.rvm.io | bash -s stable --ruby= $( cat .ruby-version )
続行する前に、次の方法で Ruby のバージョンを確認してください。
$ ruby -v
印刷されたバージョンは、 .ruby-version
ファイル内のバージョンと同じである必要があります。
Logstash プロジェクトには、Elastic-Licensed X-Pack の機能を含む、Logstash のすべてのソース コードが含まれています。 OSS ライセンスのコードのみを使用してソースから Logstash を実行するには、値をtrue
にしてOSS
環境変数をエクスポートします。
export OSS=true
export LOGSTASH_SOURCE=1
export LOGSTASH_PATH=/YOUR/LOGSTASH/DIRECTORY
gradle
を使用して依存関係をインストールする(推奨) 1./gradlew installDevelopmentGems
./gradlew installDefaultGems
環境を確認するには、次のコマンドを実行して Logstash を起動し、最初のイベントを送信します。
bin/logstash -e ' input { stdin { } } output { stdout {} } '
これにより、イベントの入力を待機する標準入力入力で Logstash が起動します。
hello world
2016-11-11T01:22:14.405+0000 0.0.0.0 hello world
上級: ドリップランチャー
Drip は、Logstash の開発中に発生する JVM の起動が遅い問題を解決するツールです。ドリップ スクリプトは、Java コマンドをドロップインで置き換えることを目的としています。開発中、特にテストの実行時にはドリップを使用することをお勧めします。ドリップを使用すると、コマンドの最初の呼び出しは速くなりませんが、後続のコマンドは速くなります。
logstash に drip を使用するように指示するには、環境変数JAVACMD=`which drip`
を設定します。
例 (ただし、rspec を初めて実行する前に、以下の「テスト」セクションを参照してください):
JAVACMD=`which drip` bin/rspec
注意事項
STDINではドリップは動作しません。標準入力プラグインを使用する構成の実行にはドリップを使用できません。
Logstash リファレンス (オープン ソース コンテンツのみ) をローカル マシン上に構築するには、次のリポジトリのクローンを作成します。
logstash - コア機能に関する主要なドキュメントが含まれています
logstash-docs - 生成されたプラグインのドキュメントが含まれています
docs - ドキュメント ビルド ファイルが含まれています
logstash
とlogstash-docs
で同じブランチがチェックアウトされていることを確認してください。 docs
リポジトリでmaster
を確認してください。
docs
リポジトリ内からドキュメント ビルド スクリプトを実行します。例えば:
./build_docs.pl --doc ../logstash/docs/index.asciidoc --chunk=1 -open
Logstash の単体テストのほとんどは、Ruby 部分に rspec を使用して書かれています。 Java 部分には junit を使用します。テストには、 test rake
タスクとbin/rspec
コマンドを使用できます。以下の手順を参照してください。
1- コア テストを実行するには、Gradle タスクを使用できます。
./gradlew test
または、 rspec
ツールを使用してすべてのテストを実行するか、特定のテストを実行します。
bin/rspec
bin/rspec spec/foo/bar_spec.rb
初めてrspec
コマンドを実行する前に、以下を実行して RSpec テストの依存関係を設定する必要があることに注意してください。
./gradlew bootstrap
2- Java コードベースのみをカバーするテストのサブセットを実行するには、次のコマンドを実行します。
./gradlew javaTests
3- 統合テストを含む完全なテストスイートを実行するには、次のコマンドを実行します。
./gradlew check
4- 単一の Ruby テスト実行を実行するには:
SPEC_OPTS="-fd -P logstash-core/spec/logstash/api/commands/default_metadata_spec.rb" ./gradlew :logstash-core:rubyTests --tests org.logstash.RSpecTests
5- 統合テスト用に単一の仕様を実行するには、次を実行します。
./gradlew integrationTests -PrubyIntegrationSpecs=specs/slowlog_spec.rb
Logstash コードの一部を変更すると、テストがハングする場合があります。これらはデバッグが難しい場合があります。
LS_JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
を設定すると、IDE デバッガーを使用して実行中の Logstash に接続でき、問題を見つける優れた方法となります。
現在インストールされているすべてのプラグインのテストを実行するには:
rake test:plugins
logstash パッケージに含まれるデフォルトのプラグイン セットをインストールできます。
rake test:install-default
プラグイン マネージャーbin/logstash-plugin install ...
プラグインのインストール後に次のコマンドを使用してプラグイン開発の依存関係もインストールすることを忘れないでください。
bin/logstash-plugin install --development
ビルドされたアーティファクトはLS_HOME/build
ディレクトリに配置され、ディレクトリがまだ存在しない場合は作成されます。
Logstash スナップショット パッケージを tarball または zip ファイルとして構築できます。
./gradlew assembleTarDistribution
./gradlew assembleZipDistribution
OSS のみのアーティファクトも同様に、独自の Gradle タスクを使用して構築できます。
./gradlew assembleOssTarDistribution
./gradlew assembleOssZipDistribution
.rpm および .deb もビルドできますが、fpm ツールが必要です。
rake artifact:rpm
rake artifact:deb
そして:
rake artifact:rpm_oss
rake artifact:deb_oss
ビルドでカスタム JRuby を使用する場合は、 custom.jruby.path
Gradle プロパティを介してカスタム JRuby ディストリビューションのソース ルートへのパスを設定することで実行できます。
例えば
./gradlew clean test -Pcustom.jruby.path= " /path/to/jruby "
アイデア、パッチ、ドキュメント、バグレポート、苦情、さらにはナプキンに描いたものなど、あらゆる投稿を歓迎します。
プログラミングは必須スキルではありません。オープンソースやメンテナ、コミュニティのメンバーが「パッチを送るか死ね」と言っているのを見たことはありますが、ここではそんなことはありません。
あなたが貢献できることがより重要です。
貢献の詳細については、CONTRIBUTING ファイルを参照してください。
gradle
使用する代わりに、 bundle
使用することもできます。開発依存関係をインストールする
bundle config set --local path vendor/bundle bundle install
環境をブートストラップします。
rake bootstrap
その後、 bin/logstash
使用して Logstash を起動できますが、プラグインはインストールされていません。デフォルトのプラグインをインストールするには、次のコマンドを実行します。
rake plugin:install-default
これにより、80 を超えるデフォルトのプラグインがインストールされ、Logstash が複数のデータ ソースに接続し、変換を実行し、結果を Elasticsearch やその他の宛先に送信できるようになります。