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
环境变量设置为 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 项目包含所有 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 和其他目的地。