Überwachung von Node.js-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 JavaScript-Anwendungen (Node.js): Tools und Bibliotheken



Die Überwachung von Node.js-Anwendungen ist eine kritische Aufgabe zur Aufrechterhaltung der Stabilität, Leistung und Verfügbarkeit von Diensten. Ohne kontinuierliche Erfassung von Metriken, Fehlerverfolgung und Code-Profiling riskieren Sie unerwartete Ausfälle, langsame Leistung und Speicherlecks. In diesem Artikel betrachten wir die besten Tools und Bibliotheken für die Node.js-Überwachung, einschließlich beliebter Open-Source-Lösungen.



Warum ist Node.js-Überwachung notwendig?

Node.js ist eine asynchrone Umgebung, die sich hervorragend für I/O-Operationen eignet, aber Besonderheiten aufweist, die Aufmerksamkeit erfordern:

  • Single-Thread-Modell: Blockierender Code kann den gesamten Prozess stoppen.
  • Speicherlecks: aufgrund von Closures und falschem Referenzmanagement.
  • Event Loop: dessen Verzögerungen (Lag) wirken sich direkt auf die Antwortzeit aus.
  • Fehler im asynchronen Code: nicht behandelte Promises können unbemerkt bleiben.


Hauptkategorien von Tools

Für eine umfassende Überwachung Ihrer Node.js-Anwendung benötigen Sie Tools aus drei Kategorien:

  • Metrikenerfassung (Metrics): CPU, Speicher, Anfragen pro Sekunde, Antwortzeit.
  • Profiling: Analyse von Engpässen und Event Loop.
  • Fehlerverfolgung (Error Tracking): automatische Erfassung und Aggregation von Ausnahmen.


1. Prometheus + prom-client (Metrikenerfassung)

Prometheus ist der De-facto-Standard für die Metrikenerfassung in der modernen Infrastruktur. Für Node.js wird die Bibliothek prom-client verwendet. Sie ermöglicht die Erstellung von Histogrammen, Zählern und Gauge-Metriken.



Installation:

npm install prom-client express


Beispiel für den Metrikenexport (server.js):

const express = require('express');const client = require('prom-client');const app = express();

// Histogramm für Antwortzeit erstellenconst httpRequestDurationMicroseconds = new client.Histogram({ name: 'http_request_duration_ms', help: 'Duration of HTTP requests in ms', labelNames: ['method', 'route', 'status'], buckets: [50, 100, 200, 500, 1000, 2000]});

// Middleware zur Zeitmessungapp.use((req, res, next) => { const end = httpRequestDurationMicroseconds.startTimer(); res.on('finish', () => { end({ method: req.method, route: req.route?.path || 'unknown', status: res.statusCode }); }); next();});

// Endpunkt für Prometheusapp.get('/metrics', async (req, res) => { res.set('Content-Type', client.register.contentType); res.end(await client.register.metrics());});

app.get('/', (req, res) => res.send('Hello World!'));app.listen(3000, () => console.log('Server running on port 3000'));


Jetzt können Sie Prometheus so konfigurieren, dass es Metriken von /metrics sammelt und diese in Grafana visualisiert.



2. PM2 (Prozess-Manager und Basisüberwachung)

PM2 ist nicht nur ein Prozess-Manager für Node.js, sondern auch ein integriertes Überwachungssystem. Es ermöglicht die Überwachung des Prozessstatus, den Neustart bei Abstürzen und die Erfassung grundlegender Metriken.



Installation:

npm install pm2 -g


Starten der Anwendung mit Überwachung:

pm2 start server.js --name "my-app"pm2 monit  # Überwachungs-Dashboard öffnen


Export von Metriken nach Prometheus (über pm2-metrics):

npm install pm2-metricspm2 start server.js --name "my-app"pm2-metrics --port 9200  # Öffnet den Endpunkt /metrics


3. Clinic.js (Profiling und Diagnose)

Clinic.js ist eine Reihe von Werkzeugen

Empfehlungen