28
fluent-plugin-norikra Fluentd Casual Talks #3 2013/12/13(Fri) @tagomoris 131213日金曜日

fluent-plugin-norikra #fluentdcasual

Embed Size (px)

DESCRIPTION

Talks about fluent-plugin-norikra in Fluentd Casual Talks #3

Citation preview

Page 1: fluent-plugin-norikra #fluentdcasual

fluent-plugin-norikra

Fluentd Casual Talks #32013/12/13(Fri)@tagomoris

13年12月13日金曜日

Page 2: fluent-plugin-norikra #fluentdcasual

TAGOMORI Satoshi (@tagomoris)LINE Corp.

Hadoop, Fluentd, Norikra, ...

13年12月13日金曜日

Page 3: fluent-plugin-norikra #fluentdcasual

13年12月13日金曜日

Page 4: fluent-plugin-norikra #fluentdcasual

Norikra:Schema-less Stream Processing with SQL

13年12月13日金曜日

Page 5: fluent-plugin-norikra #fluentdcasual

Norikra(1):Schema-less event stream:

Add/Remove data fields whenever you want

SQL:No more restarts to add/remove queriesw/ JOINs, w/ SubQueriesw/ UDF

Truly Complex events:Nested Hash/Array, accessible directly from SQL

13年12月13日金曜日

Page 6: fluent-plugin-norikra #fluentdcasual

Norikra(2):Open source software:

Licensed under GPLv2Based on EsperUDF plugins from rubygems.org

Ultra-fast bootstrap & small start:3mins to install/start1 server

13年12月13日金曜日

Page 7: fluent-plugin-norikra #fluentdcasual

Norikra Queries: (1)

SELECT name, ageFROM events

13年12月13日金曜日

Page 8: fluent-plugin-norikra #fluentdcasual

Norikra Queries: (1)

SELECT name, ageFROM events

{“name”:”tagomoris”, “age”:34, “address”:”Tokyo”, “corp”:”LINE”, “current”:”Shibuya”}

{“name”:”tagomoris”,”age”:34}

13年12月13日金曜日

Page 9: fluent-plugin-norikra #fluentdcasual

Norikra Queries: (1)

SELECT name, ageFROM events

{“name”:”tagomoris”, “address”:”Tokyo”, “corp”:”LINE”, “current”:”Shibuya”}

nothing

13年12月13日金曜日

Page 10: fluent-plugin-norikra #fluentdcasual

Norikra Queries: (2)

SELECT name, ageFROM events

WHERE current=”Shibuya”

{“name”:”tagomoris”, “age”:34, “address”:”Tokyo”, “corp”:”LINE”, “current”:”Shibuya”}

{“name”:”tagomoris”,”age”:34}

13年12月13日金曜日

Page 11: fluent-plugin-norikra #fluentdcasual

Norikra Queries: (2){“name”:”kiyoto”, “age”:99, “address”:”CA”, “corp”:”TD”, “current”:”MV”}

SELECT name, ageFROM events

WHERE current=”Shibuya”

nothing

13年12月13日金曜日

Page 12: fluent-plugin-norikra #fluentdcasual

Norikra Queries: (3)

SELECT age, COUNT(*) as cntFROM events.win:time_batch(5 mins)

GROUP BY age

13年12月13日金曜日

Page 13: fluent-plugin-norikra #fluentdcasual

Norikra Queries: (3)

SELECT age, COUNT(*) as cntFROM events.win:time_batch(5 mins)

GROUP BY age

{“name”:”tagomoris”, “age”:34, “address”:”Tokyo”, “corp”:”LINE”, “current”:”Shibuya”}

{”age”:34,”cnt”:3}, {“age”:33,”cnt”:1}, ...

every 5 mins

13年12月13日金曜日

Page 14: fluent-plugin-norikra #fluentdcasual

Norikra Queries: (4)

SELECT age, COUNT(*) as cntFROM

events.win:time_batch(5 mins)GROUP BY age

{“name”:”tagomoris”, “age”:34, “address”:”Tokyo”, “corp”:”LINE”, “current”:”Shibuya”}

{”age”:34,”cnt”:3}, {“age”:33,”cnt”:1}, ...every 5 mins

