使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

70
使 Elasticsearch Kibana 巨量資料搜尋及視覺化 Suiting @ DSC 2015

Transcript of 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Page 1: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

使⽤用 Elasticsearch 及 Kibana 進⾏行 巨量資料搜尋及視覺化

Suiting @ DSC 2015

Page 2: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Who  Am  I

曾書庭  (@suitingtseng)  Data  Engineer  

Gogolook  

Page 3: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭
Page 4: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Jeff, CEO

Page 5: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭
Page 6: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭
Page 7: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭
Page 8: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭
Page 9: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

As  a  data  engineer  in  Gogolook…

書庭,請問我們的  DAU  是多少?

Page 10: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

As  a  data  engineer  in  Gogolook…

書庭,請問我們的  DAU  是多少?

我算⼀一下...

Page 11: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

As  a  data  engineer  in  Gogolook…

書庭,請問我們的  DAU  是多少?

資料好了嗎?

我算⼀一下...

Page 12: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

As  a  data  engineer  in  Gogolook…

書庭,請問我們的  DAU  是多少?

資料好了嗎?

還在跑...

我算⼀一下...

Page 13: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

As  a  data  engineer  in  Gogolook…

書庭,請問我們的  DAU  是多少?

Page 14: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

As  a  data  engineer  in  Gogolook…

書庭,請問我們的  DAU  是多少?

可以分國家嗎?

Page 15: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

As  a  data  engineer  in  Gogolook…

書庭,請問我們的  DAU  是多少?

可以分版本嗎?

可以分國家嗎?

Page 16: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

As  a  data  engineer  in  Gogolook…

書庭,請問我們的  DAU  是多少?

可以分版本嗎?

可以看⼀一年嗎?

可以分國家嗎?

Page 17: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

As  a  data  engineer  in  Gogolook…

書庭,請問我們的  DAU  是多少?

可以分版本嗎?

可以看⼀一年嗎?

可以嗎? 可以嗎? 可以嗎?

可以分國家嗎?

Page 18: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

⼀一句話激怒⼯工程師⼤大賽

• 可以分XX嗎

Page 19: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

⼀一句話激怒⼯工程師⼤大賽

• 可以分XX嗎  

• 可以畫成圖嗎  

• 可以給我  raw  data  嗎

Page 20: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

⼀一句話激怒⼯工程師⼤大賽

• 可以分XX嗎  

• 可以畫成圖嗎  

• 可以給我  raw  data  嗎  

• 有沒有辦法知道  user  住哪裡  

• 可以知道哪些  user  ⽐比較有錢嗎  

• 下⾬雨天  user  會睡⽐比較晚嗎

Page 21: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Table  of  Contents

• Problems  

• Solution  Requirements  

• Elasticsearch  &  Kibana  

• In  Gogolook  

• Future

Page 22: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Problems

• Request-­‐response  model

https://medium.com/@samson_hu/building-analytics-at-500px-92e9a7005c83

Page 23: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Problems

• Request-­‐response  model  

• Long  cycle

https://medium.com/@samson_hu/building-analytics-at-500px-92e9a7005c83

Page 24: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Problems

• Request-­‐response  model  

• Long  cycle  

• EAAB  (engineer  as  a  bottleneck)

https://medium.com/@samson_hu/building-analytics-at-500px-92e9a7005c83

Page 25: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Problems

• Request-­‐response  model  

• Long  cycle  

• EAAB  (engineer  as  a  bottleneck)  

• HDC  (Hippo-­‐driven  company)

https://medium.com/@samson_hu/building-analytics-at-500px-92e9a7005c83

Page 26: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Problems

• Request-­‐response  model  

• Long  cycle  

• EAAB  (engineer  as  a  bottleneck)  

• HDC  (Hippo-­‐driven  company)  

• Lack  of  speed

https://medium.com/@samson_hu/building-analytics-at-500px-92e9a7005c83

Page 27: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Problems

• Request-­‐response  model  

• Long  innovation  cycle  

• EAAB  (engineer  as  a  bottleneck)  

• HDC  (Hippo-­‐driven  company)  

• Lack  of  speed  

• =>  We  are  not  alone  (500px)

https://medium.com/@samson_hu/building-analytics-at-500px-92e9a7005c83

Page 28: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Table  of  Contents

• Problems  

• Solution  Requirements  

• Elasticsearch  &  Kibana  

• In  Gogolook  

• Future

Page 29: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Possible  solutions

• Approach  1:SQL  monkey*  zoo

http://www.slideshare.net/GloriaLau1/keynote-at-spark-summit/5

Page 30: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Possible  solutions

• Approach  1:SQL  monkey  zoo  

• Approach  2:Provide  limited  yet  easy  visualization

