24
Relatórios e Estatísticas utilizando logs em tempo real Francisco Wagner Cunha Freire (@ffreire)

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

Embed Size (px)

Citation preview

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

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

Francisco Wagner Cunha Freire (@ffreire)

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

Agenda

• Cenário;• Motivação;• Problemas;• Tecnologia;• Resultado;

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

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;

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

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;

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

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;

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

Tecnologia

• Ferramentas disponíveis no mercado;• Opções open-source;• Desenvolvimento interno;

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

Tecnologia

• Para consulta de logs recentes: graylog• Para consulta de logs antigos: filesystem +

rsync• Para estatísticas e relatórios: Solução

desenvolvida internamente;

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

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

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

Graylog

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

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;

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

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;

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

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;

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

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;

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

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)

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

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

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

Graylog

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

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

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

Relatórios

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

Relatórios

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

Heatmap

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

Python

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

Config

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

Dúvidas?

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

Contato

• Francisco Wagner Cunha Freire [email protected]

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