node.js

Observabilidade

  • ligeiro Deividy Metheler Zachetti
  • 2024-08-19
blog-detail-hero

Olá, hoje, vou escrever sobre como cuido dos logs em minhas aplicações, especialmente em ambien tes Node.js.

A observabilidade é essencial em qualquer aplicação, e logs detalhados podem ajudar a diagnosticar problemas e a otimizar o desempenho. Em aplicações Node, geralmente, não há um acess log pronto, como em NGINX, então costumo criar meu próprio log de request. Isso inclui o IP do cliente, o método, o endpoint, headers relevantes (como user ID e account ID ), o código de status HTTP e o tempo de resposta.

Este log de request é útil para identificar quaisquer problemas de desempenho. Por exemplo, se um endpoint está levando muito tempo para responder, pode haver alguma coisa errad a que precise ser corrigida.

Antes de nos aprofundarmos em logs, é importante entender que todo processo Unix tem dois "outputs": o standard out e o standard error. Esses são dois canais de streaming na apl icação. Quando usamos console.log, estamos enviando para o standard out, enquanto console.error envia para o standard error. Podemos redirecionar esses logs para arquivos es pecíficos, o que é útil para separar logs normais de erros.

Por exemplo, podemos redirecionar o standard out para um arquivo e o standard error para outro. Isso é útil se quisermos manter logs de erros separados para facilitar a análise.

Tenho um log específico para erros fatais. Quando um erro fatal ocorre, um sinal de fumaça é gerado e um e-mail ou SMS é enviado para mim, alertando sobre o problema . Isso é crucial, pois um erro fatal fará com que o processo da minha aplicação seja encerrado.

Por fim, tenho um log de eventos, onde registro eventos críticos da minha aplicação, como conexões com third parties. Isso me permite ter um histórico de eventos que possa ser ú til para resolver problemas ou analisar o comportamento da aplicação.

Este é um resumo dos meus métodos de log em aplicações. Mantenho um standard out direcionado para um arquivo, estendo o journactl para pegar logs de erro, tenho um logger centrali zado para pegar erros específicos, e um log específico para erros fatais que gera um sinal de fumaça. Além disso, tenho um log de eventos onde registro eventos críticos da minha aplicação.

Espero que tenham gostado deste post! Se tiverem alguma dúvida ou sugestão, sintam-se à vontade para deixar um comentário. Até a próxima!


Esse blog post foi escrito utilizando AI ( especificamente whisper-large ) com o projeto https://github.com/S4mpl3r/youtube2blog.

O vídeo abaixo foi transcrito e utilizado como base para gerar o texto: