oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

#fluentd in_tailの挙動について把握出来ていなかったまとめ

今日こんな事をつぶやいた。

で、なんでかというとfluentd+datacounterでログ量をCactiでグラフ化したりサマリを出していたりしたら、ある時間帯だけはどう考えてもそんなにログ量無いはずなのに数値が跳ねている。


よくよく考えるとこの時間帯はログのローテートがアプリ側で走る時間帯だった。
で、「あれ、in_tailって再起動しても過去分とか流れて来ないけど、ローテートすると違う?」とかで色々挙動を確認していたりしたら、指摘を頂きました。

1)新規に設定されたファイルは終端から読む
2)ログローテーションされたら次のファイルを先頭から読む
3)再起動時には前回読み終わった位置から読み始める(位置はファイルに保存しておく)

との事でした。大変ご迷惑お掛けしました!><
逆に言うと、一度読み始めた所からはポジションファイルが失われない限り、ローテートが入ろうが再起動が入ろうが、その間のログ送信が止まってその分データが失われる、というのが無いという安心設計ですね!


なので、例えばストリーミング的に利用しているので、ある一定時間以内から溢れたデータはいらない、という場合は一度データストアに格納してそこから必要分を取り出すというのが筋ですね。