Überwachung von TypeScript-Anwendungen: Von Fehlern bis zur Leistung
Die Überwachung von TypeScript-Anwendungen ist eine Kombination aus Praktiken und Tools, die die Beobachtbarkeit (Observability) des Systems in Echtzeit gewährleisten. Im Gegensatz zur einfachen Protokollierung umfasst professionelles Monitoring die Erfassung von Metriken, Request-Tracing, Fehleraggregation und automatische Benachrichtigungen. Für TypeScript, das sowohl auf dem Server (Node.js) als auch im Browser läuft, ist ein einheitliches Beobachtungssystem von entscheidender Bedeutung. In diesem Artikel werden wir die wichtigsten Tools und Beispiele für deren Integration behandeln.
Warum TypeScript-Anwendungen überwachen?
TypeScript wird in JavaScript kompiliert, was besondere Anforderungen an das Debugging stellt. Der typisierte Quellcode wird in dynamisches JS umgewandelt, und Typfehler können erst zur Laufzeit auftreten. Ohne Überwachung riskieren Sie:
- Das Übersehen von
TypeErroroderReferenceErrorin der Produktion - Das Nichterkennen von Leistungseinbußen (langsame Anfragen, Speicherlecks)
- Den Verlust des Fehlerkontexts (Stacktrace, Benutzerdaten, Umgebung)
Hauptkomponenten eines Überwachungssystems
Ein moderner Überwachungsstack basiert auf drei Säulen: Logs, Metriken (Metrics) und Traces. Für TypeScript-Anwendungen betrachten wir spezifische Bibliotheken:
1. Sentry — der König der Fehlerverfolgung
Sentry ist eine SaaS-Plattform zur Überwachung von Fehlern und Leistung. Für TypeScript sind die offiziellen Pakete @sentry/node und @sentry/react verfügbar. Es fängt automatisch Ausnahmen ab, sammelt Stacktraces und Kontextinformationen.
Installation:
npm install @sentry/node @sentry/tracingBasisinitialisierung in 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, // Häufigkeit der Trace-Erfassung (0-1) profilesSampleRate: 1.0, // Leistungsprofilerstellung});
// Manueller Aufruf bei einem Fehlerapp.get('/api/users', async (req, res) => { try { const users = await getUsers(); res.json(users); } catch (error) { Sentry.captureException(error); res.status(500).send('Internal Server Error'); }});Vorteile:
- Automatische Verknüpfung von Fehlern mit Releases
- Unterstützung von Source Maps für TypeScript
- Leistung: Überwachung langsamer Transaktionen
2. OpenTelemetry — Observability-Standard
OpenTelemetry (OTel) ist ein offener Standard zur Erfassung von Telemetriedaten. Für TypeScript wird das Paket @opentelemetry/sdk-node verwendet. OTel ermöglicht die Erfassung von Traces und Metriken, die dann an jedes System (Jaeger, Prometheus, Datadog) gesendet werden können.
Beispiel für die Integration mit Express:
import { NodeSDK } from '@opentelemetry/sdk-node';import { getNodeAutoInstrumentations } from '@opentelemetry/instrumentation-node';
const sdk = new NodeSDK({ instrumentations: [getNodeAutoInstrumentations()], // Exporter kann auf OTLP oder Konsole konfiguriert werden});
sdk.start();
// Die gesamte Express-Logik wird automatisch getracedimport express from 'express';const app = express();app.get('/data', (req, res) => { res.json({ status: 'ok' });});OpenTelemetry instrumentiert automatisch gängige Bibliotheken: Express, MongoDB, Redis, gRPC. Dies bietet ein vollständiges Bild des Request-Durchlaufs durch die Dienste.
3. Prometheus + Grafana — Metriken und Visualisierung
Zur Erfassung von Metriken (RPS, Latenz, Fehler) in TypeScript wird die Bibl
Auch in der Bibliothek
Rate Limiting in TypeScript: Bibliotheken, Tools und Implementierungsbeispiele
Testen in PHP: Überblick über Frameworks und Tools (PHPUnit, Pest, Codeception)
Flysystem PHP: Komplettes Handbuch mit Praxisbeispielen
Autorisierung und Authentifizierung in C# (.NET): Vollständiger Leitfaden
multierr Go: vollständige Anleitung mit Beispielen