環境
- CentOS release 6.5 (Final)
- td-agent-1.1.20をyumでインストール済み
- serviceでtd-agentを起動したい
やりかた
下記のような事を書く。
/etc/sysconfig/td-agent
TD_AGENT_ARGS="/usr/sbin/td-agent --group td-agent --log /var/log/td-agent/td-agent.log --gemfile /etc/td-agent/Gemfile"
PATH="${PATH}:/usr/lib64/fluent/ruby/bin"
DAEMON_ARGS="--user root"
/etc/td-agent/Gemfile
source 'https://rubygems.org'
gem 'fluentd'
# 例えば下記のような感じに、必要なプラグインを書く
gem 'fluent-plugin-bigquery', github: 'groovenauts/fluent-plugin-bigquery', branch: 'auto_create_table'
解説
service td-agent startの挙動
- 環境変数をほぼリセットした上で、/etc/init.d/td-agent startを実行する
- /etc/init.d/td-agent startでは、TD_AGENT_ARGSの内容で、td-agentをdaemon起動する
- TD_AGENT_ARGSを設定するのは、コマンドから与えるのは(リセットされるから)ダメで、/etc/sysconfig/td-agentに書けば、/etc/init.d/td-agentの中から読み込まれるので、そうすればよい
bundlerにパスが通ってないと、何も言わずに落ちる件
- https://github.com/fluent/fluentd/blob/21e34f2a8e76ff157f25bb4ba479ecb90ab1fde1/lib/fluent/command/bundler_injection.rb#L19 あたりを見るとわかりやすい
td-agentユーザーではbundle installが通らなかった件
- 指定しなかった場合、td-agentユーザーで起動しようとする
- 存在しない/var/lib/td-agentにアクセスしようとして許可がないエラーになる
- 詳細未調査 調べてわかったら書くかも