Überwachung von TypeScript-Anwendungen: Tools und Bibliotheken

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Überwachung von TypeScript-Anwendungen: Von der Diagnose bis zur Observability



Die Entwicklung mit TypeScript umfasst heute sowohl serverseitige (Node.js, Deno, Bun) als auch clientseitige (React, Angular, Vue) Bereiche. Je komplexer die Anwendung, desto wichtiger ist es jedoch zu verstehen, was in der Produktion passiert. Die Überwachung von TypeScript-Anwendungen ist nicht nur das Sammeln von Logs, sondern ein vollständiges Observability-System, das Metriken, Tracing und Alarme umfasst. In diesem Artikel werden die wichtigsten Bibliotheken und Ansätze zur Einrichtung der Überwachung erläutert.



Warum TypeScript einen besonderen Ansatz erfordert

TypeScript wird in JavaScript kompiliert, daher funktionieren die Standard-Tools für JS auch mit TS. Es gibt jedoch Nuancen:

  • Der Fehler-Stack kann auf kompilierten Code verweisen, nicht auf den ursprünglichen TS-Code.
  • Source Maps sind für ein korrektes Fehler-Tracing zwingend erforderlich.
  • Die Typisierung ermöglicht eine genauere Annotation von Metriken und Spans.


1. Sentry – Der König der Fehler für Frontend und Backend

Sentry ist die beliebteste Plattform zur Fehlerverfolgung und Leistungsüberwachung. Für TypeScript gibt es ein offizielles SDK.



Installation:

npm install @sentry/node @sentry/tracing# oder für React:npm install @sentry/react @sentry/tracing


Beispiel für 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, // Profilerstellung});

// Automatisches Erfassen von Fehlernapp.get("/api/data", async (req, res) => { try { const data = await fetchData(); res.json(data); } catch (err) { Sentry.captureException(err); res.status(500).send("Error"); }});


Besonderheiten für TypeScript:

  • Unterstützung von Source Maps: Laden Sie diese über sentry-cli oder ein webpack-Plugin hoch.
  • Typisierung: Das SDK exportiert Typen für alle Methoden.
  • Profilerstellung: Es wird sichtbar, welche Funktionen die Leistung beeinträchtigen.


2. OpenTelemetry – Universeller Standard für Observability

OpenTelemetry (OTel) ist eine Sammlung von APIs und SDKs zum Sammeln von Traces, Metriken und Logs. Es eignet sich hervorragend für Microservices mit TypeScript.



Installation:

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


Beispiel für die Einrichtung von 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();

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


Vorteile:

  • Anbieterneutralität: Daten können an Jaeger, Zipkin, Datadog, Grafana gesendet werden.
  • Automatische Instrumentierung gängiger Bibliotheken (Express, gRPC, MongoDB).
  • TypeScript-first: Alle SDKs sind in TS mit vollständiger Typisierung geschrieben.


3. Prometheus + Client für Metriken

Zum Sammeln von Metriken (RPS, Latenz, Speicher) verwenden Sie Prometheus mit dem Client prom-client.



Installation:

npm install prom-client


Beispiel mit Express und TypeScript:

import ex                    

Empfehlungen