Gerenciar logs no mundo moderno é um grande desafio. Os logs, ou as informações coletadas em um determinado ponto no tempo sobre uma ação que ocorreu, são constantemente gerados por aplicativos, servidores e dispositivos de rede. Essas mensagens individuais sobre eventos ou erros fornecem a você muito mais informação e contexto quando algo dá errado, o que parece ser muito útil. Mas conforme sua infraestrutura cresce ou seu aplicativo se torna mais complexo, em algum momento você pode sentir como se estivesse soterrado em informações que não acabam nunca. 

Usar uma solução de gerenciamento de logs pode fornecer visibilidade dos dados de desempenho que você precisa para reduzir o tempo médio de resolução (MTTR) e no tempo médio de detecção (MTTD). O monitoramento pode ajudar você a navegar nesse fluxo constante de entrada de dados para que possa passar menos tempo procurando e mais tempo resolvendo problemas.  Porém, como você pode organizar da melhor maneira essa infinidade de dados para conseguir os insights cruciais de que precisa quando encontra um problema? 

Nesta publicação, trago truques e dicas para administrar e dimensionar seu gerenciamento de logs. 

Fatores que contribuem para um alto volume de logs

Primeiro, vamos entender por que você pode estar tendo um alto volume de logs. Há uma variedade de motivos, mas alguns mais comuns são: 

  • A complexidade crescente da arquitetura do seu aplicativo: conforme sua arquitetura se torna mais complexa, as interações entre todos os componentes também aumenta. Todas essas interações significam que haverá mais eventos, e seus clientes podem encontrar mais erros. Por exemplo, seu aplicação pode usar centenas de microsserviços que interagem uns com os outros, gerando quantidades gigantescas de dados de log. 
  • Não usar políticas de rotação de logs: você não deve precisar e provavelmente não gostaria de manter os logs a longo prazo. Em vez disso, você deve arquivá-los ou comprimi-los; em alguns casos, pode até apagá-los. Pode ser bom definir regras sobre o tamanho dos logs que você vai reter, por quanto tempo fará isso, quando vai comprimi-los e quando as partes interessadas serão notificadas da rotação. Para mais detalhes sobre rotação, leia sobre o ciclo de vida dos logs de aplicativo
  • A granularidade das informações nos seus logs: nos casos em que seus logs são muito detalhados, você pode ter problemas para criá-los, transmiti-los e armazená-los. Você pode perceber que isso afeta o tempo de resposta da aplicação ou até mesmo, dependendo da situação, a largura de banda da rede. É importante entender qual nível de granularidade é útil e qual nível se torna uma receita para o desastre. 

É fundamental compreender os motivos por trás do volume de logs, pois isso pode ajudar você a decidir como gerenciá-los. Embora você talvez não tenha o poder para mudar a complexidade de uma aplicação inteira, você pode tomar algumas medidas para reduzir a complexidade dos próprios logs.

Práticas recomendadas para gerenciar o volume de logs

Talvez a prática recomendada mais importante com os logs seja encaminhá-los para um único local. Isso vai ajudar você a ordenar, encontrar e usar as informações fornecidas pelos logs da maneira mais eficaz. Você pode fazer isso com nossa funcionalidade de monitoramento do desempenho de aplicativos (APM) e com nosso Infrastructure Agent. Mas além de localizar seus logs em um único lugar, há algumas outras melhores práticas que você deve conhecer: 

  • Padronize seus níveis de logs: considere padronizar e definir os níveis de logs que sua organização vai usar. Por exemplo, o Infrastructure Agent da New Relic usa um subconjunto dos níveis de gravidade do padrão do setor, o Syslog, para simplificar as categorias que você precisa ordenar. 
  • Mantenha um formato de log consistente: nos logs que têm o mesmo nível, você deve definir um padrão de quais informações são registradas ou não. É muito mais fácil agregar e ordenar informações que são uniformes, em vez de inconsistentes. 
  • Crie logs com valor: tudo o que você registra em logs deve ter uma finalidade. De eventos de usuário a erros de aplicação, registre apenas as informações que você acha que têm valor, em vez de indexar tudo o que você puder coletar em um log. Por exemplo, as verificações de saúde do Kubernetes acontecem com frequência, mas não acrescentam muito valor no geral para entender o cenário do seu sistema. 
  • Considere usar registros de log estruturados: como os humanos podem falhar e garantir que os textos nos logs sejam relativamente consistentes pode ser desafiador, considere usar registros de logs que possuem estrutura definida. Esse método conceitualiza os logs não como mensagens escritas, mas como um registro de um evento e seu contexto que pode ser analisado por máquinas. Para mais detalhes, leia nossa documentação sobre análise de logs ou esta publicação no blog sobre como criar logs estruturado para a New Relic escrito em Python

