いま、ちょっとしたサーバのセットアップを行っているんだけど、そこで少しハマってしまったのでメモとして残しておく。
↓のようなコマンド(公式ページにも記載されているもの)で td-agent のバージョン2系(fluentd は 0.12系のはず)をインストールしているにも関わらず、
$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
セットアップを終えて起動させた td-agent のログを見ていると↓のようなエラーがでていて、
2017-02-19 13:04:02 +0900 [error]: #0 [nginx_forest] failed to configure/start sub output copy: Unable to activate fluent-plugin-bigquery-0.4.0, because fluentd-0.14.13 conflicts with fluentd (~> 0.12.0)
そんなバカな、と確認してみるもそのとおりで、意図せず fluentd が 0.14 系になってしまっていた。
$ td-agent --version td-agent 0.14.13
rpm のバージョンを古いものを指定して入れ直してみたりしてもうまくいかずで、思わず Twitter につぶやいてしまったのだけど、日曜日にも関わらずそれを中の人が拾ってくださった。
@a_know 多分0.14に入れてるプラグインを入れてるからですね.v0.12用のバージョンを入れれば良いと思います
— 君の名は。ヒッセン (@repeatedly) 2017年2月19日
僕はサーバのセットアップ(プロビジョニング)には chef の recipe を書いてそれを knife solo cook
することで実施しているのだけど、td-agent のインストールのあとの fluent-plugin のインストールのところはこんな↓かんじに書いていた。
%w( fluent-plugin-slack fluent-plugin-mackerel fluent-plugin-forest fluent-plugin-datacounter fluent-plugin-record-reformer fluent-plugin-bigquery ).each do |gem| gem_package gem do gem_binary '/opt/td-agent/embedded/bin/fluent-gem' notifies :restart, 'service[td-agent]' end end
これらのうち fluent-plugin-datacounter
は最新バージョンが 1.0.0
なんだけど、このバージョンは fluentd のバージョンが >= v0.14.8
であることが必要なため、 fluent-plugin-datacounter
を後から入れると今回のような状況に陥いる、ということだった。
fluentd も fluent-plugin-datacounter も gem なわけで、少し落ち着いて考えればわかりそうなものだった...、、いやはやお恥ずかしい。
というわけで、今回は↓のようにすることで回避した。少し不格好だけど。
gem_package 'fluent-plugin-datacounter' do gem_binary '/opt/td-agent/embedded/bin/fluent-gem' version '0.5.0' notifies :restart, 'service[td-agent]' end
うーん。Gemfile でちゃんと管理するほうがいいのかもなー。
こういうハマり方は 0.12.x から 0.14.x への過渡期でもある今であるからこそだとは思うけど、もし同じことでつまづく人がいたら...、、ということで。
これとは別に、0.14.x に上げる作業もやっていかないと。。