Ao solucionar um problema em seu app ou host, você precisa ter dados de logs completos, que possam ser analisados. Um log de aplicação fornece informações granulares sobre eventos que ocorrem em suas aplicações, incluindo erros, atividade do usuário, e solicitações HTTP. Cada linha em um log inclui um carimbo de data/hora, e informações sobre o evento, fornecendo dados importantes que você pode usar para analisar o desempenho do sua aplicação, e solucionar erros quando eles surgirem.

Introdução rápida: o que são logs de aplicações?

Os logs de aplicações são gravações estruturadas de eventos e atividades gerados por aplicações de software. Eles capturam uma ampla gama de informações, incluindo mensagens de erro, interações do usuário, eventos do sistema, e dados específicos da aplicação.

Esses logs são valiosos por vários motivos. Em primeiro lugar, eles servem como uma ferramenta importante para solucionar e diagnosticar problemas. Quando algo dá errado, os logs fornecem um histórico do que aconteceu, permitindo que desenvolvedores e administradores de sistema identifiquem a causa raiz, e resolvam os problemas rapidamente. 

Além disso, os logs são essenciais para auditoria e conformidade, ajudando as organizações a rastrear as atividades dos usuários, e as alterações do sistema. Eles também possuem um papel significativo no monitoramento do desempenho, permitindo a análise das principais métricas e a identificação de áreas de melhoria.

No geral, os logs de aplicação são uma fonte valiosa de informações, que suportam depuração, segurança, conformidade, e otimização de sistemas de software.

Log do ciclo de vida da aplicação

No entanto, os logs só são úteis se você os gerenciar corretamente no contexto da aplicação, e isso significa lidar com cada estágio do ciclo de vida do gerenciamento de logs, incluindo:

  • Criação
  • Coleção
  • Agregação
  • Armazenamento
  • Análise, consulta, visualização e alertas
  • Arquivo
  • Exclusão

Neste artigo, você aprenderá os princípios básicos de como lidar com cada etapa do processo de gerenciamento de logs. Para saber mais sobre porquê os logs e o gerenciamento de logs são importantes, veja ''O que é gerenciamento de logs?''

Vamos dar uma olhada em cada etapa do processo.

Criação de log

O primeiro passo é gerar logs para cada serviço na sua aplicação. Então, como você faz isso? Existem várias opções:

  • Alguns serviços e plataformas criam logs automaticamente para você.
  • Você pode implementar o log personalizado, geralmente no nível do código.
  • Você pode instrumentar os seus serviços com uma plataforma de observabilidade, como a New Relic. Instrumentação é o processo de instalação de agentes em seu código, que coletam dados, e os enviam para uma solução de gerenciamento de logs.

Vamos analisar brevemente cada opção.

Geração automática de logs

Primeiro, muitos serviços e tecnologias geram logs automaticamente. Por exemplo, se você usar uma plataforma MVC como Rails, Django ou .NET, os logs serão automaticamente enviados para o terminal em desenvolvimento. Serviços em nuvem como AWS e Azure também fornecem logs por padrão. Você precisará dar uma olhada na documentação de cada serviço para determinar se os logs são fornecidos por padrão, se eles precisam ser ativados, e se você precisa configurá-los.

Implementação de log personalizado

Se você estiver criando front-ends e back-ends personalizados, precisará dar uma olhada mais de perto na documentação das estruturas que está usando, e nas próprias linguagens de programação. Por exemplo, tanto o Ruby quanto o Python possuem uma classe `Logger`, que você pode implementar para adicionar mensagens de logs personalizadas. Como prática recomendada de codificação, você deve implementar o tratamento de erros em suas aplicações—e pode adicionar mensagens de logs personalizadas, independentemente da aplicação tratar esses erros com êxito ou não.

Usando uma plataforma de observabilidade

Finalmente, se você estiver usando uma solução de gerenciamento de log, como a New Relic, poderá instrumentar automaticamente as suas aplicações, instalando agentes em seu código, que enviam dados de telemetria para a plataforma que você está usando. Você também pode usar uma solução de código aberto como o Prometheus para monitorar serviços e gerar dados de log.

