Fluentd

4,170 views

Published on

Fluentd

  1. 1. FLUENTD 株式会社イプロス 外山 寛
  2. 2. Fluentd 自己紹介 • 外山 寛 – 株式会社イプロス – チーフエンジニア • Github – @toyama0919 – https://github.com/toyama0919/ • Twitter – @toyama0919 1 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  3. 3. Fluentd Twitter つぶやき噂生成によると? http://140note.hitonobetsu.com/rumor/ 2 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  4. 4. Fluentd フォローすれば Fluentdに 詳しくなれるかも! 3 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  5. 5. Fluentd 1 Fluentd の概要 2 プラグインの概要 3 イプロスの使用例 4 Fluentdライブラリ 5 まとめ 4 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  6. 6. Fluentd 覚えておいて確実 に損はない技術 応用範囲は広い! 5 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  7. 7. Fluentd BigDataの活用までの道のり 1,データの生成。 2,データの収集。 3,蓄積と処理。 4,データマイニングと可視化 5,監視やレポート 2〜4がfluentdの守備範囲 6 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  8. 8. Fluentd Fluentdの特徴、再度おさらい あらゆるデータソースからログを収集 、転送、集約できる。 インストールや設定導入が簡単。 プラグインアーキテクチャを採用して おり、新規プラグイン・拡張開発を自 由に行なう事ができる。 HA構成も考慮されており、低レイヤー (クラスタなど)での冗長に対する考 慮が必要ない。 7 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  9. 9. Fluentd プラグイン アーキテクチャ って何? 8 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  10. 10. Fluentd プラグインアーキテクチャ プラグインをインストールすることに よって機能をどんどん追加できる。 プラグインは基本的にINとOUTを制御 するシンプルな構造。 プラグインは有志の手で実装されてお り、200弱存在する。 プラグインはgemで作成し、fluent-gem コマンドでインストールする。 9 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  11. 11. Fluentd td-agentは 素のfluentdに幾つかのプラグインが同 梱されている。 Rubyすらも同梱しており、すでにサー バーにrubyがインストールされていた としても競合しない。 「Fluentd安定版の配布パッケージ」と いう位置づけ。 10 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  12. 12. Fluentd td-agent plugins fluent-plugin-s3 fluent-plugin-mongo fluent-plugin-scribe fluent-plugin-webhdfs fluent-plugin-td 11 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  13. 13. Fluentd プラグイン (plugin) 12 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  14. 14. Fluentd プラグインの種類 インプットプラグイン データのINにあたるプラグイン tail、twitter、mysqlなどが該当。 アウトプットプラグイン これが圧倒的に多い。 S3、growthforecastなどが該当。 主にサードパーティのサービスにデ ータを送信するものが多い。 13 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  15. 15. Fluentd よくあるケース 14 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  16. 16. Fluentd よくあるケース growthforecast 集約サーバー 15 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  17. 17. Fluentd イプロスの事例 KPIダッシュボード 16 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  18. 18. Fluentd 17 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  19. 19. Fluentd Redshiftを 使っています。 18 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  20. 20. Fluentd 19 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  21. 21. Fluentd Leftronicへの転送経路 集約サーバー 20 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  22. 22. Fluentd 例えばクローラ、途中で何が? Apacheのログをtailし、 UserAgentがクローラであるもののみ を抽出し、 UserAgentをグルーピングして Leftronicに転送。 また、トータル件数もLeftronicに転送 。 21 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  23. 23. Fluentd 使っているプラグイン rewrite-tag-filter woothee クローラを判定してグルーピングする。 groupcounter レコードの件数を正規表現等で指定してカウント する。 datacounter Group by をfluentd上で可能にする。 leftronic Leftronicにデータを送信する。 22 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  24. 24. Fluentd 代表的なプラグイン mongo rewrite-tag-filter s3 datacounter td growthforecast mail 23 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  25. 25. Fluentd Fluent-plugin-rewrite-tag-filter データを処理して振り分けできる。 正規表現が使える。 キーを指定できる。 プレイスホルダーが使える。(ホスト名 など) 基本中の基本のプラグインとも言える 。 24 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  26. 26. Fluentd Fluent-plugin-rewrite-tag-filter <match access> type rewrite_tag_filter capitalize_regex_backreference yes rewriterule1 path .(gif|jpe?g|png|pdf|zip)$ clear rewriterule2 status !^200$ clear rewriterule3 domain .+ site.pageview </match> <match site.pageview> </match> <match clear> type null </match> 25 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  27. 27. Fluentd fluentdは当然 プログラミング言語 からも扱えます。 26 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  28. 28. Fluentd fluent-logger 27 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  29. 29. Fluentd fluent-loggerとは? Fluentdのmatchディレクティブに対し て直接バッファを送信する。 対応言語多数あり、後述。 JavaだったらHashMap、Rubyだった らHashといったようなKeyValue形式の オブジェクトをそのまま送信できる。 内部的にはMessagePackという形式に 変換して送信。 28 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  30. 30. Fluentd Rubyの場合 require 'fluent-logger' # Loggerを宣言 log = Fluent::Logger::FluentLogger.new('myapp', :host=>'localhost', :port=>24224) # matchディレクティブに対して送信 # hashを引数にしている log.post("access", {”id"=>”1”,"agent"=>"foo”}) 29 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  31. 31. Fluentd Javaの場合 private static FluentLogger LOG = FluentLogger.getLogger(”myapp"); Map<String, String> data = new HashMap<String, String>(); data.put(”id", 1); data.put(”agent", ”foo"); LOG.log(”access", data); myapp.accessディレクティブにデー タが送信される。 30 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  32. 32. Fluentd 対応言語 Ruby Java Scala PHP Perl Node.js Python 31 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  33. 33. Fluentd td-logger 32 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  34. 34. Fluentd td-loggerとは? Treasure Dataにデータを送信する事に 特化したLogger。 送信するtagを指定できるので、 Treasure Dataじゃないmatchに対して も送信は可能。 Java、Rubyがある。 Fluentdが起動していなくても直接 Treasure Dataに転送できる。 33 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  35. 35. Fluentd Railsで使う場合 TD.event.post('table_name', {:foo=>:bar}) # config/treasure_data.yml development: apikey: "YOUR_API_KEY" database: rails_development debug_mode: true # enable debug mode production: apikey: "YOUR_API_KEY" database: rails_production debug_mode: false 34 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  36. 36. Fluentd Treasure Dataへ直接転送 35 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  37. 37. Fluentd まとめ 36 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  38. 38. Fluentd Fluentdを 支えているもの。 37 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  39. 39. Fluentd それは 強力なコミュニティ。 38 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  40. 40. Fluentd コミュニティは偉大 39 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  41. 41. Fluentd 一緒にプラグインを 作ってfluentdを 発展させましょう! 40 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】
  42. 42. Fluentd ご静聴ありがとう ございました。 41 COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【CONFIDENTIAL】

×