dnad12
-
Upload
juan-lopes -
Category
Technology
-
view
1.358 -
download
0
Transcript of dnad12
Um Case de Arquitetura Distribuída para Indexação, Armazenamento e Análise
de Logs em Tempo RealJuan Lopes
.NET Architects Days 2012
Como acessar os logs?
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
340 milhões tweets por dia
(março/2012)http://blog.twitter.com/2012/03/twitter-turns-six.html
Quem resolve?
Loggly● Amplamente utilizado● Primeira opção em cloud● Maior plano não-custom: 12GB/dia● Preço: $1,779/mês
Quem resolve?
Graylog● Open Source● Self-hosted● Arquitetura composta de partes móveis
○ MongoDB○ ElasticSearch○ AMQP
Quem resolve?
Splunk● Famoso na área de BigData● Destinado ao mundo Enterprise● Muitos gráficos e relatórios● $6,000 one-time fee: 500MB/day● 500MB < 3TB :(
RFC 3164: BSD 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>
Mensagem: chave -> valor
<34>Oct 11 22:14:15 mymachine su: 'su root' failed for lonvick on /dev/pts/8message
facility AUTH
severity CRITICAL
host mymachine
process su
date 20121011
time 221415
text su, root, failed, for, lonvick, on, /dev/pts/8
1 documento / mensagem
"index size roughly 20-30% the size of text indexed"
http://lucene.apache.org/core/
Índice minimalista
Field field = new Field(key, value, Field.Store.NO, Field.Index.ANALYZED_NO_NORMS, Field.TermVector.NO); field.setIndexOptions(FieldInfo.IndexOptions.DOCS_ONLY);
No freqs, no positions, no norms, no term vectors.
Árvore de Prefixos
Binary Match em O(1) TermQueryPrefixQueryWildcardQueryFuzzyQueryRangeQueryBooleanQuery
Interface
● Jersey (REST API)● Backbone.js● CometD
engine browser
"app:apache http 404"?
"OK. listen: /comet/1234568790abcdef"
Multicast confiávelJChannel 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);}
Busca
engine
engine
engine
last 10 "http_status:404"
before {id:84324814}
10
10
10
10
usuário
mergesort, take 10
Agregação
sum(time) + sum(time) + sum(time)count(time) + count(time) + count(time)
engine engine engine