Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
fluent-plugin-norikra
Fluentd Casual Talks #3
2013/12/13(Fri)
@tagomoris

13年12月13日金曜日
TAGOMORI Satoshi (@tagomoris)
LINE Corp.
Hadoop, Fluentd, Norikra, ...

13年12月13日金曜日
13年12月13日金曜日
Norikra:
Schema-less Stream
Processing with SQL
13年12月13日金曜日
Norikra(1):
Schema-less event stream:
Add/Remove data fields whenever you want

SQL:
No more restarts to add/remove queries...
Norikra(2):
Open source software:
Licensed under GPLv2
Based on Esper
UDF plugins from rubygems.org

Ultra-fast bootstrap ...
Norikra Queries: (1)

SELECT name, age
FROM events

13年12月13日金曜日
Norikra Queries: (1)
{“name”:”tagomoris”,
“age”:34, “address”:”Tokyo”,
“corp”:”LINE”, “current”:”Shibuya”}

SELECT name, a...
Norikra Queries: (1)
{“name”:”tagomoris”,
“address”:”Tokyo”,
“corp”:”LINE”, “current”:”Shibuya”}

SELECT name, age
FROM ev...
Norikra Queries: (2)
{“name”:”tagomoris”,
“age”:34, “address”:”Tokyo”,
“corp”:”LINE”, “current”:”Shibuya”}

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

SELECT name, age
FROM event...
Norikra Queries: (3)

SELECT age, COUNT(*) as cnt
FROM events.win:time_batch(5 mins)
GROUP BY age

13年12月13日金曜日
Norikra Queries: (3)
{“name”:”tagomoris”,
“age”:34, “address”:”Tokyo”,
“corp”:”LINE”, “current”:”Shibuya”}

SELECT age, CO...
Norikra Queries: (4)
{“name”:”tagomoris”,
“age”:34, “address”:”Tokyo”,
“corp”:”LINE”, “current”:”Shibuya”}

