Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

of

Fluentd1.2 & Fluent Bit Slide 1 Fluentd1.2 & Fluent Bit Slide 2 Fluentd1.2 & Fluent Bit Slide 3 Fluentd1.2 & Fluent Bit Slide 4 Fluentd1.2 & Fluent Bit Slide 5 Fluentd1.2 & Fluent Bit Slide 6 Fluentd1.2 & Fluent Bit Slide 7 Fluentd1.2 & Fluent Bit Slide 8 Fluentd1.2 & Fluent Bit Slide 9 Fluentd1.2 & Fluent Bit Slide 10 Fluentd1.2 & Fluent Bit Slide 11 Fluentd1.2 & Fluent Bit Slide 12 Fluentd1.2 & Fluent Bit Slide 13 Fluentd1.2 & Fluent Bit Slide 14 Fluentd1.2 & Fluent Bit Slide 15 Fluentd1.2 & Fluent Bit Slide 16 Fluentd1.2 & Fluent Bit Slide 17 Fluentd1.2 & Fluent Bit Slide 18 Fluentd1.2 & Fluent Bit Slide 19 Fluentd1.2 & Fluent Bit Slide 20 Fluentd1.2 & Fluent Bit Slide 21 Fluentd1.2 & Fluent Bit Slide 22 Fluentd1.2 & Fluent Bit Slide 23 Fluentd1.2 & Fluent Bit Slide 24 Fluentd1.2 & Fluent Bit Slide 25 Fluentd1.2 & Fluent Bit Slide 26 Fluentd1.2 & Fluent Bit Slide 27 Fluentd1.2 & Fluent Bit Slide 28 Fluentd1.2 & Fluent Bit Slide 29 Fluentd1.2 & Fluent Bit Slide 30 Fluentd1.2 & Fluent Bit Slide 31 Fluentd1.2 & Fluent Bit Slide 32 Fluentd1.2 & Fluent Bit Slide 33 Fluentd1.2 & Fluent Bit Slide 34 Fluentd1.2 & Fluent Bit Slide 35 Fluentd1.2 & Fluent Bit Slide 36 Fluentd1.2 & Fluent Bit Slide 37 Fluentd1.2 & Fluent Bit Slide 38
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

2 Likes

Share

Download to read offline

Fluentd1.2 & Fluent Bit

Download to read offline

