以前以下のような記事を書きました。
それを少し改良した記事です。
td-agent2のfluent-pluginをbundlerで管理 - Qiita
上記のやり方の場合、td-agentをアップグレードした後自分でtd-agentに同梱されたpluginのGemfileを自分で書き換える必要があります。
またFluentdのバージョンが上がっても、td-agentに反映されるまでラグがあります。
td_agent_gemというmethodを定義してしまって、動的にgemのversionを取得しています。
TD_AGENT_GEM_HOMEは環境に合わせて定義する必要があります。
/etc/td-agent/Gemfile
source 'https://rubygems.org'
TD_AGENT_GEM_HOME = "/opt/td-agent/embedded/lib/ruby/gems"
def td_agent_gem(gem_name)
gems = Dir.glob("#{TD_AGENT_GEM_HOME}/*/gems/#{gem_name}-[0-9]*").reverse
return if gems.empty?
gem gem_name, gems.first.split('-').last
end
gem "fluent-plugin-exec_cron", "0.0.3"
gem "fluent-plugin-forest", "0.3.0"
gem "fluent-plugin-record-reformer", "0.8.0"
gem "fluent-plugin-rewrite", "0.0.12"
gem "hipchat-api"
# td-agent preinstall
td_agent_gem "fluent-plugin-rewrite-tag-filter"
td_agent_gem "fluent-plugin-s3"
td_agent_gem "fluent-plugin-scribe"
td_agent_gem "fluentd"
以下のケースに有効です。
- td-agentのアップグレードには勝手に追随して欲しい。
- プラグイン管理は差分だけにしたいけど、いざというときは最新のFluentdをためしたい
- td-agentでも必要なプラグインは選別したい