Pular para o conteúdo principal

Log Aggregation

Descrição​

Em uma arquitetura de microsserviços, cada instância de serviço escreve seus próprios logs (erros, avisos, informações e depuração) em um formato padronizado. Como o sistema roda em muitas instâncias e máquinas, esses registros ficam espalhados e uma única requisição de usuário pode passar por vários serviços.

O padrão envia os logs de todas as instâncias para um serviço central de logging, que os agrega. A partir dele, as pessoas desenvolvedoras e de operação pesquisam e analisam o conjunto completo e configuram alertas disparados quando certas mensagens aparecem.

Os agentes de coleta devem ser leves para não penalizar os serviços, e os logs costumam ser estruturados (por exemplo, JSON) com campos comuns como serviço, instância, nível e identificador de correlação.

Problemas que resolve​

  • Entender o comportamento da aplicação e diagnosticar problemas quando os logs relevantes estão dispersos em muitas instâncias
  • Acompanhar uma requisição que atravessa vários serviços
  • Reduzir o impacto em tempo de execução da coleta de logs
  • Disparar alertas a partir de mensagens específicas

Quando usar​

  • Aplicações com várias instâncias de serviços em múltiplas máquinas ou contêineres
  • Instâncias efêmeras, cujos arquivos locais desaparecem junto com elas
  • Necessidade de busca, análise e alertas centralizados sobre mensagens de log

Quando evitar​

  • Aplicações pequenas, com poucas instâncias, em que os logs locais bastam
  • Quando o volume de logs e o custo da infraestrutura de agregação não se justificam

Trade-offs​

GanhoCusto / Risco
Visão única e pesquisável de todos os logsVolume grande de dados exige infraestrutura considerável de ingestão, armazenamento e consulta
Alertas baseados em mensagensLogs excessivos ou ruidosos aumentam custo e dificultam encontrar o que importa
Logs sobrevivem ao descarte das instânciasDados sensíveis nos logs exigem controle de acesso e mascaramento
  • Mantenha o overhead mínimo nos serviços, preferindo envio assíncrono com buffer.
  • Defina política de retenção e amostragem para controlar custos.

Diagrama​

Todas as instâncias enviam seus logs para um serviço central, que oferece busca, análise e alertas.

Padrões relacionados​

  • Distributed Tracing — inclui um identificador de requisição em cada mensagem de log para seguir uma requisição entre serviços
  • Exception Tracking — exceções também são reportadas a um serviço dedicado, além de registradas nos logs
  • Application Metrics — complementa os logs com medições numéricas
  • Microservice Chassis — pode padronizar formato e envio de logs
  • Sidecar — um sidecar pode coletar e encaminhar logs sem alterar o serviço

Referência​