読者です 読者をやめる 読者になる 読者になる

俺の報告

RoomClipを運営するエンジニアの日報(多分)です。

日報 #65 - fluentdでbuffer_path重複

こういう元気のない雨に降り込められると悔しさ倍増ですね。
部屋の中で出来る事なんて、ほとんど無いじゃないか。
そう、RoomClipくらいしか。。。

さて、今日は早朝からちょっと色々ありまして、
ちょいと体力的にシンドい状態です。
とはいえ、エラーを吐き出している奴がいるなら対処しなければなりません。
今日はfluentdです。
非常に優秀な彼ですが、こんなようなエラーを吐き出すようになりました。
(一部変更してありますが、似たようなことが起きたと思って下さい)

Cannot output messages with tag ‘hoge.20141020.log’

まぁこんなようなエラーを吐き出して、
立て続けに、

failed to configure sub output redshift: Other '' plugin already use same buffer_path: type = , buffer_path = /hoge/buffer/hoge

こんなことを言ってくる。
はてどんなことでしょう。
td-agentのconfを確認すると、

buffer_path = /hoge/buffer/${tag_parts[1]}

例えばこんな風に書いてありました。
hoge.20141020.logタグがくれば確かにpathは/hoge/buffer/hogeですね。
ですが、このbufferファイルが送信される前に、hoge.20141021.logタグがくれば、
別のtagなのに、同じbuffer_pathとして認識されてしまいます。
それでこのエラーのようですね。
エラーを回避するだけでいったら非常に簡単で、

buffer_path = /hoge/buffer/${tag_parts[1]}.${tag_parts[2]}

のようにすれば20141021という新しい部分も含めてbuffer fileを吐き出せるので、
一応「固有」になります。
ただ、forestプラグインでのtag_parts利用は、matchディレクティブが 乱発してしまうことに対するtemplate機能だったはず、、、
こんな使い方していいのかしらと少し不安になる。
いっそタグ名を統一してしまおうかという話もあるが、
諸般の事情により、取り急ぎこのようなカタチで対応しました。

あらやだ、もうこんな時間。
アタシ寝るわ。じゃぁね。