Monitoreo de aplicaciones TypeScript: bibliotecas, herramientas y configuración

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: guía completa de herramientas y bibliotecas



El monitoreo es una parte esencial del desarrollo de aplicaciones web modernas en TypeScript. Sin él, trabaja a ciegas: los errores pasan desapercibidos, el rendimiento disminuye y los usuarios se van. En este artículo, analizaremos las bibliotecas y herramientas clave para el monitoreo de aplicaciones TypeScript, incluyendo Sentry, OpenTelemetry, Prometheus y el registro integrado. Aprenderá a configurar la recopilación de errores, métricas y trazado en tiempo real.



1. Sentry: seguimiento de errores en tiempo real



Sentry es la plataforma más popular para el monitoreo de errores. Es compatible con TypeScript de forma nativa y permite capturar excepciones, registrar el contexto de ejecución y recibir notificaciones de fallos.



Instalación y configuración básica



npm install @sentry/node @sentry/tracing


Ejemplo de inicialización de Sentry en una aplicación TypeScript en Node.js:



import * as Sentry from "@sentry/node";import { ProfilingIntegration } from "@sentry/profiling-node";

Sentry.init({ dsn: "https://examplePublicKey@o0.ingest.sentry.io/0", integrations: [ new ProfilingIntegration(), ], tracesSampleRate: 1.0, profilesSampleRate: 1.0,});

// Envío forzado de un errorapp.get("/debug-sentry", function mainHandler(req, res) { throw new Error("¡Error de prueba de Sentry!");});


Registro de contexto



Sentry permite agregar etiquetas y contexto personalizados:



Sentry.setUser({ email: "user@example.com" });Sentry.setTag("environment", "production");Sentry.captureException(new Error("Error al procesar el pedido"));


2. OpenTelemetry: estándar para trazado y métricas



OpenTelemetry es un estándar abierto para la recopilación de telemetría: trazas, métricas y registros. Es compatible con TypeScript y se integra fácilmente con cualquier backend (Jaeger, Zipkin, Prometheus).



Instalación de paquetes



npm install @opentelemetry/api @opentelemetry/sdk-node @opentelemetry/instrumentation-http @opentelemetry/instrumentation-express


Ejemplo de configuración de trazado



import { NodeSDK } from "@opentelemetry/sdk-node";import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";import { ConsoleSpanExporter } from "@opentelemetry/sdk-trace-node";

const sdk = new NodeSDK({ traceExporter: new ConsoleSpanExporter(), instrumentations: [getNodeAutoInstrumentations()],});

sdk.start();


Ahora cada solicitud HTTP se envolverá automáticamente en un span con metadatos. Puede agregar spans personalizados:



import { trace } from "@opentelemetry/api";

const tracer = trace.getTracer("my-service");

app.get("/api/data", async (req, res) => { const span = tracer.startSpan("processData"); try { const data = await fetchData(); span.setAttribute("data.size", data.length); res.json(data); } finally { span.end(); }});


3. Prometheus + express-prom-bundle: métricas para Node.js



Para recopilar métricas de rendimiento (RPS, tiempo de respuesta, cantidad de errores), use Prometheus junto con la biblioteca express-prom-bundle. Esta recopila automáticamente métricas de aplicaciones Express.



Instalación



npm install prom-client express-prom-bundle


Ejemplo de configuración



import express from "express";import promBundle from "express-prom-bundle";

const app = express();

const metricsMiddleware = promBundle({ includeMethod: true, includePath: true, includeStatusCode: true, customLabels: { project: "my-app" }, metricsPath: "/metrics",});

app.use(metricsMi

Recommendations