Se você está começando do zero, não reinvente a roda. Use uma solução que possa instrumentar os seus serviços para você, e use os logs que os seus serviços já fornecem.

Coleta de logs

Depois que os seus serviços criarem logs (por padrão, ou porque você os configurou para isso), você deverá coletá-los em um local onde possam ser analisados, consultados e armazenados. É extremamente importante centralizar os seus logs. Caso contrário, você terá dificuldade em solucionar problemas, e entender como os seus serviços estão interagindo entre si. Por exemplo, um problema em um serviço "upstream" pode causar um erro em um serviço "downstream"—mas se você estiver enviando os logs desses serviços para locais diferentes, não será capaz de correlacionar e analisar os dados para encontrar a causa raiz do problema.

Configurando a sua coleção de logs

Se você estiver usando uma plataforma que fornece instrumentação, os agentes coletam e enviam automaticamente dados de log para a plataforma por você. Para serviços que você não instrumenta, é necessário configurar o encaminhamento de log. Isso pode ser uma verdadeira dor de cabeça, principalmente se você precisar encaminhar logs de vários serviços. A New Relic fornece logs em contexto, que suportam o encaminhamento automático de logs, sem a necessidade de instalação ou manutenção de software de terceiros. Caso contrário, você precisará passar pelo processo de revisão de documentação de cada serviço, configurar o encaminhamento de logs, e garantir que os logs sejam encaminhados corretamente para o local centralizado que você especificou.

Considerando serviços que não deveriam ser registrados

Há outra coisa muito importante que você precisa considerar: algum dos seus serviços produz eventos que não deveriam ser registrados de forma alguma? Um exemplo são as informações de saúde protegidas, que precisam estar em conformidade com a HIPAA. Talvez você precise de configuração adicional para garantir que dados confidenciais não sejam registrados.

Recursos
História do cliente Virtuo da New Relic
Descubra o poder do gerenciamento de logs da New Relic.
Gerencie seus logs Gerencie seus logs

Agregação de logs

Tecnicamente, a agregação abrange a coleta e a consolidação de logs, mas este artigo a inclui como uma etapa separada, porque é uma parte importante do processo. Não é suficiente apenas coletar os dados recebidos—esses dados precisam ser consistentes. Pense nisso como a diferença entre jogar papéis em uma caixa, e arquivá-los meticulosamente. Você não conseguirá encontrar facilmente o que procura se estiver empilhado em algum lugar, em um conjunto aleatório. Se os logs estiverem devidamente organizados, e armazenados, eles serão mais fáceis—e muito mais eficientes—de se consultar.

Isso significa formatar os seus logs para que eles sejam consistentes, e forneçam as informações necessárias. Isso inclui:

Padronizando logs

Você pode fazer isso convertendo-os para o formato JSON, ou garantindo que cada log tenha determinados pares de valores-chave. Por exemplo, serviços diferentes podem formatar carimbos de data/hora de maneira diferenciada, usar chaves únicas para armazenar dados, ou nem mesmo usar pares de valores-chave.

Adicionando contexto aos logs

Isso incluiria informações sobre o serviço de origem. Por exemplo, se você estiver coletando logs de muitos servidores diferentes, desejará ter campos adicionais nos dados de logs para diferenciá-los. Isso pode incluir campos como um ID, nome do servidor, e localização do servidor.

Mais uma vez, se você estiver usando uma plataforma de observabilidade, ou outra solução de gerenciamento de logs, e estiver instalando agentes e instrumentando os seus serviços, a sua solução poderá fazer grande parte da consolidação para você. Se não estiver usando uma solução externa, você precisará criar uma solução personalizada em nível de código, que padronize e contextualize os dados de log a medida que são coletados.

Armazenamento de logs

