19
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Filebeatの性能チューニングポイントまとめ

Last updated at Posted at 2019-02-26

はじめに

Elastic社の軽量ログ収集ツールであるFilebeatで取り込んだログファイルをLogstashへ送る際の性能チューニングポイントを簡単にまとめてみました。
 image.png

構成図

このような構成でAWS NLB経由でスケールアウト構成のLogstashにログを送る感じです^^
image.png

Filebeatとは

  • Elasticsearchで有名なElastic社の軽量ログ収集エージェントになります。

  • Beatsファミリーは用途に特化したBeatが存在し、ログファイルを取り込むものがFilebeatです。
    image.png

  • いずれのBeatsもGo言語で書かれているため、非常にCPUやメモリ負荷が低く軽量でサーバに常駐するエージェントとして優しい作りとなっています。

  • 2015年前まではLogstashをサーバに導入しログ収集していましたが、多くのメモリを消費するため、既存システムへの導入に二の足を踏むケースもありました。

【参考】
Filebeat Reference

チューニングポイント

Filebeatの大まかな内部動作は以下の通りになります。
image.png

Generalのパラメータ値

設定項目 デフォルト値 説明
queue.mem.events 4096 キューに格納できるイベント数を設定します
queue.mem.flush.min_events 2048 イベントがOutputに出力される最小単位を設定します
queue.mem.flush.timeout 1s イベントがOutputに出力されるまでの最大待機時間を設定します
max_procs CPU論理コア数 同時に実行できるCPUの最大数を設定します
  • max_procsはCPU論理コア数よりも少し多めに割り当てるのが性能を発揮します。
  • eventsは大きくすればするだけメモリ使用率が増加します。(キューイングのバケツの大きさ)
  • flush.min_eventsの値はeventsの範囲内に収まるように設定します。(バケツからイベントが溢れないようにする)
  • flush.min_eventsを大きい値にすることでOutputスループットが向上します。(効率よくまとめて送ることが出来るから)
  • flush.min_eventsflush.timeoutを0に設定するとイベントがメモリキューに入ったら何も待たずにすぐにOutputします。

【参考】
Specify general settings
Configure the internal queue

Logstash outputのパラメータ値

設定項目 デフォルト値 説明
worker 1 LogstashへのOutput処理に利用するスレッド数を設定します
loadbalance false Output先のLogstashへ負荷分散するか否かを設定します
ttl 0s Logstashとの接続時間(秒)を設定します
pipelining 2 LogstashからのACKを待っている間に非同期的に送信されるバッチ数を設定します
bulk_max_size 2048 一度にLogstashに送るイベント数を設定します
  • workerはLogstashとの接続数になります。loadbalanceをtrueにした場合、worker×Logstash台数で合計のWorker数となります。
  • 接続先のhostsにNLB_FQDNを1つ設定している場合でもloadbalanceをtrueにしないとNLB配下のLogstash1台に対しての接続しか張られません。
  • ttlは0だと無効となり、接続が張りっぱなしになります。
  • pipeliningを無効にしないとttlを有効に出来ないので、NLBを接続先にする場合は注意が必要です。
  • bulk_max_sizeを大きく設定することで1回にまとめて多くのイベントを効率良く送ることが出来ます。
  • bulk_max_sizeだけを大きくしても、先に説明したflush.min_eventsを大きくしておかないと効果がありません。

【参考】
Configure the Logstash output

余談

Beats5.xまでは複数のoutputを設定することが出来ましたが、6.xからは1つにしかoutput出来ません。
Beatsには複雑な処理をさせずにシンプルな処理に特化させようという意図がくみ取れますが、たまにファイルにも出したいと思うのが人の性という。。。
またFilebeat6.3からflush.min_eventsflush.timeoutのデフォルト値が変わってました。こまめに追うのはきついですね(*´Д`)

【参考】
Configure Output

まとめ

以上、主なチューニングポイントでした。いかがでしたでしょうか?
もっと良いパラメータ値があれば是非コメント頂けますと有り難い限りです^^

軽量なエージェントにCPUとメモリを大量に使わせて、Logstashへのスループットを上げようというのが
そもそもembulkのようなバッチ処理用のエージェントではないでしょ!という声が聞こえてきそうですねw

19
17
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
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?