eBay monitora petabytes de logs todos os dias com o Beats
Com uma entrada de 1,2 petabytes de logs por dia e 5 milhões de pontos de dados métricos por segundo, não faltam dados a serem monitorados no eBay. Todos os dias a equipe de logging e métrica da empresa de e-commerce tem que encarar a tarefa gigantesca de coletar e visualizar todos esses logs e métricas. Assim como a maioria das empresas, eles usam vários aplicativos (como Hadoop e MySQL) para possibilitar casos de uso diferentes entre as equipes.
Quando os containers apareceram para oferecer uma nova forma de implementar aplicativos, a equipe começou a usá-los com o Docker e a implementar através do Kubernetes, usando o Kubernetes para gerenciar o ciclo de vida. Mas um dos maiores desafios enfrentados por eles era a constante evolução dos aplicativos e do ambiente, fazendo com que fosse difícil acompanhar todas as novidades. É aí que entra o Beats! O Filebeat e o Metricbeat eram duas escolhas fáceis para coletar e enviar logs e métricas do Docker e do Kubernetes.
Eles também queriam a capacidade de descobrir cargas de trabalho conforme elas eram criadas. Antes da funcionalidade de descoberta automática existir no Beats (uma novidade da versão 6.2), eles criaram sua própria versão: Collectbeat. Construído com base no libbeat, esse Beat foi feito para descobrir novos módulos em clusters Kubernetes. O Collectbeat usava a API Kubernetes para descobrir cargas de trabalho, coletar e enriquecer os dados, que então eram enviados para seu sistema interno de monitoramento. Esse sistema, chamado de Sherlock.io, foi construído para ser flexível e se adaptar à introdução de novas tecnologias.
Apesar do aspecto de coleta estar resolvido, as partes de análise e visualização ainda precisavam ser aprimoradas. A coleta de todos os dados só será útil se os usuários no eBay puderem analisar esses dados usando rótulos familiares. O próximo passo no caminho era identificar uma forma de aplicar marcas nos dados com metadados antes deles serem enviados. Para isso Vijay Samuel e sua equipe no eBay construíram um processador chamado ‘add_kubernetes_metadata’, que coleta as mensagens de log e os payloads de métrica e anexa a eles metadados como o nome e o espaço no pod. Esse processador agora está disponível no GitHub, e é um ótimo exemplo do poder dos projetos open source voltados para a comunidade.
Claro que o eBay ainda está evoluindo. Mais aplicativos, logs e métricas vem junto com a adoção de novas tecnologias. Seu crescimento orgânico de registro em log foi de 50% em comparação com o último ano. Como eles fazem para lidar com quantidades de dados que não param de crescer, mas usando recursos finitos? Uma tática é calcular a métrica dos aplicativos no nível de host/pool, criando uma cota baseada em tier e limites de retenção. Outra forma é dar prioridade a tipos específicos de dados. Os eventos têm maior prioridade, as métricas que exibem visibilidade operacional vêm em segundo, os logs em terceiro. Para garantir que a prioridade está correta, foram adicionados agendadores de eventos e a descoberta automática foi permitida para adicionar peso nas configurações.
Pronto para saber mais sobre as ferramentas e estratégias dessa equipe? Veja a apresentação de Vijay da Elastic{ON} 2018 para aprender sobre o Sherlock.io e sobre como eles usam o Beats para monitorar todos os seus dados nos clusters Kubernetes. Se quiser saber mais sobre como o Elastic Stack pode ser usado para monitorar o Kubernetes e o Docker, confira nosso webinar Elastic Stack: Monitoramento de aplicativos Kubernetes com o Beats.