Ü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
Auch in der Bibliothek
Objektserialisierung in Node.js: JSON, Buffer und Protobuf
JSON-Verarbeitung in Go (Golang): encoding/json und Alternativen
Generierung von PDF-Berichten in Java: Überblick über Bibliotheken und Werkzeuge
CocoaPods für Swift: Komplettguide mit Praxisbeispielen