Successfully reported this slideshow.

tdc2012

3

Share

Upcoming SlideShare
dnarj-20120630
dnarj-20120630
Loading in …3
×
1 of 74
1 of 74

tdc2012

3

Share

Download to read offline

Um Case de Arquitetura Distribuída
para Indexação, Armazenamento e
Análise de Logs em Tempo Real

Um Case de Arquitetura Distribuída
para Indexação, Armazenamento e
Análise de Logs em Tempo Real

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

tdc2012

  1. 1. Um Case de Arquitetura Distribuída para Indexação, Armazenamento e Análise de Logs em Tempo Real Juan Lopes
  2. 2. COMPLEX EVENT PROCESSING
  3. 3. TIME SERIES REAL-TIME
  4. 4. LOGS
  5. 5. CENTENAS DE SERVIDORES
  6. 6. marvin@goldenheart ~ $ ssh root@deepthought **** WELCOME TO 1 OF YOUR 38,157,987 SERVERS. TRY THE VEAL. IT'S THE BEST IN THIS FARM. **** root@deepthought ~ $ tail -f /var/log.txt COMO ACESSAR OS LOGS?
  7. 7. COMO "DEBUGAR"?
  8. 8. CENTRALIZAR INDEXAR
  9. 9. 3TB / DIA
  10. 10. 3TB / DIA 10.000.000.000 MSGS / DIA 36 MB / SEGUNDO
  11. 11. TWITTER 400.000.000 MSGS / DIA EM JUNHO/2012
  12. 12. LOGGLY Amplamente utilizado Primeira opção para cloud Maior plano não-custom: 12GB/dia Preço: $1,779/mês
  13. 13. GRAYLOG2 Open Source Self-hosted Arquitetura de partes móveis MongoDB ElasticSearch AMQP
  14. 14. SPLUNK Famoso na área de BigData Destinado ao mundo Enterprise Muitos gráficos e relatórios $6,000 one-time fee: 500MB/dia 500MB < 3TB :(
  15. 15. JAVA
  16. 16. HOTSPOT
  17. 17. java.util.concurrent
  18. 18. VISÃO GERAL Armazenar mensagens Interpretar Indexar
  19. 19. RFC 3164: SYSLOG <34>Oct 11 22:14:15 mymachine su: 'su root' failed for lonvick on /dev/pts/8 <priority = facility*8+severity> <date/time> <host> <process> <message>
  20. 20. CHAVE: VALOR message <34>Oct 11 22:14:15 mymachine su: 'su root' failed for lonvick on /dev/pts/8 text su, root, failed, for, lonvick, on, /dev/pts/8 facility AUTH severity CRITICAL date 20121011 time 221415 host mymachine process su
  21. 21. ?
  22. 22. MG4J Egothor Nutch Oxyus BDDBot Zilverline YaCy Compass Lius Regain Piscator Hounder HSearch
  23. 23. <FIELD:CONTENT, DOC*> TEXT:ABACAXI ➜ 1, 3, 9 TEXT:BANANA ➜ 2, 3, 10, 42 TEXT:CAJU ➜ 3, 11, 50
  24. 24. BAIXA ENTROPIA
  25. 25. <10% de termos únicos menor overhead por mensagem MESSAGE BAG
  26. 26. VISÃO GERAL Armazenar Interpretar Bufferizar Indexar
  27. 27. <DOC, FREQ, POSITION*> 1, 4 ➜ 5, 6, 10, 20 3, 1 ➜ 40 9, 4 ➜ 6, 7, 8, 9
  28. 28. SCORES NÃO IMPORTAM
  29. 29. NORMAL INDEXAÇÃO BUSCA Field QueryParser Document Query IndexWriter IndexSearcher
  30. 30. HARDCORE INDEXAÇÃO BUSCA TokenStream TermPositions Document FieldCache IndexWriter IndexReader
  31. 31. CULPA DA WIDESCREEN CULPA DA WIDESCREEN
  32. 32. WEB INTERFACE Jersey (REST API) Backbone.js CometD
  33. 33. WEB INTERFACE Jersey (REST API) Backbone.js CometD "app:apache http 404"? engine browser "OK. listen: /comet/1234568790abcdef"
  34. 34. CULPA DA WIDESCREEN CULPA DA WIDESCREEN
  35. 35. COMMAND-LINE INTERFACE Cara e coragem HttpClient CometD /intelie/lognit-cli
  36. 36. REALTIME (AKA TAIL -F) EVENTS subscriber
  37. 37. LIGHTWEIGHT TERM TRIE ABRAÇO ABRIGO CHOCOLATE <RAIZ> ABR CHOCOLATE AÇO IGO
  38. 38. AGREGAÇÃO (AKA WC -L) EVENTS
  39. 39. ~10.000 eventos / segundo http
  40. 40. 1 evento / segundo http => count()
  41. 41. ~100 eventos / segundo http => count() by host
  42. 42. ~100 eventos / 30 segundos http => count() by host every 30 seconds
  43. 43. ~100 eventos / 30 segundos http => avg(cputime#) by host every 30 seconds
  44. 44. CULPA DA WIDESCREEN CULPA DA WIDESCREEN
  45. 45. É PRECISO ESCALAR
  46. 46. taxa de leitura MODERADA taxa de escrita ALTÍSSIMA dependência entre os dados BAIXA
  47. 47. SHARDING engine Load UDP/TCP 514 engine Balancer engine
  48. 48. Cluster engine engine engine
  49. 49. Cluster engine engine engine
  50. 50. Cluster engine Web HTTP Server engine engine usuário Broker
  51. 51. Cluster engine Web HTTP Server engine engine usuário
  52. 52. Cluster engine Multicast engine HTTP engine usuário
  53. 53. MULTICAST JChannel channel = new JChannel(); channel.setReceiver(new ReceiverAdapter() { public void receive(Message msg) { System.out.println( msg.getSrc() + ": " + msg.getObject()); } }); channel.connect("meuCanalDeChat"); BufferedReader reader = new BufferedReader( new InputStreamReader(System.in)); while(true) { String line = reader.readLine(); channel.send(null, line); }
  54. 54. STACK CONFIGURÁVEL
  55. 55. TUDO ESTÁ DISTRIBUÍDO
  56. 56. BUSCA engine 10 mergesort, take 10 10 last 10 "http_status: 10 engine 404" usuário 10 engine
  57. 57. BUSCA engine 10 mergesort, take 10 10 last 10 "http_status: 10 engine 404" before {id:84324814} usuário 10 engine
  58. 58. AGREGAÇÃO http 200 => count() by host host count foo 1234 bar 2345 baz 3456
  59. 59. AGREGAÇÃO count() + count() + count() engine engine engine
  60. 60. AGREGAÇÃO http 200 => avg(time) by host host avg_time foo 0.888889 bar 0.224568 baz 5.623424
  61. 61. AGREGAÇÃO avg(time) + avg(time) + avg(time) ? engine engine engine
  62. 62. AGREGAÇÃO sum(time) + sum(time) + sum(time) count(time) + count(time) + count(time) engine engine engine
  63. 63. AGREGAÇÃO sum(time) + sum(time) + sum(time) count(time) + count(time) + count(time) engine engine engine
  64. 64. E EM PRODUÇÃO?
  65. 65. 3.5BI DE MENSAGENS 1TB DE DADOS ORIGINAIS 180GB DE ÍNDICE 3 SERVIDORES (LOAD < 0.2)
  66. 66. UMA ÚLTIMA COISA
  67. 67. 1700+ TESTS 99% LINES COVERED
  68. 68. OBRIGADO! /juanplopes @juanplopes intelie.com.br

×