Registro em log - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Registro em log

O registro é o processo de manter dados sobre eventos que ocorrem em um sistema. O registro pode incluir problemas, erros ou informações sobre a operação atual. Os registros podem ser classificados em diferentes tipos, como os seguintes:

  • Registro de eventos

  • Registro do servidor

  • Registro do sistema

  • Registros de autorização e acesso

  • Logs de auditoria

Um desenvolvedor pode pesquisar os registros em busca de códigos ou padrões de erro específicos, filtrá-los com base em campos específicos ou arquivá-los com segurança para análise futura. Os registros ajudam o desenvolvedor a realizar a análise da causa raiz dos problemas de desempenho e também a correlacionar os componentes do sistema.

A criação de uma solução de registro eficaz envolve uma estreita coordenação entre as equipes de aplicativos e infraestrutura. Os registros de aplicativos não são úteis, a menos que haja uma infraestrutura de registro escalável que ofereça suporte a casos de uso como análise, filtragem, armazenamento em buffer e correlação de registros. Casos de uso comuns, como gerar um ID de correlação, registrar o tempo de execução de métodos essenciais para os negócios e definir padrões de registro, podem ser simplificados.

Equipe de aplicação

Um desenvolvedor de aplicativos deve garantir que os registros gerados sigam as melhores práticas de registro. As melhores práticas incluem o seguinte:

  • Gerando IDs de correlação para rastrear solicitações exclusivas

  • Registrando o tempo gasto pelos métodos essenciais para os negócios

  • Registro em um nível de registro apropriado

  • Compartilhando uma biblioteca de registro comum

Ao criar aplicativos que interagem com diferentes microsserviços, use esses princípios de design de registro para simplificar a filtragem e a extração de registros no back-end.

Gerando IDs de correlação para rastrear solicitações exclusivas

Quando o aplicativo recebe a solicitação, ele pode verificar se um ID de correlação já está presente no cabeçalho. Se um ID não estiver presente, o aplicativo deverá gerar um ID. Por exemplo, um Application Load Balancer adiciona um cabeçalho chamado. X-Amzn-Trace-Id O aplicativo pode usar o cabeçalho para correlacionar a solicitação do balanceador de carga ao aplicativo. Da mesma forma, o aplicativo deve injetar traceId se estiver chamando microsserviços dependentes para que os registros gerados por diferentes componentes em um fluxo de solicitação sejam correlacionados.

Registrando o tempo gasto pelos métodos essenciais para os negócios

Quando o aplicativo recebe uma solicitação, ele interage com um componente diferente. O aplicativo deve registrar o tempo gasto com métodos essenciais para os negócios em um padrão definido. Isso pode facilitar a análise dos registros no back-end. Também pode ajudar você a gerar informações úteis a partir dos registros. Você pode usar abordagens como programação orientada a aspectos (AOP) para gerar esses registros para que você possa separar as questões de registro da sua lógica de negócios.

Registro em um nível de registro apropriado

O aplicativo deve gravar registros que tenham uma quantidade útil de informações. Use os níveis de registro para categorizar os eventos de acordo com sua gravidade. Por exemplo, uso WARNING e ERROR níveis para eventos importantes que precisam ser investigados. Use INFO e DEBUG para rastreamento detalhado e eventos de alto volume. Configure manipuladores de registros para capturar somente os níveis necessários na produção. Gerar muito registro no INFO nível não ajuda e aumenta a pressão na infraestrutura de back-end. DEBUGo registro pode ser útil, mas deve ser usado com cautela. O uso de DEBUG registros pode gerar um grande volume de dados, por isso não é recomendado em ambientes de teste de desempenho.

Compartilhando uma biblioteca de registro comum

As equipes de aplicativos devem usar uma biblioteca de registro comum, como, por exemplo AWS SDK para Java, com um padrão de registro comum predefinido que os desenvolvedores possam usar como dependências em seus projetos.

Equipe de infraestrutura

DevOps os engenheiros podem reduzir o esforço usando os seguintes princípios de design de registro ao filtrar e extrair registros no back-end. A equipe de infraestrutura deve configurar e oferecer suporte aos seguintes recursos.

Agente de registro

Um agente de registro (remetente de registros) é um programa que lê registros de um local e os envia para outro local. Os agentes de log são usados para ler arquivos de log armazenados em um computador e carregar eventos de log no back-end para centralização.

