Überwachung von Java-Anwendungen: Die Bibliothek Micrometer und Integration mit Prometheus

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 Java-Anwendungen: Die Bibliothek Micrometer



Moderne Java-Anwendungen erfordern eine ständige Überwachung der Leistung, des Speicherverbrauchs, der Antwortzeiten und anderer kritischer Parameter. Micrometer ist der De-facto-Standard für die Erfassung von Metriken im Java-Ökosystem. Es bietet eine universelle API und unterstützt den Export von Daten in gängige Überwachungssysteme wie Prometheus, Graphite und Datadog.



Was ist Micrometer und warum wird es benötigt?



Micrometer ist eine Fassade zur Erfassung von Metriken, ähnlich wie SLF4J eine Fassade für die Protokollierung ist. Es abstrahiert den Anwendungscode vom konkreten Überwachungssystem und ermöglicht den Wechsel zwischen Backends, ohne die Geschäftslogik zu ändern.



Die wichtigsten Funktionen der Bibliothek:

  • Zähler (Counter) — zum Zählen von Ereignissen (z. B. Anzahl der Anfragen).
  • Timer (Timer) — zum Messen der Ausführungszeit von Operationen.
  • Messfühler (Gauge) — zum Verfolgen aktueller Werte (z. B. Größe des Thread-Pools).
  • Verteilungen (DistributionSummary) — zur Analyse der Werteverteilung (z. B. Größe des Anforderungstextes).
  • Tags (Tags) — zum Hinzufügen von Dimensionen zu Metriken (z. B. endpoint, status).


Installation und Konfiguration



Um Micrometer in einem Maven-Projekt zu verwenden, fügen Sie die folgende Abhängigkeit in pom.xml hinzu:



<dependency>    <groupId>io.micrometer</groupId>    <artifactId>micrometer-core</artifactId>    <version>1.12.0</version></dependency>


Wenn Sie Spring Boot verwenden, reicht es aus, den Starter micrometer-registry-prometheus einzubinden:



<dependency>    <groupId>io.micrometer</groupId>    <artifactId>micrometer-registry-prometheus</artifactId>    <version>1.12.0</version></dependency>


Danach konfiguriert Spring Boot automatisch den MeterRegistry und öffnet den Endpunkt /actuator/prometheus zur Erfassung von Metriken.



Anwendungsbeispiele



1. Erstellen eines Anforderungszählers



Ein einfaches Beispiel zum Zählen der Anzahl von Methodenaufrufen:



import io.micrometer.core.instrument.Counter;import io.micrometer.core.instrument.MeterRegistry;

public class RequestCounter { private final Counter requestCounter;

public RequestCounter(MeterRegistry registry) { this.requestCounter = Counter.builder("api.requests") .tag("endpoint", "/users") .description("Total number of requests to /users") .register(registry); }

public void handleRequest() { requestCounter.increment(); // Geschäftslogik }}


2. Messen der Ausführungszeit mit einem Timer



Verwenden Sie Timer.Sample, um die Ausführungszeit eines Codeblocks zu messen:



import io.micrometer.core.instrument.Timer;import io.micrometer.core.instrument.MeterRegistry;

public class RequestTimer { private final Timer requestTimer;

public RequestTimer(MeterRegistry registry) { this.requestTimer = Timer.builder("api.response.time") .tag("endpoint", "/data") .publishPercentiles(0.95, 0.99) .register(registry); }

public String processRequest() { Timer.Sample sample = Timer.start(registry); try { // Verzögerung simulieren Thread.sleep(100); return "OK"; } catch (InterruptedException e) { Thread.currentThread().interrupt(); return "ERROR"; } finally

Empfehlungen