Depois de organizar os dados, você precisa armazená-los, seja em um banco de dados personalizado, ou em uma solução externa. Se você estiver usando uma solução de gerenciamento de logs, ou uma plataforma de observabilidade para armazenar dados, certifique-se de compreender completamente por quanto tempo cada tipo de dado é armazenado. Por exemplo, a New Relic armazena os principais dados de métricas de desempenho da aplicação para sempre, permitindo visualizar alterações em sua aplicação ao longo do tempo. No entanto, os próprios logs são armazenados apenas durante 30 dias por padrão, com armazenamento de longo prazo disponível com a opção Data Plus.

Entendendo os dados de log do seu app

Os seus dados de log do APM só serão úteis se você conseguir entendê-los. É aí que a análise e a visualização automáticas podem ajudá-lo. Se você estiver simplesmente armazenando e coletando logs, não será capaz de detectar padrões em sua aplicação. Você ainda pode usar logs para solucionar problemas de forma reativa, mas é um desafio detectar problemas de forma proativa, e corrigi-los antes que afetem os seus usuários.

A visualização de dados oferece uma visão de alto nível das principais métricas da sua aplicação. Para visualizar os seus dados, você pode usar uma plataforma de observabilidade, ou uma ferramenta de código aberto, como o Grafana. A próxima imagem mostra o painel APM na New Relic.

Este painel inclui visualizações de métricas importantes, incluindo tempo de transação, taxa de transferência, taxa de erro, e pontuação Apdex. Ao visualizar os dados, você pode ver o desempenho do seu aplicativo, e agir rapidamente quando as métricas atingem limites críticos, como quando a taxa de erros aumenta.

Simplificando com uma plataforma de observabilidade

Com uma plataforma de observabilidade, você pode consultar os seus dados para obter visualizações mais detalhadas, ou examinar transações específicas. A New Relic inclui NRQL, e você pode usar o criador de consulta para verificar logs específicos, e criar painéis personalizados.

Também é uma boa ideia configurar alertas com base nos dados de telemetria recebidos. Dessa forma, você pode notificar as suas equipes quando uma métrica ultrapassar um limite crítico.

Arquivamento e exclusão de log

Os dados de logs tendem a ser mais úteis para resolver problemas que estão acontecendo no momento. Embora os dados de logs também forneçam um log histórico útil do que aconteceu em sua aplicação no passado, em algum momento você pode querer arquivar, ou excluir, dados de log antigos.

Arquivando os seus logs

Arquivar é o processo de mover dados do armazenamento “quente” para o armazenamento “frio”. Os dados no armazenamento “quente” podem ser consultados e acessados imediatamente. Porém, eles precisam ser armazenados num armazenamento rápido, que custa mais caro. Os dados em armazenamento “frio” são mais baratos, mas demoram mais para serem acessados e consultados. Em última análise, por quanto tempo você mantém os dados em armazenamento “quente” depende das necessidades da sua organização. Um intervalo de 30 a 90 dias é típico, e a New Relic armazena dados de log por 30 dias por padrão.

Excluindo os seus dados de log

A exclusão de dados de log é a parte final do ciclo de vida de gerenciamento de log. Mais uma vez, quando (ou mesmo se) você exclui os seus logs depende de suas necessidades organizacionais. Por mais que o armazenamento frio de longo prazo seja mais barato do que o armazenamento quente, armazenar dados de log indefinidamente—principalmente a medida que os dados de log crescem ano após ano—tem um custo. Portanto, o principal motivo pelo qual você pode querer excluir os logs é para economizar nos custos de armazenamento.

Alguns tipos de logs possuem requisitos mínimos de armazenamento. Por exemplo, os logs de incidentes de segurança, e os logs compatíveis com HIPAA, precisam ser armazenados por um período mínimo de seis anos."

Privacidade de dados

Finalmente, você desejará garantir a privacidade dos dados ao gerenciar os seus logs. A coleta de dados sempre possui o risco da divulgação inadvertida de dados confidenciais. Certifique-se de seguir as diretrizes de segurança da sua organização, considerando a filtragem adicional, que é controlada pela configuração do encaminhador de logs que você utiliza.