19.2Systemzustände überwachen
In diesem Abschnitt geht es um die Überwachung (auf Neudeutsch Monitoring) eines Systems. Die Steuereinheiten überwachen im laufenden Betrieb das System bzw. den Ressourcenverbrauch. Notwendig ist viel: Statusmeldungen, Diagnose bzw. Debugging, Performance-Analyse zum Tuning und Weiteres. Außerdem sollen zur Laufzeit Konfigurationen am System vorgenommen werden, um zum Beispiel Logging ein- oder auszuschalten.
Übertragen wir das Monitoring auf Java, stellt sich das erste Problem, nämlich dass es auf den unterschiedlichsten Ebenen etwas zu überwachen gibt: Auf der Hardwareseite finden wir die CPU-Auslastung oder den Ein-/Ausgabe-Durchsatz, auf der Seite des Betriebssystems die Zuteilung bei Mehrprozessorsystemen, bei der JVM den Garbage-Collector, bei einem Servlet-Container die Frage nach den Verbindungen pro Minute und bei unserer Anwendung die Angabe, wie viele Kunden die Bestellung abgebrochen haben. All diese zu überwachenden Elemente unter einen Hut zu bekommen, ist fast unmöglich, und so sind in den letzten Jahren Standards für bestimmte Teile entstanden; der bekannteste ist das Simple Network Management Protocol (SNMP).
Für das Management von Java-Applikationen wurde die Java Management Extensions (JMX) entwickelt. JMX wird kontinuierlich im Java-Community-Prozess weiterentwickelt und ist eine bewährte Technologie, die seit einigen Jahren verfügbar ist. JMX war erst als optionales Paket für Java SE/Java EE erhältlich, zog dann aber fest in die Java SE ein. Software aus dem Java EE-Umfeld nutzt JMX, um zum Beispiel Performance-Statistiken zu liefern oder Konfigurationen vorzunehmen.