O documento discute a implementação de um sistema de monitoração inteligente na Globo.com. Ele apresenta a motivação, a arquitetura orientada a eventos proposta, as tecnologias de correlação de eventos e aprendizado de máquina utilizadas, e os próximos passos do projeto, como escalonamento, melhoria de algoritmos e inserção de camadas supervisionadas.
18. Tecnologia de correlação Processamento de consultas Memória Dados Dados Dados Relações persistentes consulta resposta Processamento de consultas Memória dados dados consulta contínua resposta fluxos de dados “ banco de dados ao contrário”
22. Motor de correlação Se a sessão aumentar 10% no front-end dentro de 3 minutos e a média das cpus da farm do front não subir 5% e no banco o número de queries lentas for maior que 10, então está caracterizada uma contenção no banco de dados gerando enfileiramento de usuários Aplicação
23. Motor de correlação Aplicação Mysql Server Vip t – 3 min t t – 3 min t t cpu_usr slow_query session
24. Motor de correlação SELECT Server.host , Server.cpu_usr, Server_PAST.cpu_usr, Vip.session, Vip_PAST.session, Mysql.slow_query FROM Server.win:time(1 min) as Server , Server.win:ext_timed(current_timestamp(), 3 min) as Server_PAST , Vip.win:time(1 min) as Vip , Vip.win:ext_timed(current_timestamp(), 3 min) as Vip_PAST , Mysql.win:time (1min) as Mysql HAVING Vip.session > Vip_PAST.session * 1.10 AND avg(Server.cpu_usr) < avg (Server_PAST.cpu_usr) * 1.05 AND Mysql.slow_query > 10 Aplicação
25.
26. Motor de correlação Fonte: Esper Performance - http://docs.codehaus.org/display/ESPER/Esper+performance Performance Esper Item Especificação HW Servidor Esper 2 x Intel Xeon 5130 2GHz (4 cores total), 16GB RAM VM config -Xms2g -Xmx2g -Xns128m -Xgc:gencon Consulta # cons. evt/s Latência Latência média Nota select '$' as ticker from Market(ticker='$').win:length(1000).stat:weighted_avg('price', 'volume') output last every 30 seconds 1000 519 728 99.66% < 10us 2.8us CPU com 85%, 70 Mbit/s
Monitoração Pontual – Informação desconexa. Sem correlação. Basrada em Threshold comum Precaução – Situações passiveis de previsão… aumento de conexões em um intervalo de tempo etc. tendencias Visão realista da produção – Visibilidade real (nao podemos enxergar a producao com caixinhas somente, onde olhamos para os itens de monitoracao isoladamente, precisamos enxergar a producao como um todo, onde devemos ver uma noção real do que está acontecendo naquele momento). O ecosistema da produção é vivo, mutável)
Aprendizado (Sistema inferir nas anomalias e avisar quando achar algo estranho) – É o mais dificil de se conseguir manter com credibilidade. Automação – Poder executar tarefas pontuais Credibilidade - excesso de informação, regime de plantão, pressão
Sitescope nivel de aplicacao Siteseer (externo)
Os appenders para frameworks de logs para integração com o sistema (via rest ou o que for) enviar eventos de logs para o sistema de correlação ao invés de gravar em um arquivo de log simplesmente. Experiencia para antecipar situacoes onde o dia a dia traz o conhecimento para criarmos regras e alimentarmos a base de conhecimento da ferramenta e assim conseguirmos antecipar situações que possam vir a acontecer (aumento de conexoes / aumento de memoria / consumo de CPU) Interface de monitoracao unica – de varios apps para nagios/correlacao Deteccao de causa raiz (base de conhecimento criada na ferramenta através do conhecimento do dia a dia)
Os appenders para frameworks de logs para integração com o sistema (via rest ou o que for) enviar eventos de logs para o sistema de correlação ao invés de gravar em um arquivo de log simplesmente.