简体   繁体   中英

How to add gems into Logstash

I am running Logstash 1.4.1, comparing to the latest, I can't find anywhere in my installation folders contains gem information (versus the latest code in github has those gembag.rb, Gemfile etc..)

My current issue is I need to use several gems that Logstash doesn't have out of box, simply require 'gemname' seems doesn't work. Could anyone direct me to the readings that explains how to add these 3rd party gems or show me some sample codes which can do this.

Thanks very much!

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

If you're installing a local gem file, put the path to the file in GEM_PATH.

This is what worked for me in 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

Then I had to edit /opt/logstash/Gemfile to include the line:

gem "PACKAGE_NAME", "PACKAGE_VERSION"

I know we also did a yum install ruby-devel at some point along the way, but I don't remember if that was needed for this to work.

I think the simplest way is:

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

or

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

Work for me on recent version of logstash...

For example:

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

edit Gemfile:

gem "zookeeper", "1.4.11"

Logstash version agnostic script (can also be used for 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

In fact, here is the full script to both install a gem and append package metadata to the 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 may change JRuby version in the future. For instance, JRuby 2.3.0 is used in logstash 6.0.0. The script above does not require you to change JRuby version in the path when upgrading logstash.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM