td-agentのプラグインに入れたプラグインのrequireがうまく動いてなく以下のエラーとなりました。
error
1service td-agent restart 2/opt/td-agent/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- /usr/local/share/ruby/gems/2.0/gems/jsonpath-0.5.7/bin/jsonpath (LoadError) 3 from /opt/td-agent/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' 4 from /etc/td-agent/plugin/out_convert.rb:2:in `<module:Fluent>' 5 from /etc/td-agent/plugin/out_convert.rb:1:in `<top (required)>' 6 from /opt/td-agent/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' 7 from /opt/td-agent/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' 8 from /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.12/lib/fluent/plugin.rb:85:in `block in load_plugin_dir' 9 from /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.12/lib/fluent/plugin.rb:83:in `each' 10 from /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.12/lib/fluent/plugin.rb:83:in `load_plugin_dir' 11 from /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.12/lib/fluent/engine.rb:102:in `load_plugin_dir' 12 from /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.12/lib/fluent/supervisor.rb:488:in `block in init_engine' 13 from /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.12/lib/fluent/supervisor.rb:485:in `each' 14 from /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.12/lib/fluent/supervisor.rb:485:in `init_engine' 15 from /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.12/lib/fluent/supervisor.rb:179:in `dry_run' 16 from /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.12/lib/fluent/supervisor.rb:130:in `start' 17 from /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.12/lib/fluent/command/fluentd.rb:167:in `<top (required)>' 18 from /opt/td-agent/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:73:in `require' 19 from /opt/td-agent/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:73:in `require' 20 from /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/fluentd-0.12.12/bin/fluentd:6:in `<top (required)>' 21 from /opt/td-agent/embedded/bin/fluentd:23:in `load' 22 from /opt/td-agent/embedded/bin/fluentd:23:in `<top (required)>' 23 from /usr/sbin/td-agent:7:in `load' 24 from /usr/sbin/td-agent:7:in `<main>'
pluginのソース
ruby
1odule Fluent 2 require "/usr/local/share/ruby/gems/2.0/gems/jsonpath-0.5.7/bin/jsonpath" 3 #require "jsonpath" 4 class ConvertOutput < Output 5 Fluent::Plugin.register_output("convert", self) 6 config_param :format, :string, :default => nil 7 config_param :tag , :string, :default => nil 8 9 def configure(conf) 10 super 11 @formatter = create_formatter(JSON.parse(@format)) 12 end 13 14 def create_formatter(formatter) 15 case formatter 16 when Array 17 formatter.map{|e| create_formatter(e)} 18 when Hash 19 formatter.inject({}) do |hash, (k, v)| 20 hash[k] = create_formatter(v) 21 hash 22 end 23 when String 24 if formatter.start_with?("$") 25 JsonPath.new(formatter) 26 else 27 formatter 28 end 29 else 30 formatter 31 end 32 end 33 34 def emit(tag, es, chain) 35 es.each do |time, record| 36 converted = convert_record(@formatter, record) 37 Engine.emit(@tag, time, converted) 38 end 39 chain.next 40 end 41 42 def convert_record(formatter, record) 43 case formatter 44 when Array 45 formatter.map{|e| convert_record(e, record)} 46 when Hash 47 formatter.inject({}) do |hash, (k, v)| 48 hash[k] = convert_record(v, record) 49 hash 50 end 51 when JsonPath 52 formatter.first(record) 53 else 54 formatter 55 end 56 end 57 58 end
gem install jsonpath
gem contents jsonpath | grep bin
/usr/local/share/ruby/gems/2.0/gems/jsonpath-0.5.7/bin/jsonpath
/usr/local/share/ruby/gems/2.0/gems/jsonpath-0.5.7/test/test_jsonpath_bin.rb
json pathはインストールされていますがloadできない理由はなんでしょうか?
td-agent固有の環境変数に問題があるかな思って絶対パスに書いてもロードができません。。
何かヒントになれることあれば教えていただけますか
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/05 08:53
2015/08/05 08:58