fluentd で buffer されたメッセージを強制的に flush する方法
Written by @ryysud Apr 17, 2018 23:00 · 300 words · 1 minute read
結論
SIGUSR1 を投げてやるだけ 三╰( `•ω•)╮-=ニ=゚。☆
# td-agent ならこう
$ kill -SIGUSR1 $(cat /var/run/td-agent/td-agent.pid)
# 生の fluend ならこう ( pid ファイルの path は起動時に指定したものに対して実行してください )
$ kill -SIGUSR1 $(cat /path/to/fluentd.pid)
補足
Fluentd’s Signal Handling の SIGUSR1 に答えが書いてある通りで、単純に fluentd (or td-agent) のプロセスが SIGUSR1
を受け取ると、強制的にバッファに溜まったメッセージ(chunk)がフラッシュされる仕様となっている。
Forces the buffered messages to be flushed and reopens Fluentd’s log
https://docs.fluentd.org/v1.0/articles/signals
これを知るまでは flush_interval 1s や chunk_limit_size 1k ( v0.12 でいう buffer_chunk_limit ) のような設定を適用してみたり、無駄にリクエストを投げ続けて buffer に溜めるたりとアホなことばかりやってました…。やっとこの愚行から卒業できて良かったです。おしまい。