Além disso, considere o que você vai precisar saber em um log quando estiver diagnosticando um problema. Embora nenhum destes próximos pontos ajudará você a ter menos logs, eles podem ajudar a gerar logs mais úteis: 

  • Use um formato de log que pode ser analisado: uma estrutura de log consistente pode ajudar você a coletar informações importantes, incluindo o essencial, como data, hora e descrição de um erro, em vez de apenas um código de status. Se você mantiver um formato consistente, será mais fácil agregar esses detalhes e aprofundar-se neles posteriormente. Se você está usando uma ferramenta que faz a análise, considere utilizar uma solução que permite definir regras de análise de logs personalizadas, caso precise delas.  
  • Forneça contexto junto com os logs: usar uma ferramenta que fornece informações sobre de onde um erro ou problema se originou junto do próprio log em si pode poupar seu tempo. Saiba como simplificar a resolução de problemas com logs contextualizados (logs in contex).
  • Garanta que você consegue filtrar os logs da maneira que deseja: embora possa soar óbvio que você vai precisar ordenar os logs, é preciso pensar como e quando vai querer fazer isso. Você pode ser capaz de identificar problemas comuns ou tipos de informação que são relevantes em muitas situações, sendo que nem todas são emergências. 
    Por exemplo, você pode filtrar logs quando as informações contidas forem confidenciais, como informações que precisam ser tratadas de acordo com requisitos específicos de privacidade e segurança. Os filtros também são úteis se você quiser fazer uma auditoria dos seus logs, pois deve ser possível não incluir eventos que não dizem respeito ao que está sendo verificado.

Para outras melhores práticas para criação de logs, esta publicação do blog apresenta outras considerações ao gerenciar logs

Técnicas para gerenciar o volume de logs

Gerenciar o volume de logs é crucial para a manutenção da saúde e do desempenho dos sistemas de TI, e há várias técnicas disponíveis que você pode experimentar. 

  • Limitação de logs: você pode limitar o número de logs que são criados durante um determinado período. Isso permite controlar o fluxo de logs a um nível mais gerenciável ao mesmo tempo em que ainda fornece informações. As instâncias em que você pode usar isso incluem aplicativos que geram uma quantidade de logs mais alta que o normal, como ferramentas de debug. 
  • Amostragem de logs: parecida com a limitação, a amostragem de logs diminui o número de logs que você coleta. A amostragem também pode ser definida para um determinado período, mas os logs são coletados com base em um dos critérios que você define ou aleatoriamente durante esse período. A limitação, por outro lado, interrompe o envio quando a quantidade de logs especificada para o período é alcançada. 
  • Ajuste dinâmico do nível de logs: essa técnica altera automaticamente o nível de logs com base nas necessidades do seu sistema. Ao alterar o nível, seus logs devem gerar mais ou menos dados. Por exemplo, o nível de DEBUG pode ter mais detalhes granulares do que INFO.
  • Análise de logs: você pode analisar seus logs para descobrir por que tantos estão sendo gerados. Geralmente, você descobrirá a origem do volume após usar ferramentas com machine learning capazes de normalizar os dados de log e procurar padrões. A New Relic tem recursos já prontos para análise de logs que pode ajudar você a começar agora mesmo. 

Embora seja possível usar essas técnicas por si só, você também pode simplesmente usar a New Relic. Nossa funcionalidade de gerenciamento de logs se dimensiona automaticamente até o volume necessário. Seus dados e seus custos com usuários não aumentam, e nossos preços são previsíveis.

Resumo

Nesta publicação do blog, você aprendeu algumas técnicas e melhores práticas para gerenciar o volume de logs com eficácia. Seguir algumas dessas práticas pode ajudar sua organização a economizar, melhorar o desempenho do sistema e diminuir o MTTD e o MTTR. Você pode até poupar tempo garantindo que a conformidade com segurança e privacidade estejam de acordo com os padrões da empresa. 

Com a New Relic, você pode monitorar seus logs e encontrar o sinal em meio ao ruído. Tenha mais visibilidade, pesquisa quase instantânea e informações completas de log contextual para qualquer volume de consultas. Com nossos preços simples e transparentes, nossas taxas de usuário e dados permanecem as mesmas à medida que você continua a dimensionar.