Monitoramento Node.js: ferramentas e bibliotecas para rastrear desempenho

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Monitoramento de aplicações JavaScript (Node.js): visão completa de ferramentas e práticas



Desenvolver em Node.js é poderoso, mas sem o monitoramento adequado, sua aplicação pode se tornar uma "caixa preta". Neste artigo, vamos analisar as principais ferramentas e bibliotecas que ajudarão você a acompanhar o estado de aplicações JavaScript no servidor, identificar gargalos e prevenir falhas.



Por que o monitoramento Node.js é necessário?

Node.js opera em um Event Loop de thread única, portanto, qualquer operação bloqueante (como um loop pesado ou leitura síncrona de arquivo) pode paralisar toda a aplicação. Sem monitoramento, você corre o risco de:

  • Perder um vazamento de memória — o GC não dá conta, a aplicação cai.
  • Não notar o aumento no tempo de resposta — os usuários vão embora.
  • Perder o controle sobre erros — rejeições não tratadas matam o processo.


1. Ferramentas nativas do Node.js

Vamos começar com o que já existe no núcleo. Node.js fornece os módulos process e perf_hooks para coleta básica de métricas.

// Exemplo: coleta de métricas de memória e tempo de respostaconst { performance, PerformanceObserver } = require('perf_hooks');

// Monitoramento do Event Loopconst obs = new PerformanceObserver((items) => { const entry = items.getEntries()[0]; console.log(`Atraso do Event Loop: ${entry.duration}ms`);});obs.observe({ entryTypes: ['function'] });

// Medição do tempo de execução de uma funçãoperformance.mark('start');// ... seu código ...performance.mark('end');performance.measure('myFunction', 'start', 'end');

// Monitoramento de memóriasetInterval(() => { const memory = process.memoryUsage(); console.log(`RSS: ${memory.rss}, Heap: ${memory.heapUsed}`);}, 5000);


2. PM2 — gerenciador de processos com monitoramento

PM2 é o padrão de facto para produção em Node.js. Ele não apenas gerencia processos, mas também fornece monitoramento integrado através do comando pm2 monit.

  • Reinicialização automática em caso de falha do processo.
  • Coleta de métricas: CPU, memória, número de requisições.
  • Registro de logs stdout/stderr.
  • Modo Cluster para máxima utilização dos núcleos.
// Instalação e execuçãonpm install pm2 -gpm2 start app.js --name "my-app" --instances max

// Monitoramento integradopm2 monit

// Exportação de métricas para JSONpm2 jlist > metrics.json

Para monitoramento avançado, use pm2-metrics — um plugin que envia dados para o Prometheus.



3. Clinic.js — diagnóstico de desempenho

Clinic.js é um conjunto de ferramentas da NearForm para perfilamento de Node.js. Inclui três utilitários:

  • Clinic Doctor — diagnóstico geral (Event Loop, GC, I/O).
  • Clinic Bubbleprof — análise de operações assíncronas.
  • Clinic Flame — flame graphs para encontrar funções críticas.
// Instalaçãonpm install -g clinic

// Execução com teste de cargaclinic doctor -- node app.js

// Em outro terminal:autocannon localhost:3000

// Após a parada, um relatório HTML com visualização será aberto

Clinic.js é especialmente útil para identificar problemas com o Event Loop (alta latência, pausas frequentes do GC).



4. Prometheus + Node.js — métricas personalizadas

Prometheus é o padrão para coleta de métricas em arquitetura de microsserviços. Para Node.js, use a biblioteca prom-client.

const prometheus = require('prom-client');

// Criando um contador de requisiçõesconst httpRequestsTotal = new prometheus.Counter({ name: 'http_requests_total', help: 'Número total de requisições HTTP', labelNames: ['method', 'route', 'status']});

// Histograma de tempo de respostaconst httpRequestDuration = new prometheus.Histogram({ name: 'http

Recommendations