如何将Gems添加到Logstash中

时间:2014-09-22 23:31:37

标签: elasticsearch logstash

我正在运行Logstash 1.4.1,与最新版本相比,我无法在我的安装文件夹中找到包含gem信息的任何地方(与github中的最新代码相比,那些gembag.rb,Gemfile等...)

我目前的问题是我需要使用Logstash没有开箱即用的几个宝石,只是require 'gemname'似乎不起作用。任何人都可以指导我阅读解释如何添加这些第三方宝石或向我展示一些可以执行此操作的示例代码。

非常感谢!

5 个答案:

答案 0 :(得分:9)

cd /opt/logstash
env GEM_HOME=vendor/bundle/jruby/1.9 GEM_PATH="" java -jar vendor/jar/jruby-complete-1.7.11.jar -S gem install gemname

如果您要安装本地gem文件,请将路径放在GEM_PATH中。

答案 1 :(得分:5)

这对我在logstash 2.0中有用。

env GEM_HOME=/opt/logstash/vendor/bundle/jruby/1.9 /opt/logstash/vendor/jruby/bin/jruby /opt/logstash/vendor/jruby/bin/gem install PACKAGE_NAME -v PACKAGE_VERSION

然后我必须编辑/opt/logstash/Gemfile以包含该行:

gem "PACKAGE_NAME", "PACKAGE_VERSION"

我知道我们在整个过程中的某个时刻也做了yum install ruby-devel,但我不记得是否需要这样做才能发挥作用。

答案 2 :(得分:1)

例如:

env GEM_HOME=vendor/bundle/jruby/1.9 vendor/jruby/bin/jruby vendor/jruby/bin/gem install zookeeper -v 1.4.11 -V

编辑Gemfile:

gem "zookeeper", "1.4.11"

答案 3 :(得分:0)

Logstash版本不可知脚本(也可用于logstash 6.0.0):

env GEM_HOME=$$(echo /usr/share/logstash/vendor/bundle/jruby/*/) /opt/logstash/vendor/jruby/bin/jruby /opt/logstash/vendor/jruby/bin/gem install PACKAGE_NAME -v PACKAGE_VERSION

实际上,这里是安装gem并将包元数据附加到gemfile的完整脚本:

env GEM_HOME=$$(echo /usr/share/logstash/vendor/bundle/jruby/*/) /opt/logstash/vendor/jruby/bin/jruby /opt/logstash/vendor/jruby/bin/gem install PACKAGE_NAME -v PACKAGE_VERSION
echo 'gem \"PACKAGE_NAME\", \"PACKAGE_VERSION\"' >> /usr/share/logstash/Gemfile

Logstash将来可能会更改JRuby版本。例如,JRuby 2.3.0用于logstash 6.0.0。上面的脚本在升级logstash时不要求您在路径中更改JRuby版本。

答案 4 :(得分:0)

我认为最简单的方法是:

/usr/share/logstash/bin/ruby -S gem install <gem-name>

/opt/logstash/bin/ruby -S gem install <gem-name>

为我工作的最新版本的logstash ...