Deep dive into internal of Fluentd1.2: trace it in the level of source code. Giving a brief introduction to Fluent Bit and compare its performance with Fluentd.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Fluentd1.2 & Fluent Bit

  1. 1. Fluentd1.2 & Fluent Bit
  2. 2. About Me  水野 聖也 @ saint1991 (GitHub)  CyberAgent AdTech Studio  共通基盤データエンジニア => MLOps系エンジニア  fluentの中の人ではない 2
  3. 3. Topics  Internal Fluentd v1.2  0.14以降ではここが変わった  Fluent Bitについて  Fluentd vs Fluent Bit性能比較  AdTech StudioとFluentd (利用事例紹介的な)  そんなに変わったことはしてないので,尺が余って しょうがなければ話します. 3
  4. 4. Internal Fluentd 1.2
  5. 5. Internal Fluentd v1.2 5 entrypoint Supervisor Configの読み込み ServerEngine multi process server ServerModule WorkerModule  Metricsの管理  Workerの管理 • シグナルハンドリングをするRPC spawn Engine  Pluginのライフサイクル管理 • configure • start • … WorkerModule … Engine Supervisor#run_worker マルチプロセス
  6. 6. ServerModuleの役割  Metrics Server  record数などいくつかmetricsを内部でとっている. 6
  7. 7. ServerModuleの役割  Signalのハンドリング  SIGINT, SIGTERM, SIGHUP • メモリバッファ flush => terminate • configもreloadされる.  SIGUSR1: • バッファの強制flush 7 ServerModule memory buffer HTTP RPC WorkerModule flush → terminate ServerModule buffer HTTP RPC WorkerModule flush
  8. 8. ServerModuleの役割  Signalのハンドリング  SIGCONT: thread dump 8 ServerModule HTTP RPC WorkerModule dump Internal State https://github.com/frsyuki/sigdump
  9. 9. Internal Fluentd v1.2 9 RootAgent  Configに基づきPluginの接続関係を構築  Pluginのロード (Pluginのconfigureもここ) Engine configure EventRouter init  各種初期化 (EventRouterもここで作成) run  各種Pluginのstart Pluginの起動
  10. 10. Plugins overview 10 Input Parser Filters “1526795940, 480x320,…” データソースからログを取得 データの中身をみて任意の処理 ログをparseして構造化 @time Fluent::EventTime(1526795940) @record { size: 480x320, …} Formatter データのフォーマッティング Buffer Output データチャンクのバッファリングデータチャンクのバッファリング データのチャンクの送信 生ログ
  11. 11. Internal Fluentd v1.2 11 Input Parser EventRouter parse Filters <input.bid> タグ Pipeline タグ + event Queue Output Buffer Format chunkmeta … emit events generate_chunk enqueue flush thread … write flush thread Fluent::EventStream emit_stream
  12. 12. ※ リンク先のPlugin  Pluginは馴染みのあるものを読むのがオススメ  自分は下記のPluginを辿りました.  Input: tail  Parser: csv  Filter: grep  Formatter: msgpack  Buffer: file  Output: stdout 12
  13. 13. What’s new in v0.14?
  14. 14. Fluentd1.x  Fluentd v0.12  Fluentd v0.14  Fluentd v1.0 14
  15. 15. What’s new?  Bufferのflush処理が高速化  bufferへのcommitとflushが非同期に  flushの条件にサイズ,時間を指定可能に  マルチプロセスワーカーのビルトインサポート  特定のprocessのみに対する 設定が記述が可能になった.  マルチプロセス非対応の Pluginも併用可能に! 15 <system> workers 4 <system> <worker 0> <source> @type tail </source> </worker>
  16. 16. What’s new?  EventTimeがナノ秒までサポート  Fluent Protocol v1 @ forward  TLSのサポートで安全性が向上  Compressionのサポート(CPUは余計に食うので注意)  ただしgzipは外のコマンドを使った方がベター 16
  17. 17. Fluent Bit
  18. 18. Fluent Bit  超軽量版Fluentd  主にIoTなど組み込み機器向けとしてリリース  通常のサーバでももちろん使える. 18 Fluent Bit Fluentd Language C Ruby (& C) Dependencies Nothing Ruby & some gems Memory footprint ~450KB ~40MB Plugins around 35 more than 750
  19. 19. Fluent Bit  StarTechConf 2015でIoT向けfluentとして紹介  本格的な情報が出だしたのはKubeCon2016から?  現在はv0.13.2がstable  事例は(特に日本では)あまりまだ見かけないものの 簡単な処理ができるだけの機能は大方揃ってきている. 19 Logging for Containers by Eduardo Silva, Treasure Data @ Seattle https://www.youtube.com/watch?v=395iaisdZEY https://www.slideshare.net/treasure-data/unifying-events-and-logs-into-the-cloud-55392628
  20. 20. Overview of Fluent Bit 20 flb_engineentrypoint シグナルハンドリング Configの読み込み Pluginの初期化 ライフライクルの管理 Plugins 内部構造の大枠はほぼ同じ
  21. 21. おなじみ系Plugins (抜粋) 21 Input Parser Filter Buffer Output • tail • forward • TCP • JSON • RegExp • grep • Kubernetes • file • memory • forward • kafka • Elasticsearch • File • NATS • Treasure Data Output系が若干少ないがアプリケーションログや kubernetesのログ収集には十分使えそう!
  22. 22. How to write plugins?  ビルトインのプラグインは全てC言語  汎用的なら本家リポジトリにPR (まだ少ないのでチャンス!)  Fluent Bit自体をライブラリとして使い, pluginを足したオレオレFluent Bitを自前ビルド  (Library Mode) 22
  23. 23. Fluentdみたいに 外付けできないの? 23
  24. 24. How to write plugins?  外付けのPluginはGolangで書ける!  共有ライブラリとしてビルドして読み込ませることで Pluginとして動く! 24 https://github.com/fluent/fluent-bit/blob/master/GOLANG_OUTPUT_PLUGIN.md https://github.com/fluent/fluent-bit-go ※まだOutput Pluginのみ
  25. 25. How to write plugins? package main import "C" import ( "github.com/fluent/fluent-bit-go/output" "unsafe" ) //export FLBPluginInit func FLBPluginInit(ctx unsafe.Pointer) int { return output.FLBPluginRegister(ctx, ”myout", ”Sample Plugin!") } //export FLBPluginFlush func FLBPluginFlush(data unsafe.Pointer, length C.int, tag *C.char) int { // do something with the data return 0 } //export FLBPluginExit func FLBPluginExit() int { return 0 } func main() { } 25
  26. 26. How to write plugins? 1. 共有ライブラリとしてビルド 2. パスに追加してFluent Bitを起動 26 $ go build -buildmode=c-shared -o out_myout.so my_outplugin.go $ fluent-bit -e /path/to/out_myout.so -i cpu -o myout
  27. 27. Fluentd vs Fluent Bit 性能比較
  28. 28. ザルな性能評価  fine tuningはしてません  こちらの手順でnetwork kernelのみ 28 VS td-agent-bit td-agent 3 td-agent 3 In_dummy out_forward in_forward out_file td-agent 3 out_fileIn_dummy out_forward in_forward VM OS: Ubuntu 16.04.4 LTS CPU: Intel(R) Xeon(R) CPU E5-2680 v3 2.50GHz Memory: 14GB
  29. 29. ザルな性能評価 29 td-agent 3 out_file td-agent 3 out_file VM Ubuntu 16.04.4 LTS 4 core 2.4GHz 14GB memory <source> @type forward port 24224 bind 0.0.0.0 </source> <match fluent.client.in> @type file path /var/log/fluent <buffer> @type memory flush_interval 30s flush_mode interva flush_thread_count 4 overflow_action throw_exception </buffer> </match>
  30. 30. ザルな性能評価 30 td-agent 3 <source> @type dummy tag fluent.client.in rate 500000 auto_increment_key sequence </source> <match fluent.client.in> @type forward <server> host 10.8.2.74 port 24224 </server> <buffer> @type memory flush_interval 5s flush_mode interval flush_thread_count 4 overflow_action throw_exception </buffer> </match>
  31. 31. ザルな性能評価 31 td-agent-bit [SERVICE] Flush 5 [INPUT] Name dummy Tag fluent.client.in Rate 500000 [OUTPUT] Name forward Match fluent.client.in Host 10.8.2.74 Port 24224
  32. 32. Throughput 32 +8.63MB/s (参考記録) 1.64MB/s (約21000 records /s) (約+138000 records /s) 5倍以上!
  33. 33. 実際には  Fluent Bitの計測ではServer側のFluentdが 追いつかなくなってしまった…  公式では500000 records / s * coreと言われている.  Fluentdもまだまだチューニングの余地あり. 33
  34. 34. Conclusion  プラグイン数はFluentdの圧勝  性能面ではFluent Bitの圧勝 34 +750 vs 35 1.64MB/s vs +8.43MB/s
  35. 35. Conclusion  簡単なことしかしないところなら積極的に Fluent Bitを試していってよさそう!  Productionにはまだやや早い感  ドキュメントなど情報が少なめ  プラグインによって完成度に差がある. 35
  36. 36. Thank you!!
  37. 37. リファレンス  KubeCon2018 中川さんの発表  Fluentdの基礎的な概要  ログ収集のパターン  KubeCon2018 Silvaさんの発表  ユーザの質疑に一問一答していくセッション  ParserをPod定義側に記述できないか談義  リソース調整 37 https://www.youtube.com/watch?v=BtGOTIkxnGE https://www.youtube.com/watch?v=TqW-b60AiNk
  38. 38. リファレンス  KubeCon2016 Silvaさんの発表  Fluent Bitに関して一番詳しい  あらびきさんの記事  Fluentdの内部の詳細な解説  障害対応する際にも! 38 https://www.youtube.com/watch?v=395iaisdZEY https://abicky.net/2017/10/23/110103/
  • KenTakehara

    Jul. 10, 2019
  • yasukazunagatomi

    May. 22, 2018

Deep dive into internal of Fluentd1.2: trace it in the level of source code. Giving a brief introduction to Fluent Bit and compare its performance with Fluentd.

Views

Total views

3,342

On Slideshare

0

From embeds

0

Number of embeds

1,098

Actions

Downloads

16

Shares

0

Comments

0

Likes

2

×