fluent-plugin-ping-messageプラグインを最新のを入れるとtd-agentがunstable versionになるためバージョン指定する話

これは何

https://rubygems.org/gems/fluent-plugin-ping-message/ という Fluentd の plugin を最新化すると、同時に td-agent 本体も unstable な最新の 0.14 系にあがってしまい、ログ転送がたまにできなくなる事象が発生する。 その対策。

原因

この現象はpluginの依存するfluentdのバージョンが指定されているので、gemで最新のplugin version1.0.0が入るとfluentdも v0.14が必要になり、強制的にあげられてしまうため。 参考: https://github.com/tagomoris/fluent-plugin-ping-message

対策

ansibleのtasksで書くならこんな感じ。-vで指定する。

- name: add fluent-plugin-ping-message
  shell: td-agent-gem install fluent-plugin-ping-message -v {{ FLUENT_PLUGIN_PING_MESSAGE_VERSION }}

stableなtd-agentのバージョンは? どこで確認する?

http://www.fluentd.org/download

  • stable v0.12 系
  • experimental version が v0.14となっている。

td-agent本体 version確認方法

$ which td-agent
/usr/sbin/td-agent
$ td-agent --version
td-agent 0.12.29

plugin version確認方法 

td-agent-gemで入れているので listコマンドから確認

$ td-agent-gem list  | grep ping
fluent-plugin-ping-message (1.0.0, 0.2.0)

左が新しいもの、右が古いversionっぽい。gemで入れると古いバージョンも残るらしい。 $ td-agent-gem list | grep ping fluent-plugin-ping-message (0.2.0)

入れなおし方法

  • sudo yum remove td-agentを実行する
  • rm -rf /opt/td-agentを実行して残存プログラムを完全消去する。これをやらないと/opt/td-agentにプログラム本体がいるっぽく yumで再インストールしてもversionが新しいプログラムのままになる。
  • td-agent再インストー

実験

plugin入れる前

$ td-agent --version
td-agent 0.12.31

入れてみる

$ sudo  td-agent-gem install fluent-plugin-ping-message
Fetching: strptime-0.1.9.gem (100%)
Building native extensions.  This could take a while...
Successfully installed strptime-0.1.9
Fetching: serverengine-2.0.4.gem (100%)
Successfully installed serverengine-2.0.4
Fetching: msgpack-1.1.0.gem (100%)
Building native extensions.  This could take a while...
Successfully installed msgpack-1.1.0
Fetching: fluentd-0.14.13.gem (100%)
Successfully installed fluentd-0.14.13   ★ここで fluentd 0.14 を入れている。
Fetching: fluent-plugin-ping-message-1.0.0.gem (100%)
Successfully installed fluent-plugin-ping-message-1.0.0
Parsing documentation for strptime-0.1.9
Installing ri documentation for strptime-0.1.9
Parsing documentation for serverengine-2.0.4
Installing ri documentation for serverengine-2.0.4
Parsing documentation for msgpack-1.1.0
Installing ri documentation for msgpack-1.1.0
Parsing documentation for fluentd-0.14.13
Installing ri documentation for fluentd-0.14.13
Parsing documentation for fluent-plugin-ping-message-1.0.0
Installing ri documentation for fluent-plugin-ping-message-1.0.0
Done installing documentation for strptime, serverengine, msgpack, fluentd, fluent-plugin-ping-message after 8 seconds
5 gems installed
$ td-agent --version
td-agent 0.14.13