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/tracingExemplo 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-expressExemplo 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-bundleExemplo 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 Também na biblioteca
Trabalhando com Markdown em Go: bibliotecas blackfriday, goldmark e chroma
Agendador de tarefas em TypeScript: guia completo sobre bibliotecas cron e temporizadores
Configuração de aplicações em C++: bibliotecas e ferramentas para configuração flexível
Trabalho com imagens em TypeScript: redimensionar e recortar com Sharp e Jimp
Processamento e parsing de Markdown em PHP: bibliotecas e ferramentas