Monitoramento de aplicações TypeScript: métricas e alertas

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 TypeScript: métricas e alertas



No desenvolvimento web moderno, monitorar aplicações TypeScript não é um luxo, mas uma necessidade. Sem isso, você corre o risco de saber sobre uma falha apenas pelos usuários. Neste artigo, vamos abordar como configurar um monitoramento eficaz para projetos TypeScript, quais métricas acompanhar e como configurar alertas para receber notificações sobre problemas antes que se tornem críticos.



Por que o monitoramento de aplicações TypeScript é tão importante?



TypeScript, sendo uma extensão do JavaScript, é frequentemente usado para criar sistemas corporativos complexos e soluções server-side em Node.js. No entanto, a natureza dinâmica do JavaScript internamente pode levar a erros inesperados em tempo de execução. O monitoramento permite:



  • Detectar problemas em estágio inicial — antes que afetem os usuários.
  • Analisar desempenho — identificar gargalos no código.
  • Prever falhas — com base em tendências de métricas.
  • Melhorar a qualidade do código — entender quais módulos são os mais "problemáticos".


Métricas-chave para aplicações TypeScript



Para que o monitoramento seja eficaz, é necessário coletar as métricas corretas. Vamos dividi-las em três grupos principais.



1. Métricas técnicas (método RED)



A abordagem RED (Rate, Errors, Duration) é ideal para microsserviços e APIs:



  • Rate (taxa de requisições) — número de requisições por segundo (RPS).
  • Errors (erros) — porcentagem de erros (4xx, 5xx).
  • Duration (tempo de resposta) — tempo de processamento da requisição (p50, p95, p99).


Exemplo de coleta de métricas usando a biblioteca prom-client:



import client from 'prom-client';import express from 'express';

const app = express();

// Criando métricasconst httpRequestDuration = new client.Histogram({ name: 'http_request_duration_seconds', help: 'Duration of HTTP requests in seconds', labelNames: ['method', 'route', 'status_code'], buckets: [0.1, 0.5, 1, 2, 5]});

const httpRequestsTotal = new client.Counter({ name: 'http_requests_total', help: 'Total number of HTTP requests', labelNames: ['method', 'route', 'status_code']});

// Middleware para coleta de métricasapp.use((req, res, next) => { const end = httpRequestDuration.startTimer(); res.on('finish', () => { const labels = { method: req.method, route: req.path, status_code: res.statusCode }; httpRequestsTotal.inc(labels); end(labels); }); next();});

// Endpoint para Prometheusapp.get('/metrics', async (req, res) => { res.set('Content-Type', client.register.contentType); res.end(await client.register.metrics());});

app.listen(3000, () => console.log('Server running on port 3000'));


2. Métricas de negócio



Essas métricas refletem a saúde do negócio:



  • Número de transações bem-sucedidas.
  • Tamanho médio do carrinho (para e-commerce).
  • Tempo de resposta do banco de dados.
  • Número de usuários ativos.


Exemplo de métrica personalizada para rastrear pedidos:



const ordersCreated = new client.Counter({  name: 'orders_created_total',  help: 'Total number of orders created',  labelNames: ['status']});

// Em algum lugar no códigoexport function createOrder(data: OrderData): Order { // lógica de criação do pedido ordersCreated.inc({ status: 'success' }); return order;}


3. Métricas de infraestrutura



Para aplicações Node.js/TypeScript, são críticas:



  • Uso de memória (heap, RSS).
  • Uso de CPU.
  • Número de descritores de arquivo abertos.
  • Número de conexões ativas.
  • Coleta de lixo (GC).


Exemplo de coleta de métricas de memória:





                
                

Blogs

Book Recommendations