(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【fluetnd/tdagent】flush_intervalでログ書き込みの遅延時間を変更する

スポンサーリンク

はじめに

Fluetndではblob(Binary Large OBject)を集めたchunkが一定程度溜まるか一定時間が経過するとデータを吐き出します。
そして実体はtd-agent.confの中の設定を変更することでそれらを管理し、前者はchunk_limit_size、後者はflush_intervalに該当します。

本記事ではflush_intervalを変更することで、デフォルトよりも短い時間でログが受信できるように変更する手順を記載しました。

環境情報
  • Red Hat Enterprise Linux Server 7.9
  • fluentd 1.10

Fluentdのログ送付の動き

例えば以下のようなforward設定の場合は

<match **>
     @type forward
     <server>
          host "XX"
          port xx
     </server>
</match>

flush_intervalは60秒になります。

よって、例えば以下のような時刻情報のログがあった場合も

[XX] test nginx-8487bb57bb-spp7f XX - - [23/Sep/2021:13:23:42 +0000] "GET / HTTP/1.1" 200 612 "-" "..."

実際にログとしてFluentdが吐き出すのはflush_intervalで待った後になります。

flush_intervalの修正

上記設定の場合は以下の箇所に値を入れると

<match **>
     @type forward
     <server>
          host "XX"
          port xx
     </server>
     flush_interval 1s
</match>

60sから明示的に指定したflush_intervalの値でログが送付されるようになります。

よって、例えば数秒起きに発生したログは従来は1分置きに更新されたものが都度ログとして更新されるため、一般的には同値を小さくすればするほどFluetndプロセスの負荷は増大します。

終わりに

Fluentdはchunk(blobの集合体)が作成されてからflush_interval を経過したものをqueued状態にするため、ここを変更することで逐次ログを送付する運用が可能になります。

以上です。