Monitoreo de aplicaciones TypeScript: métricas y alertas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Monitoreo de aplicaciones TypeScript: métricas y alertas



En el desarrollo web moderno, el monitoreo de aplicaciones TypeScript no es un lujo, sino una necesidad. Sin él, corres el riesgo de enterarte de una falla solo por los usuarios. En este artículo, analizaremos cómo configurar un monitoreo efectivo para proyectos TypeScript, qué métricas rastrear y cómo configurar alertas para recibir notificaciones sobre problemas antes de que se vuelvan críticos.



¿Por qué es tan importante el monitoreo de aplicaciones TypeScript?



TypeScript, al ser una extensión de JavaScript, se utiliza a menudo para crear sistemas empresariales complejos y soluciones de servidor en Node.js. Sin embargo, la naturaleza dinámica de JavaScript debajo del capó puede provocar errores inesperados en tiempo de ejecución. El monitoreo permite:



  • Detectar problemas en una etapa temprana — antes de que afecten a los usuarios.
  • Analizar el rendimiento — identificar cuellos de botella en el código.
  • Predecir fallos — basándose en las tendencias de las métricas.
  • Mejorar la calidad del código — comprender qué módulos son los más "problemáticos".


Métricas clave para aplicaciones TypeScript



Para que el monitoreo sea efectivo, es necesario recopilar las métricas correctas. Las dividiremos en tres grupos principales.



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



El enfoque RED (Rate, Errors, Duration) es ideal para microservicios y APIs:



  • Rate (frecuencia de solicitudes) — número de solicitudes por segundo (RPS).
  • Errors (errores) — porcentaje de errores (4xx, 5xx).
  • Duration (tiempo de respuesta) — tiempo de procesamiento de la solicitud (p50, p95, p99).


Ejemplo de recopilación de métricas con la librería prom-client:



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

const app = express();

// Creamos las 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 recopilar 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 negocio



Estas métricas reflejan la salud del negocio:



  • Número de transacciones exitosas.
  • Tamaño promedio del carrito (para e-commerce).
  • Tiempo de respuesta de la base de datos.
  • Número de usuarios activos.


Ejemplo de métrica personalizada para rastrear pedidos:



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

// En algún lugar del códigoexport function createOrder(data: OrderData): Order { // lógica de creación del pedido ordersCreated.inc({ status: 'success' }); return order;}


3. Métricas de infraestructura



Para aplicaciones Node.js/TypeScript son críticas:



  • Uso de memoria (heap, RSS).
  • Carga de CPU.
  • Número de descriptores de archivo abiertos.
  • Número de conexiones activas.
  • Recolección de basura (GC).


Ejemplo de recopilación de métricas de memoria:





                
                

Blogs

Book Recommendations