Prometheus-Metriken in Node.js: Bibliothek prom-client
\n\nPrometheus ist ein leistungsstarkes Open-Source-System für Monitoring und Alarmierung, das Metriken aus Ihren Anwendungen und Ihrer Infrastruktur sammelt. Für die Integration von Prometheus mit Node.js-Anwendungen gibt es die offizielle und am weitesten verbreitete Bibliothek prom-client. Sie bietet fertige Werkzeuge zum Erstellen, Registrieren und Exportieren von Metriken in einem Format, das Prometheus versteht.
\n\nIn diesem Artikel werden wir im Detail besprechen, wie man prom-client installiert und verwendet, welche Metriktypen verfügbar sind und wie man einen Endpunkt für die Datenerfassung einrichtet.
\n\nInstallation von prom-client
\n\nDie Installation der Bibliothek erfolgt mit dem Standard-Paketmanager npm:
\n\nnpm install prom-client\n\nNach der Installation können Sie die Bibliothek in Ihr Projekt importieren:
\n\nconst client = require('prom-client');\n\nWichtige Metriktypen von Prometheus
\n\nPrometheus unterstützt vier Hauptmetriktypen, von denen jeder eine bestimmte Aufgabe erfüllt:
\n\n- \n
- Counter — ein Zähler, der nur erhöht werden kann (z. B. Anzahl der Anfragen, Fehler). \n
- Gauge — ein Wert, der sowohl erhöht als auch verringert werden kann (z. B. Anzahl aktiver Benutzer, Speichernutzung). \n
- Histogram — ein Histogramm zur Messung der Werteverteilung (z. B. Antwortzeit von Anfragen). \n
- Summary — ähnlich wie Histogramm, berechnet jedoch Quantile auf der Anwendungsseite. \n
Beispiele zur Verwendung von prom-client
\n\nBetrachten wir die Erstellung jedes Metriktyps am Beispiel einer einfachen Express-Anwendung.
\n\n1. Counter (Zähler)
\n\nDer Counter eignet sich ideal zum Zählen von Ereignissen wie HTTP-Anfragen oder Fehlern.
\n\nconst httpRequestsCounter = new client.Counter({\n name: 'http_requests_total',\n help: 'Total number of HTTP requests',\n labelNames: ['method', 'status']\n});\n\n// Verwendung:\nhttpRequestsCounter.inc({ method: 'GET', status: 200 });\nhttpRequestsCounter.inc({ method: 'POST', status: 500 });\n\n2. Gauge (Messer)
\n\nDer Gauge ermöglicht die Verfolgung eines aktuellen Werts, der sich in beide Richtungen ändern kann.
\n\nconst activeUsersGauge = new client.Gauge({\n name: 'active_users',\n help: 'Number of active users'\n});\n\n// Um 1 erhöhen:\nactiveUsersGauge.inc();\n// Um 1 verringern:\nactiveUsersGauge.dec();\n// Bestimmten Wert setzen:\nactiveUsersGauge.set(42);\n\n3. Histogram (Histogramm)
\n\nDas Histogramm hilft bei der Analyse der Verteilung von Ausführungszeiten von Operationen.
\n\nconst requestDurationHistogram = new client.Histogram({\n name: 'http_request_duration_seconds',\n help: 'Duration of HTTP requests in seconds',\n labelNames: ['method', 'route'],\n buckets: [0.1, 0.5, 1, 2, 5] // Grenzen der Buckets (in Sekunden)\n});\n\n// Zeitmessung:\nconst end = requestDurationHistogram.startTimer();\n// ... Ausführung der Anfrage ...\nend({ method: 'GET', route: '/api/users' });\n\n4. Summary (Zusammenfassung)
\n\nDie Summary ähnelt dem Histogramm, liefert jedoch genaue Quantile (z. B. Median, 95. Perzentil).
\n\nconst requestDurationSummary = new client.Summary({\n name: 'http_request_duration_summary_seconds',\n help: 'Summary of HTTP request duration in seconds',\n labelNames: ['method', 'route'],\n percentiles: [0.5, 0.9, 0.99] // Quantile zur Berechnung\n});\n\n// Verwendung analog zum Histogramm:\nconst endSummary = requestDurationSummary.startTimer();\n// ... Ausführung der Anfrage ...\nendSummary({ method: 'GET', route: '/api/data' });\n\nEinrichtung des Endpunkts für Prometheus
\n\nDamit Prometheus Metriken sammeln kann, muss ein separater HTTP-Endpunkt (normalerweise /metrics) erstellt werden, der die Da
Auch in der Bibliothek
Generierung von PDF-Berichten in Java: Überblick über Bibliotheken und Werkzeuge
Arbeiten mit Bildern in TypeScript: Bibliotheken, Werkzeuge und Codebeispiele
SMS-Versand mit Java: Überblick über API-Bibliotheken (Twilio, Nexmo, SMS-Gateways)