42
株株株株株株株株 株株 FLUENTD

Fluentd

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Fluentd

株式会社イプロス外山 寛

FLUENTD

Page 2: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

2

自己紹介• 外山 寛

–株式会社イプロス–チーフエンジニア

• Github– @toyama0919– https://github.com/toyama0919/

• Twitter– @toyama0919

Page 3: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

3

Twitter つぶやき噂生成によると?

http://140note.hitonobetsu.com/rumor/

Page 4: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

4

フォローすればFluentdに

詳しくなれるかも!

Page 5: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

5

Fluentd の概要1

プラグインの概要2

3

Fluentdライブラリ4

まとめ5

イプロスの使用例

Page 6: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

6

覚えておいて確実に損はない技術

応用範囲は広い!

Page 7: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

7

BigDataの活用までの道のり1,データの生成。2,データの収集。3,蓄積と処理。4,データマイニングと可視化5,監視やレポート

2〜4が fluentdの守備範囲

Page 8: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

8

Fluentdの特徴、再度おさらい

あらゆるデータソースからログを収集、転送、集約できる。インストールや設定導入が簡単。プラグインアーキテクチャを採用しており、新規プラグイン・拡張開発を自由に行なう事ができる。HA構成も考慮されており、低レイヤー(クラスタなど)での冗長に対する考慮が必要ない。

Page 9: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

9

プラグインアーキテクチャって何?

Page 10: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

10

プラグインアーキテクチャ

プラグインをインストールすることによって機能をどんどん追加できる。プラグインは基本的に INと OUTを制御するシンプルな構造。プラグインは有志の手で実装されており、 200弱存在する。プラグインは gemで作成し、 fluent-gemコマンドでインストールする。

Page 11: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

11

td-agentは

素の fluentdに幾つかのプラグインが同梱されている。Rubyすらも同梱しており、すでにサーバーに rubyがインストールされていたとしても競合しない。「 Fluentd安定版の配布パッケージ」という位置づけ。

Page 12: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

td-agent

plugins

12

fluent-plugin-s3

fluent-plugin-mongo

fluent-plugin-scribe

fluent-plugin-webhdfs

fluent-plugin-td

Page 13: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

13

プラグイン(plugin)

Page 14: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

14

プラグインの種類

インプットプラグインデータの INにあたるプラグインtail、 twitter、mysqlなどが該当。アウトプットプラグインこれが圧倒的に多い。S3、 growthforecastなどが該当。主にサードパーティのサービスにデータを送信するものが多い。

Page 15: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

15

よくあるケース

Page 16: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

16

よくあるケース

集約サーバー

growthforecast

Page 17: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

17

イプロスの事例KPIダッシュボード

Page 18: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

18

Page 19: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

19

Redshiftを使っています。

Page 20: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

20

Page 21: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

21

Leftronicへの転送経路

集約サーバー

Page 22: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

22

Apacheのログを tailし、UserAgentがクローラであるもののみを抽出し、UserAgentをグルーピングして

Leftronicに転送。また、トータル件数も Leftronicに転送。

例えばクローラ、途中で何が?

Page 23: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

23

使っているプラグイン

rewrite-tag-filter

wootheeクローラを判定してグルーピングする。

groupcounterレコードの件数を正規表現等で指定してカウントする。

datacounterGroup by を fluentd上で可能にする。

leftronicLeftronicにデータを送信する。

Page 24: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

24

代表的なプラグイン

mongo

rewrite-tag-filter

s3

datacounter

td

growthforecast

mail

Page 25: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

25

Fluent-plugin-rewrite-tag-filter

データを処理して振り分けできる。正規表現が使える。キーを指定できる。プレイスホルダーが使える。 (ホスト名など )

基本中の基本のプラグインとも言える。

Page 26: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

26

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

Fluent-plugin-rewrite-tag-filter

Page 27: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

27

fluentdは当然プログラミング言語からも扱えます。

Page 28: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

28

fluent-logger

Page 29: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

29

Fluentdのmatchディレクティブに対して直接バッファを送信する。対応言語多数あり、後述。Javaだったら HashMap、 Rubyだったら Hashといったような KeyValue形式のオブジェクトをそのまま送信できる。内部的にはMessagePackという形式に変換して送信。

fluent-loggerとは?

Page 30: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

30

require 'fluent-logger'

# Loggerを宣言log = Fluent::Logger::FluentLogger.new('myapp', :host=>'localhost', :port=>24224)

# matchディレクティブに対して送信# hashを引数にしているlog.post("access", {”id"=>”1”,"agent"=>"foo”})

Rubyの場合

Page 31: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

31

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);

Javaの場合

myapp.accessディレクティブにデータが送信される。

Page 32: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

32

Ruby

Java

Scala

PHP

Perl

Node.js

Python

対応言語

Page 33: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

33

td-logger

Page 34: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

34

Treasure Dataにデータを送信する事に特化した Logger。送信する tagを指定できるので、 Treasure Data じゃないmatchに対しても送信は可能。Java、 Rubyがある。Fluentdが起動していなくても直接Treasure Dataに転送できる。

td-loggerとは?

Page 35: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

35

TD.event.post('table_name', {:foo=>:bar})

# config/treasure_data.ymldevelopment: apikey: "YOUR_API_KEY" database: rails_development debug_mode: true # enable debug mode

production: apikey: "YOUR_API_KEY" database: rails_production debug_mode: false

Railsで使う場合

Page 36: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

36

Treasure Dataへ直接転送

Page 37: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

37

まとめ

Page 38: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

38

Fluentdを支えているもの。

Page 39: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

39

それは強力なコミュニティ。

Page 40: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

40

コミュニティは偉大

Page 41: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

41

一緒にプラグインを作って fluentdを発展させましょう!

Page 42: Fluentd

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED. 【 CONFIDENTIAL】

Fluentd

42

ご静聴ありがとうございました。