SELECT age, CO...
Norikra Queries: (5)
{“name”:”tagomoris”,
“user:{“age”:34, “corp”:”LINE”,
“address”:”Tokyo”},
“current”:”Shibuya”,
“speake...
Norikra Queries: (5)
{“name”:”tagomoris”,
“user:{“age”:34, “corp”:”LINE”,
“address”:”Tokyo”},
“current”:”Shibuya”,
“speake...
Norikra Queries: (5)
{“name”:”tagomoris”,
“user:{“age”:34, “corp”:”LINE”,
“address”:”Tokyo”},
“current”:”Shibuya”,
“speake...
Before: Fluentd

EACH SERVICES

<match for.target.service.application.logs>
type numeric_monitor
unit minute
tag service.r...
After: Norikra

EACH SERVICES!

SELECT
percentiles(api_response_time, [50,90,95,98,99]) AS p
FROM target_service.win:time_...
Before: Fluentd
<match for.target.service.access.logs.**>
type forest
subtype datacounter
remove_prefix httpstatus.count
u...
After: Norikra
SELECT
service,
count(IF(status / 200 = 2, 1, NULL)) AS success
FROM all_logs.win:time_batch(1 min)
GROUP B...
fluent-plugin-norikra

13年12月13日金曜日
fluent-plugin-norikra
in_norikra
out_norikra
out_norikra_filter

13年12月13日金曜日
out_norikra

Fluentd

13年12月13日金曜日

out_norikra

Norikra
in_norikra

Norikra

13年12月13日金曜日

in_norikra

Fluentd
out_norikra_filter
Fluentd
out_norikra_filter

Norikra

13年12月13日金曜日
in/out_norikra and out_norikra_filter
out_norikra_filter
For Casual Use Cases / Fluentd Centric
Automated features
Server au...
Please Try and
Enjoy Norikra!

13年12月13日金曜日
Upcoming SlideShare
Loading in …5
×

fluent-plugin-norikra #fluentdcasual

57,482 views

Published on

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

Published in: Technology, Business

fluent-plugin-norikra #fluentdcasual

  1. 1. fluent-plugin-norikra Fluentd Casual Talks #3 2013/12/13(Fri) @tagomoris 13年12月13日金曜日
  2. 2. TAGOMORI Satoshi (@tagomoris) LINE Corp. Hadoop, Fluentd, Norikra, ... 13年12月13日金曜日
  3. 3. 13年12月13日金曜日
  4. 4. Norikra: Schema-less Stream Processing with SQL 13年12月13日金曜日
  5. 5. Norikra(1): Schema-less event stream: Add/Remove data fields whenever you want SQL: No more restarts to add/remove queries w/ JOINs, w/ SubQueries w/ UDF Truly Complex events: Nested Hash/Array, accessible directly from SQL 13年12月13日金曜日
  6. 6. Norikra(2): Open source software: Licensed under GPLv2 Based on Esper UDF plugins from rubygems.org Ultra-fast bootstrap & small start: 3mins to install/start 1 server 13年12月13日金曜日
  7. 7. Norikra Queries: (1) SELECT name, age FROM events 13年12月13日金曜日
  8. 8. Norikra Queries: (1) {“name”:”tagomoris”, “age”:34, “address”:”Tokyo”, “corp”:”LINE”, “current”:”Shibuya”} SELECT name, age FROM events {“name”:”tagomoris”,”age”:34} 13年12月13日金曜日
  9. 9. Norikra Queries: (1) {“name”:”tagomoris”, “address”:”Tokyo”, “corp”:”LINE”, “current”:”Shibuya”} SELECT name, age FROM events nothing 13年12月13日金曜日
  10. 10. Norikra Queries: (2) {“name”:”tagomoris”, “age”:34, “address”:”Tokyo”, “corp”:”LINE”, “current”:”Shibuya”} SELECT name, age FROM events WHERE current=”Shibuya” {“name”:”tagomoris”,”age”:34} 13年12月13日金曜日
  11. 11. Norikra Queries: (2) {“name”:”kiyoto”, “age”:99, “address”:”CA”, “corp”:”TD”, “current”:”MV”} SELECT name, age FROM events WHERE current=”Shibuya” nothing 13年12月13日金曜日
  12. 12. Norikra Queries: (3) SELECT age, COUNT(*) as cnt FROM events.win:time_batch(5 mins) GROUP BY age 13年12月13日金曜日
  13. 13. Norikra Queries: (3) {“name”:”tagomoris”, “age”:34, “address”:”Tokyo”, “corp”:”LINE”, “current”:”Shibuya”} SELECT age, COUNT(*) as cnt FROM events.win:time_batch(5 mins) GROUP BY age every 5 mins {”age”:34,”cnt”:3}, {“age”:33,”cnt”:1}, ... 13年12月13日金曜日
  14. 14. Norikra Queries: (4) {“name”:”tagomoris”, “age”:34, “address”:”Tokyo”, “corp”:”LINE”, “current”:”Shibuya”} SELECT age, COUNT(*) as cnt FROM events.win:time_batch(5 mins) GROUP BY age SELECT max(age) as max FROM events.win:time_batch(5 mins) every 5 mins {”age”:34,”cnt”:3}, {“age”:33,”cnt”:1}, ... {“max”:51} 13年12月13日金曜日
  15. 15. Norikra Queries: (5) {“name”:”tagomoris”, “user:{“age”:34, “corp”:”LINE”, “address”:”Tokyo”}, “current”:”Shibuya”, “speaker”:true, “attend”:[true,true,false, ...] } SELECT age, COUNT(*) as cnt FROM events.win:time_batch(5 mins) GROUP BY age 13年12月13日金曜日
  16. 16. Norikra Queries: (5) {“name”:”tagomoris”, “user:{“age”:34, “corp”:”LINE”, “address”:”Tokyo”}, “current”:”Shibuya”, “speaker”:true, “attend”:[true,true,false, ...] } SELECT user.age, COUNT(*) as cnt FROM events.win:time_batch(5 mins) GROUP BY user.age 13年12月13日金曜日
  17. 17. Norikra Queries: (5) {“name”:”tagomoris”, “user:{“age”:34, “corp”:”LINE”, “address”:”Tokyo”}, “current”:”Shibuya”, “speaker”:true, “attend”:[true,true,false, ...] } SELECT user.age, COUNT(*) as cnt FROM events.win:time_batch(5 mins) WHERE current=”Kyoto” AND attend.$0 AND attend.$1 GROUP BY user.age 13年12月13日金曜日
  18. 18. Before: Fluentd EACH SERVICES <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> ... AND RESTART OF FLUENTD!!!!!!!!!!!!!! 13年12月13日金曜日
  19. 19. After: Norikra EACH SERVICES! SELECT percentiles(api_response_time, [50,90,95,98,99]) AS p FROM target_service.win:time_batch(1 min) WITHOUT ANY RESTARTS! 13年12月13日金曜日
  20. 20. Before: Fluentd <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 ^2dd tag_prefix datacount.httpstatus </match> ... AND RESTART OF FLUENTD!!!!!!!!!!!!!! 13年12月13日金曜日
  21. 21. After: Norikra SELECT service, count(IF(status / 200 = 2, 1, NULL)) AS success FROM all_logs.win:time_batch(1 min) GROUP BY service WITHOUT ANY RESTARTS! 13年12月13日金曜日
  22. 22. fluent-plugin-norikra 13年12月13日金曜日
  23. 23. fluent-plugin-norikra in_norikra out_norikra out_norikra_filter 13年12月13日金曜日
  24. 24. out_norikra Fluentd 13年12月13日金曜日 out_norikra Norikra
  25. 25. in_norikra Norikra 13年12月13日金曜日 in_norikra Fluentd
  26. 26. out_norikra_filter Fluentd out_norikra_filter Norikra 13年12月13日金曜日
  27. 27. in/out_norikra and out_norikra_filter out_norikra_filter For Casual Use Cases / Fluentd Centric Automated features Server autostart Query registration/fetches in/out_norikra For Norikra Users [NOT IMPLEMENTED: Distributed Norikra Support ] 13年12月13日金曜日
  28. 28. Please Try and Enjoy Norikra! 13年12月13日金曜日

×