Monitoramento de aplicações TypeScript: bibliotecas, ferramentas e configuração

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: guia completo de ferramentas e bibliotecas



O monitoramento é uma parte essencial do desenvolvimento de aplicações web modernas em TypeScript. Sem ele, você trabalha no escuro: erros passam despercebidos, o desempenho cai e os usuários vão embora. Neste artigo, vamos analisar as principais bibliotecas e ferramentas para monitoramento de aplicações TypeScript, incluindo Sentry, OpenTelemetry, Prometheus e registro em log integrado. Você aprenderá como configurar a coleta de erros, métricas e rastreamento em tempo real.



1. Sentry: rastreamento de erros em tempo real



Sentry é a plataforma mais popular para monitoramento de erros. Ela suporta TypeScript nativamente e permite capturar exceções, registrar o contexto de execução e receber notificações sobre falhas.



Instalação e configuração básica



npm install @sentry/node @sentry/tracing


Exemplo de inicialização do Sentry em uma aplicação TypeScript no 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,});

// Envio forçado de erroapp.get("/debug-sentry", function mainHandler(req, res) { throw new Error("Erro de teste do Sentry!");});


Registro de contexto



O Sentry permite adicionar tags e contexto personalizados:



Sentry.setUser({ email: "user@example.com" });Sentry.setTag("environment", "production");Sentry.captureException(new Error("Erro ao processar pedido"));


2. OpenTelemetry: padrão para rastreamento e métricas



OpenTelemetry é um padrão aberto para coleta de telemetria: traces, métricas e logs. Ele suporta TypeScript e se integra facilmente com qualquer backend (Jaeger, Zipkin, Prometheus).



Instalação dos pacotes



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


Exemplo de configuração de rastreamento



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();


Agora, cada requisição HTTP será automaticamente encapsulada em um span com metadados. Você pode adicionar 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 coletar métricas de desempenho (RPS, tempo de resposta, número de erros), use o Prometheus em conjunto com a biblioteca express-prom-bundle. Ela coleta automaticamente métricas de aplicações Express.



Instalação



npm install prom-client express-prom-bundle


Exemplo de configuração



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