Monitoramento de aplicações TypeScript: ferramentas e bibliotecas

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: da diagnose à observability



O desenvolvimento em TypeScript hoje abrange tanto o lado do servidor (Node.js, Deno, Bun) quanto o lado do cliente (React, Angular, Vue). No entanto, quanto mais complexa a aplicação, mais importante é entender o que está acontecendo em produção. O monitoramento de aplicações TypeScript não é apenas a coleta de logs, mas um sistema completo de observability, incluindo métricas, tracing e alertas. Neste artigo, abordaremos as principais bibliotecas e abordagens para configurar o monitoramento.



Por que o TypeScript exige uma abordagem especial

O TypeScript é compilado para JavaScript, portanto, as ferramentas padrão para JS funcionam também com TS. No entanto, existem nuances:

  • O stack de erros pode apontar para o código compilado, e não para o TS original.
  • Source maps são obrigatórios para o rastreamento correto de erros.
  • A tipagem permite anotar métricas e spans com mais precisão.


1. Sentry — o rei dos erros para frontend e backend

Sentry é a plataforma mais popular para rastreamento de erros e desempenho. Para TypeScript, existe um SDK oficial.



Instalação:

npm install @sentry/node @sentry/tracing# ou para React:npm install @sentry/react @sentry/tracing


Exemplo para 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, // perfilamento});

// Captura automática de errosapp.get("/api/data", async (req, res) => { try { const data = await fetchData(); res.json(data); } catch (err) { Sentry.captureException(err); res.status(500).send("Error"); }});


Recursos para TypeScript:

  • Suporte a source maps: carregue-os via sentry-cli ou plugin webpack.
  • Tipagem: o SDK exporta tipos para todos os métodos.
  • Perfilamento: veja quais funções estão lentas.


2. OpenTelemetry — padrão universal de observability

OpenTelemetry (OTel) é um conjunto de APIs e SDKs para coleta de traces, métricas e logs. É ideal para microsserviços em TypeScript.



Instalação:

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


Exemplo de configuração de tracing:

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

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

sdk.start();

// Aplicaçãoimport express from "express";const app = express();app.get("/", (req, res) => { res.send("Hello OTel!");});app.listen(3000);


Vantagens:

  • Neutralidade de fornecedor: os dados podem ser enviados para Jaeger, Zipkin, Datadog, Grafana.
  • Instrumentação automática de bibliotecas populares (Express, gRPC, MongoDB).
  • TypeScript-first: todos os SDKs são escritos em TS com tipagem completa.


3. Prometheus + cliente para métricas

Para coleta de métricas (RPS, latência, memória), use o Prometheus com o cliente prom-client.



Instalação:

npm install prom-client


Exemplo com Express e TypeScript:

import ex                    

Recommendations