Relatórios e estatísticas utilizando logs em tempo real

Preview:

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 wgrcunha@gmail.com

• Twitter: @ffreire• http://github.com/locaweb

Recommended