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