mishimaの日記: fluentd の forest plugin を Time slice で使用するとfluentd再起動時にログが消失する
日記 by
mishima
https://github.com/tagomoris/fluent-plugin-forest
ここに以下のような設定例があるんだけど
<match service.*>
@type forest
subtype file
remove_prefix service
<template>
time_slice_format %Y%m%d%H
compress gz
path /var/log/${tag}.*.log
</template>
</match>
このような設定をしている場合、以下の条件が重なるとログが消失(バッファ内に格納されたまま吐き出されない)する。
* 再起動後、
* 同一 Time slice の期間内に、
* 同一タグのログが入力されない
forest プラグインは新規のタグを見つけるたびにスレッドを作成し、そのスレッドがそのタグについてのバッファファイルも管理するような構成になっている。再起動するとスレッドが全部停止するが、このときバッファファイルのことも忘れてしまうので、Time slice の期間が終わってもバッファファイルの書き出しが発生しない。
対策として flush_at_shutdown true を追記しておくことが必要(停止時にバッファファイルを書き出してくれる)。
fluentd の forest plugin を Time slice で使用するとfluentd再起動時にログが消失する More ログイン