Überwachung von Java-Anwendungen: Tools und Best Practices

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: Von den Grundlagen bis zu Produktionslösungen



Die Überwachung von Java-Anwendungen ist eine kritisch wichtige Praxis zur Gewährleistung von Stabilität, Leistung und Ausfallsicherheit moderner Serversysteme. Ohne eine qualitativ hochwertige Überwachung ist es unmöglich, Speicherlecks, Probleme mit Threads, Leistungseinbußen oder Fehler in der Geschäftslogik rechtzeitig zu erkennen. In diesem Artikel betrachten wir die wichtigsten Tools und Bibliotheken für die Java-Überwachung, von den integrierten JVM-Mitteln bis hin zu modernen Lösungen auf Basis von Micrometer, Prometheus und Grafana.



Warum ist die Überwachung von Java-Anwendungen notwendig?



Java-Anwendungen, insbesondere solche, die 24/7 laufen, erfordern aus mehreren Gründen eine ständige Beobachtung:

  • Leistung: Verfolgung von Antwortzeiten, Durchsatz, CPU- und Speicherauslastung.
  • Zuverlässigkeit: Erkennung von Fehlern, Ausnahmen, Verbindungsabbrüchen zu Datenbanken und externen Diensten.
  • Skalierung: Verständnis, wann Ressourcen hinzugefügt oder Code optimiert werden muss.
  • Sicherheit: Erkennung anomaler Aktivitäten und potenzieller Schwachstellen.


Integrierte Mittel: JMX und JConsole



Java Management Extensions (JMX) ist der Standardmechanismus zur Überwachung und Verwaltung der JVM. Damit können Informationen über Speicher, Threads, Klassenladung, Garbage Collection und den Zustand von MBean-Komponenten abgerufen werden. Verwenden Sie JConsole oder VisualVM, um eine Verbindung zu einer entfernten Anwendung herzustellen.



Beispiel für die Aktivierung von JMX beim Start der Anwendung:



java -Dcom.sun.management.jmxremote \     -Dcom.sun.management.jmxremote.port=9010 \     -Dcom.sun.management.jmxremote.local.only=false \     -Dcom.sun.management.jmxremote.authenticate=false \     -Dcom.sun.management.jmxremote.ssl=false \     -jar myapp.jar


Nachteil: JMX liefert Rohdaten, kann aber keine Metriken aggregieren und Diagramme erstellen. Für eine vollständige Überwachung ist eine Integration mit externen Systemen erforderlich.



Micrometer: Fassade für Metriken



Micrometer ist eine Fassadenbibliothek, die eine einheitliche API zum Sammeln von Metriken in Java-Anwendungen bereitstellt. Sie unterstützt die gängigsten Überwachungssysteme: Prometheus, Datadog, New Relic, Graphite, InfluxDB und andere. Micrometer lässt sich in Spring Boot, Micronaut, Quarkus und andere Frameworks integrieren.



Beispiel für das Hinzufügen von Micrometer zu einem Maven-Projekt:



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


Beispiel für die Erstellung und Registrierung einer benutzerdefinierten Metrik:



import io.micrometer.core.instrument.MeterRegistry;import io.micrometer.core.instrument.Counter;import org.springframework.stereotype.Component;

@Componentpublic class OrderMetrics { private final Counter orderCreatedCounter;

public OrderMetrics(MeterRegistry registry) { this.orderCreatedCounter = Counter.builder("orders.created") .description("Anzahl der erstellten Bestellungen") .tag("region", "ru-central1") .register(registry); }

public void recordOrderCreated() { orderCreatedCounter.increment(); }}


Micrometer unterstützt mehrere Metriktypen:

  • Counter — Zähler, der nur erhöht wird.
  • Gauge — aktueller Wert (z. B. Warteschlangengröße).
  • Timer — Ausführungszeit von Operationen.
  • DistributionSummary — Verteilung von Werten.


Prometheus: Sammlung und Speicherung von Metriken



Prometheus ist ein Open-Source-System zum Sammeln und Speichern von Metriken. Es arbeitet

Empfehlungen