Integration von Prometheus-Metriken in Java: Die 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: Vollständige Anleitung zur Bibliothek simpleclient



Prometheus ist ein leistungsstarkes Open-Source-System für Monitoring und Alarmierung, das sich zum De-facto-Standard in der Cloud-Native-Welt entwickelt hat. Für Java-Entwickler gibt es mehrere Bibliotheken zur Integration, aber die offizielle Bibliothek simpleclient (auch bekannt als prometheus/client_java) ist die beliebteste und am besten unterstützte. In diesem Artikel werden wir im Detail besprechen, wie Sie Prometheus-Metriken mit dieser Bibliothek zu Ihrer Java-Anwendung hinzufügen.



Was ist simpleclient?



simpleclient ist der offizielle Java-Client für Prometheus, der eine einfache und effiziente Möglichkeit zur Erstellung und zum Export von Metriken bietet. Die Bibliothek unterstützt die vier grundlegenden Prometheus-Metriktypen:

  • Counter (Zähler) — ein monoton steigender Wert (z. B. Anzahl der Anfragen).
  • Gauge (Messwert) — ein Wert, der sich beliebig ändern kann (z. B. aktuelle CPU-Auslastung).
  • Histogram (Histogramm) — Verteilung von Werten über vordefinierte "Buckets" (z. B. Antwortzeit).
  • Summary (Zusammenfassung) — Quantile der beobachteten Werte (z. B. p50, p99 der Antwortzeit).


Installation und Konfiguration



Fügen Sie zunächst die folgenden Abhängigkeiten zu Ihrer pom.xml (Maven) oder build.gradle (Gradle) hinzu.



Maven

<dependency>    <groupId>io.prometheus</groupId>    <artifactId>simpleclient</artifactId>    <version>0.16.0</version></dependency>

<!-- Für den Export von Metriken über HTTP --><dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient_httpserver</artifactId> <version>0.16.0</version></dependency>


Gradle

implementation 'io.prometheus:simpleclient:0.16.0'implementation 'io.prometheus:simpleclient_httpserver:0.16.0'


Erstellung und Verwendung von Metriken



Betrachten wir ein Beispiel zur Erstellung aller grundlegenden Metriktypen in einer Klasse.



import io.prometheus.client.Counter;import io.prometheus.client.Gauge;import io.prometheus.client.Histogram;import io.prometheus.client.Summary;

public class MetricsExample {

// 1. Counter: Anzahl der verarbeiteten Anfragen static final Counter requestsCounter = Counter.build() .name("app_requests_total") .help("Total number of processed requests.") .labelNames("endpoint", "method") .register();

// 2. Gauge: Aktuelle Anzahl aktiver Benutzer static final Gauge activeUsersGauge = Gauge.build() .name("app_active_users") .help("Current number of active users.") .register();

// 3. Histogram: Ausführungszeit der Anfrage in Millisekunden static final Histogram requestDurationHistogram = Histogram.build() .name("app_request_duration_ms") .help("Request duration in milliseconds.") .buckets(10, 50, 100, 200, 500, 1000, 5000) .register();

// 4. Summary: Quantile der Ausführungszeit static final Summary requestDurationSummary = Summary.build() .name("app_request_duration_summary_ms") .help("Request duration summary in milliseconds.") .quantile(0.5, 0.05) // p50 mit einer Toleranz von 5% .quantile(0.99, 0.01) // p99 mit einer Toleranz von 1% .register();

public static void main(String[] args) throws Exception { // Simulation der Anfrageverarbeitung for (int i = 0; i < 100; i++) { processRequest("/api/users", "GET"); }

// Starten des HTTP-Servers für den Metrikexport new HTTPServer(9090); System.out.println("Metrics server started

Empfehlungen