えいのうにっき

a-knowの日記です

意図せず fluentd のバージョンが 0.14 系になってしまったら

いま、ちょっとしたサーバのセットアップを行っているんだけど、そこで少しハマってしまったのでメモとして残しておく。

↓のようなコマンド(公式ページにも記載されているもの)で 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 につぶやいてしまったのだけど、日曜日にも関わらずそれを中の人が拾ってくださった。

僕はサーバのセットアップ(プロビジョニング)には 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 に上げる作業もやっていかないと。。



follow us in feedly