http://www.slideshare.net/GloriaLau1/keynote-at-spark-summit/5

Page 31: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Requirement

• Easy:  Even  CEO  can  use  it  

• Fast:  Must  be  interactive  

• Export:  Provide  the  csv  file  

• Big:  Must  be  scalable  

• 80-­‐20:  Solves  80%  problems

Page 32: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Table  of  Contents

• Problems  

• Solution  Requirements  

• Elasticsearch  &  Kibana  

• In  Gogolook  

• Future

Page 33: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Elasticsearch

• Lucene-­‐based  search  engine  

• Document  storage  (JSON)  

• Distributed,  scalable  

• Serve  search  request  in  ms  

• Build  index  for  every  field

Page 34: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Kibana

• ES  visualization  tool  

• No  code  required

Page 35: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

ES  +  Kibana

• Fast:  index  every  field  

• Fast:  columnar  storage*  

• Big:  born  distributed/scalable  

• Easy:  GUI  without  code  

• Export:  csv

Page 36: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Kibana

• Discover  

• Visualization  

• Dashboard

Page 37: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Discover

• Raw  data  

• Check  data    

• Find  dirty  data  

• Try  query

Page 38: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Discover

Page 39: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Discover

Page 40: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Visualization

• 8  visualization  types  

• 9  group  methods  

• 9  aggregation  values

Page 41: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Visualization

Page 42: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Visualization  types

Page 43: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Grouping  methods

• Date  histogram  

• Histogram  

• Range  of  a  value  

• Top  N  

• Filter

Page 44: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Aggregation  values

• Count  

• Avg,  Sum,  Min,  Max,  S.D.  

• Unique  count*  (Hyperloglog)  

• Percentile*  (T-­‐digest)

Page 45: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Visualization

• Same  concept,  different  graph  

• FILTER  

• GROUP  

• AGGREGATE

Page 46: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

DAU

書庭,請問我們的  DAU  是多少?

Page 47: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

DAU  by  region

可以分國家嗎?

Page 48: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

DAU  by  version

可以分版本嗎?

Page 49: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

server  request  log

Page 50: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Request_total  per  minute

GROUP  BY  DATE  HISTOGRAM(minute)  COUNT(*)

Page 51: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Request_total  by  path

GROUP  BY  TOP(path,  5),  DATE  HISTOGRAM(minute)  COUNT(*)

Page 52: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Dashboard

• Collection  of  visualizations

Page 53: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Community  tag  in  MongoDB

Page 54: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Dashboard

Page 55: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Dashboard  -­‐  1st  peak

Page 56: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Dashboard  -­‐  2nd  peak

Page 57: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Table  of  Contents

• Problems  

• Solution  Requirements  

• Elasticsearch  &  Kibana  

• In  Gogolook  

• Future

Page 58: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

In  Gogolook  (Aug.  2015)

• 200M+  data  point  daily  

• 150GB+  data  size  daily  

• 24  dashboards,  160  visualizations  

• Service  status  e.g.  requests_total  

• Application  data  e.g.  tag_total  

• Log  data  e.g.  button_ctr

Page 59: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

In  Gogolook  (currently)

• Log  user  behavior  on  features  

• ⾃自⼰己的  log  ⾃自⼰己記  (Planner/PM)  

• ⾃自⼰己的  board  ⾃自⼰己拉  (every  one)  

• Monitor  performance  from  day  1

Page 60: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

In  Gogolook

Page 61: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

In  Gogolook

• Tracking  Kibana  usage  by  Google  Analytics

Page 62: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Table  of  Contents

• Problems  

• Solution  Requirements  

• Elasticsearch  &  Kibana  

• In  Gogolook  

• Future

Page 63: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

In  Gogolook  (future)

• Log  all  user-­‐event,  not  feature-­‐based

Page 64: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

In  Gogolook  (future)

• Log  all  user-­‐event,  not  feature-­‐based  

• {    "userid":  "suiting",    "@timestamp":  "2015-­‐08-­‐23T11:48:00",    "page":  "login",    "button":  "register",    "period":  3500}

Page 65: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

In  Gogolook  (future)

• Answer  questions

A

B

40%

60%

Page 66: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

In  Gogolook  (future)

• Answer  questions

A

B

40%, 7000ms

60%, 1500ms

Page 67: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Limit

• No  SQL  JOIN  

• Subquery

Page 68: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

How  about  20%

• Powerful  engine/tool  required  

• Compute  engines:  

• Google  BigQuery  

• AWS  Redshift  

• Visualization  tools:  

• Tableau  

• Periscope

Page 69: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Thank you

Page 70: 使用 Elasticsearch 及 Kibana 進行巨量資料搜尋及視覺化-曾書庭

Questions ?