LoginSignup
19
19

More than 5 years have passed since last update.

fluentdのread_from_headでログの欠損が治ったパターン

Posted at

fluentdでログの欠損に悩んでいたらread_from_headで解決したパターンをメモ。
(fluentdの設定はわりとうろ覚えです)

ユーザーの行動ログを以下の様なフォーマットで保存していた。

log-2016-02-01-00.log
log-2016-02-01-01.log
...
log-2016-02-01-22.log
log-2016-02-01-23.log
log-2016-02-02-00.log

ようするに、1時間あたり1ファイルができるようにしていた。

これをfluentdのin_tailプラグインで以下のように読んでいた。

<source>
  type tail
  path /path/to/log/log-%Y-%m-%d-%H.log
  ... 以下略
</source>

こんな日付指定でログを読んでくれて、新しいファイルが生成されると読み始めたとinfo出してくれるので、fluentdは賢いなと喜んでいた。

この先にElasticsearch + Kibanaの環境があるのだが、そちらで見た時のログの数とログファイルを直接wc -lしたときの数が一致しない。だいたいどのhourも1.3%ぐらいログが欠損してて、困った。

いろいろ探した結果、read_from_headというディレクティブがあることを発見。

tail Input Plugin | Fluentd
http://docs.fluentd.org/articles/in_tail

デフォルトはfalseなので、もしやと思ってtrueにしたら、見事ログの欠損がなくなった。

<source>
  type tail
  path /path/to/log/log-%Y-%m-%d-%H.log
  read_from_head true
  ... 以下略
</source>

どういうこと

次のファイルが生成された際に、そのファイルを読み始めるのに若干のギャップがあって、デフォルトの動作だと新しいファイルの末尾から読み始めるから、読み始めるまでのログの部分が欠損していたみたい。

末尾から読み始めるデフォルト動作は、ログの出力先が常にerror.logで、定期的にerror.log-20160202などにmvして新しくerror.logを作るrotate動作が一般的だからかなと。

fluentdさんはバッファリングがとても優秀でほんと助かる。ちょっと再起動したいぐらいのダウンタイムなら全く問題ないので、気を使わなくてすみます。

19
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
19