Prometheus-Metriken in Java: Bibliothek simpleclient
\nPrometheus ist ein leistungsstarkes Open-Source-System für Monitoring und Alarmierung, das Metriken aus verschiedenen Quellen sammelt. Für Java-Anwendungen gibt es mehrere Bibliotheken zur Integration mit Prometheus. Die wichtigste und beliebteste ist simpleclient vom Prometheus-Projekt selbst. Sie bietet eine minimalistische, threadsichere und hochperformante Möglichkeit, Metriken zu erstellen, zu registrieren und zu exportieren.
\n\nWas ist simpleclient?
\nsimpleclient ist die offizielle Java-Bibliothek von Prometheus, die es Entwicklern ermöglicht, Metriken mit minimalem Overhead in Anwendungen einzufügen. Sie unterstützt vier grundlegende Metriktypen:
\n- \n
- Counter — ein Zähler, der nur erhöht werden kann (z. B. Anzahl der Anfragen). \n
- Gauge — ein Wert, der sowohl erhöht als auch verringert werden kann (z. B. Anzahl aktiver Verbindungen, Temperatur). \n
- Histogram — ein Histogramm, das die Verteilung von Werten misst (z. B. Ausführungszeit von Anfragen). \n
- Summary — eine Zusammenfassung, ähnlich einem Histogramm, die jedoch Quantile clientseitig berechnet. \n
Installation und Einbindung
\nFügen Sie für die Arbeit mit simpleclient die folgenden Abhängigkeiten zu Ihrer pom.xml (Maven) hinzu:
<dependency>\n <groupId>io.prometheus</groupId>\n <artifactId>simpleclient</artifactId>\n <version>0.16.0</version>\n</dependency>\n<dependency>\n <groupId>io.prometheus</groupId>\n <artifactId>simpleclient_hotspot</artifactId>\n <version>0.16.0</version>\n</dependency>\n<dependency>\n <groupId>io.prometheus</groupId>\n <artifactId>simpleclient_servlet</artifactId>\n <version>0.16.0</version>\n</dependency>\nFür Gradle:
\nimplementation 'io.prometheus:simpleclient:0.16.0'\nimplementation 'io.prometheus:simpleclient_hotspot:0.16.0'\nimplementation 'io.prometheus:simpleclient_servlet:0.16.0'\n\nErstellen und Registrieren von Metriken
\nBetrachten wir die Erstellung eines einfachen Anfragezählers. Metriken werden im globalen Register CollectorRegistry.defaultRegistry registriert.
import io.prometheus.client.Counter;\nimport io.prometheus.client.Gauge;\n\npublic class MetricsExample {\n // Erstellen eines Zählers mit dem Namen "http_requests_total" und den Labels "method" und "endpoint"\n static final Counter requests = Counter.build()\n .name("http_requests_total")\n .help("Total number of HTTP requests.")\n .labelNames("method", "endpoint")\n .register();\n\n // Erstellen eines Gauges für die Anzahl aktiver Sitzungen\n static final Gauge activeSessions = Gauge.build()\n .name("active_sessions")\n .help("Current number of active sessions.")\n .register();\n\n public static void processRequest(String method, String endpoint) {\n // Zähler erhöhen\n requests.labels(method, endpoint).inc();\n // Wert des Gauges setzen (z. B. Warteschlangengröße)\n activeSessions.set(42);\n }\n}\n\nExport von Metriken über HTTP
\nDamit Prometheus die Metriken sammeln kann, muss ein Endpunkt /metrics bereitgestellt werden. Am einfachsten geht dies mit dem integrierten Servlet. Wenn Sie Spring Boot verwenden, fügen Sie die Abhängigkeit simpleclient_spring_boot hinzu.
import io.prometheus.client.exporter.MetricsServlet;\nimport io.prometheus.client.hotspot.DefaultExports;\nimport javax.servlet.annotation.WebServlet;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.IOException;\n\n@WebServlet("/metrics" Auch in der Bibliothek
Reaktive Programmierung in C# (.NET) — Observable, Rx.NET und LINQ
Maschinelles Lernen mit Kotlin: Überblick über Bibliotheken für Data Science und ML
Arbeit mit Apache Kafka in Swift (iOS/macOS): Bibliotheken und Beispiele
Serilog für C# (.NET): Vollständige Anleitung mit Beispielen
Arbeiten mit Excel in Rust: Bibliotheken zum Lesen und Schreiben