FLUENTD
株式会社イプロス

外山 寛
Fluentd

自己紹介
• 外山 寛

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

• Github

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

• Twitter

– @toyama0919

1

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

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

2

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

フォローすれば
Fluentdに
詳しくなれるかも!
3

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

1 Fluentd の概要
2 プラグインの概要
3 イプロスの使用例
4 Fluentdライブラリ
5 まとめ

4

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

覚えておいて確実
に損はない技術
応用範囲は広い!
5

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

2〜4がfluentdの守備範囲
6

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

9

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

10

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
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】
Fluentd

プラグイン
(plugin)

12

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

よくあるケース

14

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

よくあるケース

growthforecast

集約サーバー

15

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

16

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

17

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

Redshiftを
使っています。

18

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

19

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

Leftronicへの転送経路

集約サーバー

20

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

例えばクローラ、途中で何が?
Apacheのログをtailし、
UserAgentがクローラであるもののみ
を抽出し、
UserAgentをグルーピングして
Leftronicに転送。
また、トータル件数もLeftronicに転送
。

21

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

使っているプラグイン
rewrite-tag-filter
woothee
クローラを判定してグルーピングする。

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

datacounter
Group by をfluentd上で可能にする。

leftronic
Leftronicにデータを送信する。
22

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

代表的なプラグイン
mongo
rewrite-tag-filter
s3
datacounter
td
growthforecast
mail

23

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

Fluent-plugin-rewrite-tag-filter
データを処理して振り分けできる。
正規表現が使える。
キーを指定できる。
プレイスホルダーが使える。(ホスト名
など)
基本中の基本のプラグインとも言える
。

24

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
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】
Fluentd

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

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

fluent-logger

27

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

28

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
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】
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】
Fluentd

対応言語
Ruby
Java
Scala
PHP
Perl
Node.js
Python

31

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

td-logger

32

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
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】
Fluentd

Treasure Dataへ直接転送

35

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

まとめ

36

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

Fluentdを
支えているもの。

37

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

38

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

コミュニティは偉大

39

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】
Fluentd

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

COPYRIGHT © 2013 IPROS CORPORATION. ALL RIGHTS RESERVED.

【CONFIDENTIAL】

Fluentd