logstash 修改Gem源为淘宝源后不生效问题

环境:
CentOS 6 x86_64
logstash 1.5.4

问题描述:

/opt/logstash 下的 Gemfile、Gemfile.jruby-1.9.lock 都修改了 source 为 https://ruby.taobao.org,但是执行 /opt/logstash/bin/plugin install logstash-input-beats 还是连接的 https://rubygems.org/ 并且因为地址被墙而无法下载插件,如下图

1457933293336.png

解决办法:

google一番有说用以下命令可以解决,但机器上没有 Ruby 环境,gem 命令不存在,并且 logstash 用的自带的 jruby ,想想应该会配置在某个地方,遂决定探究一下。

gem sources remove https://rubygems.org
gem sources add https://ruby.taobao.org

很自然的想到先全量 grep 下这个地址(字符串),命令如下:

grep -nr 'https://rubygems.org' /opt/logstash/

可以看到找到了很多文件,但 /opt/logstash/vendor/bundle/jruby/1.9/gems/logstash- 开头的都是已经安装的插件目录,可以忽略不看。

剩下的一个个仔细的瞄过去,发现一个比较像的文件/opt/logstash/vendor/jruby/lib/ruby/shared/rubygems/defaults.rb,因为有字符串 DEFAULT_HOST

1457933923101.png

vi 打开文件看一下,开头有以下配置项

1457934120376.png

通过注释 “An Array of the default sources that come with RubyGems” 可以知道,应该就是这个配置文件了。修改两处 https://rubygems.orghttps://ruby.taobao.org :wq保存文件,再次执行 /opt/logstash/bin/plugin install logstash-input-beats 即可成功下载插件并安装。

1457934399274.png

总结

因为 rubygems.org 被墙,logstash 下载安装插件时需要将以下文件中的gems地址https://rubygems.org替换为淘宝源地址https://ruby.taobao.org

/opt/logstash/Gemfile
/opt/logstash/Gemfile.jruby-1.9.lock
/opt/logstash/vendor/jruby/lib/ruby/shared/rubygems/defaults.rb

标签: logstash, elk, gem, rubygems

添加新评论