td-agentのbuffer_path重複障害
td-agentを起動した場合、buffer_path指定でエラー発生し、嵌ったので設定時メモ。
sourceディレクティブが複数あり、各tagを指定してサーバへ送信している環境。
- 以下構築条件
- 各sourceディレクティブでtag指定
- sourceディレクティブでtag名重複は無い
- サーバ側で他へforwardする
- buffer_pathの出力先は他と共用は無い
- buffer_path出力先に{tag}.*を指定
■現象
本条件でtd-agent.logに以下エラーが発生する
2018-07-12 10:06:32 +0900 [error]: Cannot output messages with tag 'www.nginx.access.80-json' 2018-07-12 10:06:33 +0900 [error]: failed to configure sub output copy: Other 'secure_forward' plugin already use same buffer_path: type = secure_forward, buffer_path = /var/td-agent/buffer/secure-forward_www.nginx.access.80-json.*
tag名に重複無く「already use same buffer_path」となる原因不明。
■原因
td-agentの起動owner(td-agent
)に起因する事象
# ps aux|grep ruby td-agent 10382 0.0 0.6 217136 24136 ? Sl 18:36 0:00 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --use-v1-config --group td-agent --daemon /var/run/td-agent/td-agent.pid td-agent 10385 0.0 1.5 257184 59076 ? Sl 18:36 0:01 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --use-v1-config --group td-agent --daemon /var/run/td-agent/td-agent.pid
■対応
td-agentの起動owner(root
)を変更
#vi /etc/sysconfig/td-agent TD_AGENT_USER=root TD_AGENT_GROUP=root
td-agentの起動ownerを確認
# ps aux|grep ruby root 13127 0.0 0.6 217136 24156 ? Sl 15:07 0:00 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --use-v1-config --group root --daemon /var/run/td-agent/td-agent.pid root 13130 0.2 2.4 306384 97564 ? Sl 15:07 0:12 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log /var/log/td-agent/td-agent.log --use-v1-config --group root --daemon /var/run/td-agent/td-agent.pid
正常にownerが変更され、td-agent.logにエラー発生してない事を確認。
logに記載されている内容から原因調査→対応まで嵌ったのでここに記載しておく。