:>/dev/null

ラガードエンジニアの不撓不屈の精神

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に記載されている内容から原因調査→対応まで嵌ったのでここに記載しておく。