Fluentdを使ってKibanaにデータを入れてるけど一部のログを落としていたのでリプレイしたい
Fluentdを使ってKibanaにデータを入れてるけど一部のログを落としていたのでリプレイしたいってときに、 取りこぼした時間分のログを置いて、Fluentdに読み込ませて送ればいいじゃんっていう気持ちになるけど、 ログの量が多いとクライアントが高速にログを読みすぎてFluentdのバッファーが溢れてしまう。
Fluentdの用途的におかしいので仕方ないのだけどなんとかしたいので、 通常時と同じようにログに追記していくようにする。 そのときに trottle(1) を使い、ストリームの速度を制限する。
cat foobar_log | throttle -l /tmp/throttle.ctl -M 1 > /tmp/foobar_log_replay.log
これで書き込み速度を1MByte/sに制限できる。
-l
は制御用の名前付きパイプを作るオプション。
速度が早すぎたり遅すぎたりした際に調整するのに便利。
throttle -t /tmp/throttle.ctl -B 1
このようにすると、転送は1Byte/sになる。速すぎたときに使う。
流すログの量が多い場合は、バッファーのディレクトリを監視しながら
自動でlimit
を調整できると便利かもしれない。
<source> type tail path /tmp/foobar_log_replay.log tag kibana4.foobar format json time_key time read_from_head true </source> <source> type tail path /var/fluentd/foobar/*.log pos_file /var/fluentd/foobar_log.pos tag kibana4.foobar format json time_key time </source>
かしこ