Logstash 與 Beats、Elasticsearch 和 Kibana 一起屬於 Elastic Stack。 Logstash 是一個伺服器端資料處理管道,它同時從多個來源獲取數據,對其進行轉換,然後將其發送到您最喜歡的「儲存」。 (當然,我們的是 Elasticsearch。)。 Logstash 有 200 多個插件,您也可以非常輕鬆地編寫自己的插件。
有關更多信息,請參閱 https://www.elastic.co/products/logstash
您可以在 elastic.co 網站上找到 Logstash 的文檔和入門指南
有關建立文件的信息,請參閱 https://github.com/elastic/docs 中的自述文件
您可以從下載頁面下載官方發布的 Logstash 二進位檔案以及適用於支援平台的 debian/rpm 軟體包。
Logstash 外掛程式託管在logstash-plugins github 組織下的單獨儲存庫中。每個外掛程式都是獨立的 Ruby gem,發佈到 RubyGems.org。
Logstash 以其可擴展性而聞名。 Logstash 有數百個插件,您可以非常輕鬆地編寫自己的插件!有關開發和測試這些插件的更多信息,請參閱使用插件部分
請在自己的儲存庫下開啟新問題並拉取插件請求
例如,如果您必須報告 Elasticsearch 輸出的問題/增強功能,請在此處進行操作。
Logstash 核心將繼續存在於該儲存庫下,所有相關問題和拉取請求都可以在此處提交。
JAVA_HOME
。例如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 專案包含所有 Logstash 的原始程式碼,包括 Elastic-Licensed X-Pack 特性和功能;若要僅使用 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啟動慢問題的工具。 Drop 腳本旨在取代 java 指令。我們建議在開發過程中使用點滴,特別是執行測試時。使用drip,命令的第一次呼叫不會更快,但後續命令會很快。
要告訴logstash使用drip,請設定環境變數JAVACMD=`which drip`
。
範例(但在第一次執行 rspec 之前請參閱下面的測試部分):
JAVACMD=`which drip` bin/rspec
注意事項
Drip 不適用於 STDIN。您不能使用 drop 來執行使用 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 和其他目的地。