Os registros são dados não estruturados que precisam ser estruturados antes que você possa obter insights significativos a partir deles. Os agentes de log usam analisadores para ler instruções de log e extrair campos relevantes, como timestamp, nível de log e nome do serviço, e estruturam esses dados em um formato JSON. Ter um agente de registro leve na borda é útil porque leva a uma menor utilização de recursos. O agente de log pode enviar diretamente para o back-end ou usar um encaminhador de log intermediário que envia os dados para o back-end. Usar um encaminhador de registros descarrega o trabalho dos agentes de registro na origem.

Analisador de registros

Um analisador de registros converte os registros não estruturados em registros estruturados. Os analisadores do agente de log também enriquecem os registros adicionando metadados. A análise dos dados pode ser feita na fonte (final do aplicativo) ou centralmente. O esquema para armazenar os registros deve ser extensível para que você possa adicionar novos campos. Recomendamos o uso de formatos de log padrão, como JSON. No entanto, em alguns casos, os registros devem ser transformados em formatos JSON para uma melhor pesquisa. Escrever a expressão correta do analisador permite uma transformação eficiente.

Backend de registros

Um serviço de back-end de registros coleta, ingere e visualiza dados de log de várias fontes. O agente de log pode gravar diretamente no back-end ou usar um encaminhador de log intermediário. Durante o teste de desempenho, certifique-se de armazenar os registros para que possam ser pesquisados posteriormente. Armazene os registros no back-end separadamente para cada aplicativo. Por exemplo, use um índice dedicado para um aplicativo e use o padrão de índice para pesquisar registros espalhados por diferentes aplicativos relacionados. Recomendamos salvar pelo menos 7 dias de dados para pesquisar registros. No entanto, armazenar os dados por um período maior pode resultar em custos de armazenamento desnecessários. Como um grande volume de registros é gerado durante o teste de desempenho, é importante que a infraestrutura de registro escale e dimensione corretamente o back-end de registro.

Visualização de registros

Para obter insights significativos e acionáveis dos registros do aplicativo, use ferramentas de visualização dedicadas para processar e transformar os dados brutos do registro em representações gráficas. Visualizações como tabelas, gráficos e painéis podem ajudar a descobrir tendências, padrões e anomalias que podem não ser facilmente aparentes ao analisar os registros brutos.

Os principais benefícios do uso de ferramentas de visualização incluem a capacidade de correlacionar dados em vários sistemas e aplicativos para identificar dependências e gargalos. Os painéis interativos oferecem suporte ao detalhamento dos dados em diferentes níveis de granularidade para solucionar problemas ou identificar tendências de uso. Plataformas especializadas de visualização de dados fornecem recursos como análise, alertas e compartilhamento de dados que podem aprimorar o monitoramento e a análise.

Ao usar o poder da visualização de dados nos registros de aplicativos, as equipes de desenvolvimento e operações podem obter visibilidade do desempenho do sistema e do aplicativo. Os insights derivados podem ser usados para diversas finalidades, incluindo otimizar a eficiência, melhorar a experiência do usuário, aprimorar a segurança e o planejamento da capacidade. O resultado final são painéis personalizados para várias partes interessadas, fornecendo at-a-glance visualizações que resumem os dados de log em informações úteis e perspicazes.

Automatizando a infraestrutura de registro

Como aplicativos diferentes têm requisitos diferentes, é importante automatizar a instalação e as operações da infraestrutura de registro. Use ferramentas de infraestrutura como código (IaC) para provisionar o back-end da infraestrutura de registro. Em seguida, você pode provisionar a infraestrutura de registro como um serviço compartilhado ou como uma implantação independente sob medida para um aplicativo específico.

Recomendamos que os desenvolvedores usem pipelines de entrega contínua (CD) para automatizar o seguinte:

  • Implante a infraestrutura de registro sob demanda e desmonte-a quando não for necessária.

  • Implante agentes de log em diferentes alvos.

  • Implemente configurações de analisador e encaminhador de registros.

  • Implante painéis de aplicativos.

Ferramentas de registro

AWS fornece serviços nativos de registro, alarme e painel de controle. Os recursos a seguir são populares Serviços da AWS e são para registro em log: