2014-09-22 70 views
3

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

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

非常感谢!

回答

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中。

+0

这是一个梦幻般的解决方案@Alain。我猜即使是最新的logstash,这仍然是可行的? – 2014-10-24 01:06:22

+0

我刚刚在1.4.0 logstash安装上做了这个。最新版本是1.4.2,不应该有太大变化... – 2014-10-24 01:08:39

+0

刚刚证实它也在1.4.2上运行 – schadr 2015-01-06 17:56:11

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,但我不记得,如果这是需要这工作。

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" 
0

Logstash可能会改变未来的JRuby版本。例如在logstash 6.0.0中使用JRuby 2.3.0。要安装的宝石无论哪个logstash版本旧的或使用新,运行这个命令:

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 

其实,这里是完整的脚本来同时安装宝石和包元数据附加到的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