Ü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/tracingBeispiel 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-clioder 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-expressBeispiel 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-clientBeispiel mit Express und TypeScript:
import ex Auch in der Bibliothek
PDF-Erstellung in JavaScript (Node.js): Bibliotheken und Werkzeuge
JSON-Verarbeitung in Rust: Die Bibliotheken serde_json und json
Datenvalidierung in Rust: Bibliotheken und Ansätze
Aufgabenplaner in C# (.NET): Quartz.NET, Hangfire, Coravel