Integration von Prometheus-Metriken in Java-Anwendungen: Bibliothek simpleclient

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

Prometheus-Metriken in Java: Bibliothek simpleclient

\n

Prometheus 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\n

Was ist simpleclient?

\n

simpleclient 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
\n\n

Installation und Einbindung

\n

Fügen Sie für die Arbeit mit simpleclient die folgenden Abhängigkeiten zu Ihrer pom.xml (Maven) hinzu:

\n
<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>
\n

Für Gradle:

\n
implementation 'io.prometheus:simpleclient:0.16.0'\nimplementation 'io.prometheus:simpleclient_hotspot:0.16.0'\nimplementation 'io.prometheus:simpleclient_servlet:0.16.0'
\n\n

Erstellen und Registrieren von Metriken

\n

Betrachten wir die Erstellung eines einfachen Anfragezählers. Metriken werden im globalen Register CollectorRegistry.defaultRegistry registriert.

\n
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\n

Export von Metriken über HTTP

\n

Damit 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.

\n
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"                    

Empfehlungen