事象
fluent-plugin-mysqlを使ってみようと思って、td-agentにインストールしようとしたところ。
# /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-mysql
# vi /etc/td-agent/td-agent.conf
ここで、/etc/td-agent/td-agent.confにmysqlに関する追記。
# service td-agent restart
Starting td-agent: 2013-02-14 18:14:40 +0900: fluent/supervisor.rb:187:rescue in main_process: config error file="/etc/td-agent/td-agent.conf" error="Unknown output plugin 'mysql'. Run 'gem search -rd fluent-plugin' to find plugins"
[FAILED]
という感じでプラグインを認識していなかった。
原因
よくよくfluent-gemのenvironmentsをみてみると、
# /usr/lib64/fluent/ruby/bin/gem environment
~~~~~中略~~~~~~~~~~~~~
- GEM PATHS:
- /usr/local/rvm/gems/ruby-1.9.3-p327
- /usr/local/rvm/gems/ruby-1.9.3-p327@global
~~~~~中略~~~~~~~~~~~~~
のようになっていた。
td-agentが見に行くgemのpathは
/usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/gems
のようなので、これではgemをinstallしても認識されない。
解決策
急場凌ぎの対策です。
GEM_HOME="/usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/"
GEM_PATH="/usr/lib64/fluent/ruby/lib/ruby/gems/1.9.1/"
/usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-mysql
こんな感じで無理やりGEM_HOMEとGEM_PATHを変更してinstallするとpluginが認識されました。
雑感
td-agent用にfluent-gemコマンドとは分離したtd-gemみたいなコマンドを用意して、GEM_HOME、GEM_PATHを明示的に指定したほうがいい気もする。