$30 off During Our Annual Pro Sale. View Details »

fluentd 101

threetreeslight
August 22, 2018
17

fluentd 101

fluentd 101 on Shinjuku.rb #64

threetreeslight

August 22, 2018
Tweet

Transcript

  1. fluentd 101 @threetreeslight on shinjuku.rb #64 1 / 27

  2. とは? ⼀元的なロギングレイヤー( Unified Logging Layer ) を提供する middleware log aggregator,

    log shipper fluentd 2 / 27
  3. ユースケース 1. アプリのログ集約 2. サービスログの監視 3. データ分析 4. データストアへの接続 5.

    ストリーム処理 3 / 27
  4. なぜUnified する必要があるのか? ログデータを利⽤できるようにするためにバックエンド側のシステムで は多⼤な努⼒を⽀払ってきた so much effort is wasted trying

    to make various backend systems understand log data. 4 / 27
  5. write complex regular expressions skill is a heroic skill 5

    / 27
  6. 欲しいもの 1. log producers と consumers で 共通なインターフェース 2. ⽔平⽅向にスケールし、リトライ・レジュームも可能

    3. 新しいデータ⼊出⼒系統への対応がplugin でお⼿軽にできる 6 / 27
  7. fluentd 全てを満たす 7 / 27

  8. イベントの加⼯も簡単 8 / 27

  9. Filters いらないデータすてたり、データのマスキング( アプリケーションでや ったほうが良い) とか容易 A Filter aims to behave

    like a rule to pass or reject an event. The Filter basically will accept or reject the Event based on its type and rule defined 9 / 27
  10. 01 <filter test.cycle> 02 @type grep 03 <exclude> 04 key

    action 05 pattern ^logout$ 06 </exclude> 07 </filter> 10 / 27
  11. Labels label 使って特定環境のログデータの処理とか容易 to define new Routing sections that do

    not follow the top to bottom order 11 / 27
  12. 01 <label @STAGING> 02 <filter test.cycle> 03 @type grep 04

    <exclude> 05 key action 06 pattern ^logout$ 07 </exclude> 08 </filter> 09 10 <match test.cycle> 11 @type stdout 12 </match> 13 </label> 12 / 27
  13. Buffers buffering したりretry してくれるのでアウトプット先への負荷コントロ ールなども容易 Output plugin in buffered mode

    stores received events into buffers first and write out buffers to a destination by meeting flush conditions. 13 / 27
  14. Plugins 新しいデータ⼊出⼒への対応を容易にする 14 / 27

  15. 1. Input Plugin 2. Output Plugin 3. Filter Plugin 4.

    Parser Plugin 5. Formatter Plugin 6. Buffer Plugin 7. Storage Plugin 15 / 27
  16. Input Plugin データソース⽤、ファイルを呼んだりlogger からforwarding されてきた りできる An input plugin typically

    creates a thread socket and a listen socket. It can also be written to periodically pull data from data sources. 16 / 27
  17. Parser Plugin インプットソースのデータ処理するやつ。filter との使い分けが重要。 cannot parse the user’s custom data

    format (for example, a context- dependent grammar that can’t be parsed with a regular expression). 17 / 27
  18. Filter Plugin label やtag に基づいてデータ整形するやついろいろできる 1. 削ったり 2. イベントの追加したり 3.

    マスキングしたり 18 / 27
  19. Output Plugin いろんな出⼒先に接続するやつ 19 / 27

  20. Formatter Plugin Sometimes, the output format for an output plugin

    does not meet one’s needs. 出⼒フォーマットを決定するやつ 20 / 27
  21. Buffer Plugin memory やfile によるbuffering storage 21 / 27

  22. Storage Plugin plugin による状態(接続先への転送量など)の統計情報を蓄積できたり 22 / 27

  23. いろいろできる 23 / 27

  24. もう少し内部を⾒ てみる 24 / 27

  25. 25 / 27

  26. ここからは! abicky さんのblog で内部構造やdata lost について⾒ていく! https://abicky.net/2017/10/23/110103/ 26 / 27

  27. ref Fluentd Blog - Unified Logging Layer: Turning Data into

    Action fluentd - Buffer Plugin Overview あらびき⽇記 - fluentd の基礎知識 sonots:blog - fluentd でログが⽋損する可能性を考える 27 / 27