SELECT max(age) as maxFROM

events.win:time_batch(5 mins)

{“max”:51}

13年12月13日金曜日

Page 15: fluent-plugin-norikra #fluentdcasual

Norikra Queries: (5)

SELECT age, COUNT(*) as cntFROM events.win:time_batch(5 mins)

GROUP BY age

{“name”:”tagomoris”, “user:{“age”:34, “corp”:”LINE”, “address”:”Tokyo”}, “current”:”Shibuya”, “speaker”:true, “attend”:[true,true,false, ...]}

13年12月13日金曜日

Page 16: fluent-plugin-norikra #fluentdcasual

Norikra Queries: (5)

SELECT user.age, COUNT(*) as cntFROM events.win:time_batch(5 mins)

GROUP BY user.age

{“name”:”tagomoris”, “user:{“age”:34, “corp”:”LINE”, “address”:”Tokyo”}, “current”:”Shibuya”, “speaker”:true, “attend”:[true,true,false, ...]}

13年12月13日金曜日

Page 17: fluent-plugin-norikra #fluentdcasual

Norikra Queries: (5)

SELECT user.age, COUNT(*) as cntFROM events.win:time_batch(5 mins)

WHERE current=”Kyoto” AND attend.$0 AND attend.$1GROUP BY user.age

{“name”:”tagomoris”, “user:{“age”:34, “corp”:”LINE”, “address”:”Tokyo”}, “current”:”Shibuya”, “speaker”:true, “attend”:[true,true,false, ...]}

13年12月13日金曜日

Page 18: fluent-plugin-norikra #fluentdcasual

Before: Fluentd

<match for.target.service.application.logs> type numeric_monitor unit minute tag service.response output_key_prefix request_api aggregate all monitor_key api_response_time percentiles 50,90,95,98,99</match>

EACH SERVICES

... AND RESTART OF FLUENTD!!!!!!!!!!!!!!

13年12月13日金曜日

Page 19: fluent-plugin-norikra #fluentdcasual

After: Norikra

SELECT percentiles(api_response_time, [50,90,95,98,99]) AS pFROM target_service.win:time_batch(1 min)

EACH SERVICES!

WITHOUT ANY RESTARTS!

13年12月13日金曜日

Page 20: fluent-plugin-norikra #fluentdcasual

<match for.target.service.access.logs.**> type forest subtype datacounter remove_prefix httpstatus.count unit minute output_per_tag yes aggregate tag output_messages yes count_key status pattern1 success ^2\d\d tag_prefix datacount.httpstatus</match>

Before: Fluentd

... AND RESTART OF FLUENTD!!!!!!!!!!!!!!

13年12月13日金曜日

Page 21: fluent-plugin-norikra #fluentdcasual

After: Norikra

SELECT service, count(IF(status / 200 = 2, 1, NULL)) AS successFROM all_logs.win:time_batch(1 min)GROUP BY service

WITHOUT ANY RESTARTS!

13年12月13日金曜日

Page 22: fluent-plugin-norikra #fluentdcasual

fluent-plugin-norikra

13年12月13日金曜日

Page 23: fluent-plugin-norikra #fluentdcasual

fluent-plugin-norikra

in_norikraout_norikraout_norikra_filter

13年12月13日金曜日

Page 24: fluent-plugin-norikra #fluentdcasual

out_norikra

Fluentd Norikraout_norikra

13年12月13日金曜日

Page 25: fluent-plugin-norikra #fluentdcasual

in_norikra

FluentdNorikra in_norikra

13年12月13日金曜日

Page 26: fluent-plugin-norikra #fluentdcasual

out_norikra_filter

Fluentd

Norikra

out_norikra_filter

13年12月13日金曜日

Page 27: fluent-plugin-norikra #fluentdcasual

in/out_norikra and out_norikra_filter

out_norikra_filterFor Casual Use Cases / Fluentd CentricAutomated features

Server autostartQuery registration/fetches

in/out_norikraFor Norikra Users[NOT IMPLEMENTED: Distributed Norikra Support ]

13年12月13日金曜日

Page 28: fluent-plugin-norikra #fluentdcasual

Please Try andEnjoy Norikra!

13年12月13日金曜日