Überwachung von Java-Anwendungen: Tools und Bibliotheken zur Metrikenerfassung

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: Überblick über Tools und Bibliotheken



In der modernen Softwareentwicklung ist die Überwachung von Java-Anwendungen zur Pflicht geworden. Ohne sie ist es unmöglich zu verstehen, wie sich das System unter Last verhält, wo Engpässe auftreten und wie schnell auf Ausfälle reagiert werden kann. In diesem Artikel behandeln wir die wichtigsten Bibliotheken und Tools zur Erfassung von Metriken, zur Ablaufverfolgung und zur Visualisierung des Zustands von Java-Anwendungen: Micrometer, Prometheus Java Client, JMX und Java Flight Recorder.



1. Micrometer — Fassade für Metriken



Micrometer ist der De-facto-Standard für die Metrikenerfassung im Spring-Boot-Ökosystem und darüber hinaus. Es bietet eine einheitliche API, die mit verschiedenen Backends verwendet werden kann: Prometheus, Datadog, Graphite, InfluxDB und anderen.



Hauptfunktionen:

  • Unterstützung von Zählern (Counter), Timern (Timer), Histogrammen (Histogram) und Messfühlern (Gauge).
  • Automatische Integration mit Spring Actuator.
  • Flexible Konfiguration von Tags zur Filterung von Metriken.


Beispiel für die Verwendung von Micrometer mit Prometheus:

// Fügen Sie die Abhängigkeit in pom.xml hinzu:// <dependency>//     <groupId>io.micrometer</groupId>//     <artifactId>micrometer-registry-prometheus</artifactId>// </dependency>

import io.micrometer.core.instrument.MeterRegistry;import io.micrometer.core.instrument.Counter;import io.micrometer.prometheus.PrometheusMeterRegistry;import io.micrometer.prometheus.PrometheusConfig;

public class MetricsExample { private final Counter requestCounter;

public MetricsExample() { PrometheusMeterRegistry registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT); requestCounter = Counter.builder("http.requests.total") .description("Total HTTP requests") .tag("method", "GET") .register(registry); }

public void handleRequest() { requestCounter.increment(); }

public String scrapeMetrics() { return registry.scrape(); // gibt Metriken im Prometheus-Format zurück }}


Micrometer ermöglicht einen einfachen Wechsel zwischen Überwachungssystemen ohne Codeänderungen.



2. Prometheus Java Client — direkte Metrikenerfassung



Prometheus Java Client ist die offizielle Bibliothek zum Exportieren von Metriken im Prometheus-Format. Sie ist weniger abstrakt als Micrometer, bietet aber die volle Kontrolle über die Datenerfassung.



Hauptkomponenten:

  • CollectorRegistry — Registry aller Metriken.
  • Counter, Gauge, Histogram, Summary — Metriktypen.
  • Integrierter HTTP-Server für den Endpunkt /metrics.


Beispiel mit einem einfachen HTTP-Server:

import io.prometheus.client.Counter;import io.prometheus.client.exporter.HTTPServer;import io.prometheus.client.hotspot.DefaultExports;

public class PrometheusExample { static final Counter requests = Counter.build() .name("requests_total") .help("Total requests.") .register();

public static void main(String[] args) throws Exception { DefaultExports.initialize(); // fügt JVM-Metriken hinzu (Speicher, GC, Threads) HTTPServer server = new HTTPServer(8080); // Endpunkt /metrics

while (true) { requests.inc(); Thread.sleep(1000); } }}


Die Bibliothek ist ideal für Fälle, in denen die Überwachung schnell und ohne unnötige Abhängigkeiten eingerichtet werden muss.



3. JMX (Java Management Extensions)



JMX ist ein integrierter Mechanismus zur Verwaltung und Überwachung der JVM. Er ermöglicht den Zugriff auf Informationen über Speicher, Threads, Klassen sowie die Verwaltung von

Empfehlungen