Upload
francisco-freire
View
272
Download
2
Embed Size (px)
Citation preview
Relatórios e Estatísticas utilizando logs em tempo real
Francisco Wagner Cunha Freire (@ffreire)
Agenda
• Cenário;• Motivação;• Problemas;• Tecnologia;• Resultado;
Cenário
• Ambiente com mais de 3 milhões de contas de e-mail;
• Mais de 100 milhões de e-mails enviados/recebidos todos os dias;
• Mais de 400 milhões de linhas de log por dia;
Motivação
• Necessidade de acesso rápido a logs recentes para análise de problemas;
• Necessidade de acesso a logs mais antigos para análises mais detalhadas de crescimento, etc;
• Necessidade de um relatório em tempo real do que está acontecendo;
• Necessidade de gerar estatísticas para entender padrões e prever problemas;
Problemas
• Como suprir todas as necessidades?• Utilizar a mesma solução ?• Como escalar a solução ? Soluções para dados
recentes e estatísticas devem ser rápidas, com maior quantidade de dados precisam de armazenamento;
• Custo x Benefício;
Tecnologia
• Ferramentas disponíveis no mercado;• Opções open-source;• Desenvolvimento interno;
Tecnologia
• Para consulta de logs recentes: graylog• Para consulta de logs antigos: filesystem +
rsync• Para estatísticas e relatórios: Solução
desenvolvida internamente;
Graylog
• Open-source;• Backends: ElasticSearch + MongoDB + AMQP
(RabbitMQ);• Streams personalizadas;• Alta performance;• Interface simples;• Protocolo simples;• Não utilizar syslog remoto;• Plugin desenvolvido: https://github.com/locaweb/logix
Graylog
Filesystem + rsync
• Really?• Consultas de dados antigos não demandam
interface de usuário;• egrep + xargs FTW;• Rsync e não syslog remoto;• Gzip para compactação;• 2 anos de logs em um único servidor;
Ferramenta interna
• Why?• Backend: redis• Tecnologia: python + twisted• Utiliza processamento no servidor de origem;• + de 70k operações por segundo, fazendo
parse e enviando para diferentes destinos;
Redis
• Dados voláteis em ram;• Dados que não podem ser perdidos podem
ser persistidos em disco;• Alta performance;• 100k+ operações em um único servidor;• Replicação Master/Slave;
Resultado
• Melhor e mais rápida análise no primeiro nível de atendimento;
• Histórico de tudo;• Acesso rápido a “n” tipos de estatísticas;• Fácil implementação de novos relatórios
conforme necessidade;
Estrutura
Aplicação
Rsyslog
Filesystem
Logserver (rsync)
Gzip
Logix (udp)
RabbitMQ
Graylog
ElasticSearch
Parser (udp)
Redis (shard)
Redis (slave)
Redis (shard)
Redis (slave)
Redis (shard)
Redis (slave)
Logs armazenados (2013)
Jan-13 Feb-13 Mar-13 Apr-13 May-13 Jun-130
2000
4000
6000
8000
10000
12000
14000
16000
18000
Tamanho (GB) +gzip Tamanho (GB) +raw
Graylog
Redisredis 127.0.0.1:6379> inforedis_version:2.4.1arch_bits:64uptime_in_days:2connected_clients:7024connected_slaves:3used_memory_human:11.63Gused_memory_peak_human:16.66Gtotal_connections_received:978225total_commands_processed:3782860626expired_keys:7613320evicted_keys:0role:masterdb0:keys=511643,expires=386597db2:keys=6581773,expires=1562605db3:keys=64,expires=55db6:keys=1,expires=0db10:keys=19,expires=0db15:keys=4,expires=0
Relatórios
Relatórios
Heatmap
Python
Config
Dúvidas?
Contato
• Francisco Wagner Cunha Freire [email protected]
• Twitter: @ffreire• http://github.com/locaweb