Node.js-Überwachung: Tools und Bibliotheken für Observability

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): Bibliotheken und Tools



In der modernen Webentwicklung ist die Überwachung von Node.js-Anwendungen keine Option, sondern eine Notwendigkeit. Ohne sie sind Stabilität, Leistung und schnelle Fehlererkennung nicht gewährleistbar. In diesem Artikel werden wir die wichtigsten Tools und Bibliotheken für den Aufbau eines Observability-Systems (Beobachtbarkeit) im Node.js-Ökosystem im Detail besprechen.



Warum ist Node.js-Überwachung notwendig?

Node.js ist eine Single-Thread-Umgebung mit nicht-blockierendem I/O. Das bedeutet, dass ein einziger Fehler oder ein Speicherleck die gesamte Anwendung lahmlegen kann. Die Überwachung hilft:

  • Metriken zu verfolgen (CPU, Speicher, Anzahl der Anfragen, Antwortzeit).
  • Anomalien zu erkennen (plötzlicher Anstieg von Fehlern, Leistungseinbruch).
  • Profiling durchzuführen (Engpässe im Code, Speicherlecks).
  • Alarme einzurichten (Benachrichtigungen in Slack, Telegram, E-Mail).


Wichtige Bibliotheken für die Node.js-Überwachung



1. Prometheus Client (prom-client)

Dies ist der Standard-Metriken-Exporter für Node.js, kompatibel mit dem beliebten Metrikensammelsystem Prometheus. Die Bibliothek ermöglicht die Erstellung benutzerdefinierter Zähler, Histogramme und Summenmetriken.

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

// Erstellen eines Anfragenzählersconst httpRequestsTotal = new client.Counter({ name: 'http_requests_total', help: 'Total number of HTTP requests', labelNames: ['method', 'route', 'status']});

// Middleware zum Sammeln von Metrikenapp.use((req, res, next) => { const start = Date.now(); res.on('finish', () => { httpRequestsTotal.inc({ 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.listen(3000);


2. OpenTelemetry für Node.js

OpenTelemetry ist der moderne Standard für die Erfassung von Telemetriedaten (Tracing, Metriken, Logs). Für Node.js ist das Paket @opentelemetry/sdk-node verfügbar. Es instrumentiert automatisch gängige Bibliotheken (Express, HTTP, gRPC) und sammelt verteilte Traces.

const { NodeSDK } = require('@opentelemetry/sdk-node');const { ConsoleSpanExporter } = require('@opentelemetry/sdk-trace-node');const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node');

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

sdk.start();

// Beispiel für automatisches Express-Tracingconst express = require('express');const app = express();app.get('/', (req, res) => res.send('Hello'));app.listen(3000);


3. PM2 – Prozessmanager mit Überwachung

PM2 verwaltet nicht nur den Start von Node.js-Prozessen, sondern bietet auch eine integrierte Überwachung. Der Befehl pm2 monit zeigt CPU, Speicher und Anzahl der Neustarts in Echtzeit an. Für erweiterte Überwachung verwenden Sie pm2-plus oder pm2-metrics.

// ecosystem.config.jsmodule.exports = {  apps: [{    name: 'my-app',    script: 'app.js',    instances: 2,    exec_mode: 'cluster',    env: {      NODE_ENV: 'production'    }  }]};


4. Clinic.js – Profiling und Diagnose

Clinic.js ist eine Sammlung von Tools für die tiefgehende Leistungsanalyse von Node.js. Es umfasst Doctor (Schnelldiagnose), Bubbleprof (asynchrone Verzögerungen) und Flame (Flamegraph für CPU).

// Installation: npm install -g clinic// Start mit Profiling                    

Empfehlungen