JMX- und MBean-Unterstützung

JMX (Java Management Extension) ist ein Framework für die Verwaltung von Applikationen und Netzwerken in Java. Mit der JMX-Technologie wird eine gegebene Ressource durch ein oder mehrere Java-Objekte (bekannt als Managed Beans oder MBeans) instrumentiert. Diese MBeans sind in einem MBeans-Server registriert. Durch den MBeans-Server können Ressourcen, die über MBeans freigegeben wurden, von Management-Applikationen (JMX Clients) aufgerufen werden, um:

  • Applikationsparameter während der Laufzeit zu lesen und zu betrachten,

  • statistische Daten bereitzustellen (Performance, Ressourcen-Nutzung, Logs, Fehler etc.),

  • im Fall von Fehlern Benachrichtigungen zu erhalten,

  • wichtige Systemkomponenten zu überwachen.

Intershop Commerce Management bietet eine Reihe von vordefinierten MBeans, die es ermöglichen, System-Monitoring-Daten von JMX-Clients wie dem MX4J-HTTP-Adapter für Tomcat-Anwendungsserver abzurufen und zu verarbeiten. Außerdem bietet Intershop Commerce Management eine einfache Möglichkeit, zusätzliche MBeans zu registrieren, die von Kunden-Cartridges bereitgestellt werden.

Anmerkung: Die aktuelle Version von Intershop Commerce Management unterstützt Standard-MBeans, die ihre Verwaltungsoperationen und -attribute über eine statische Java-Schnittstelle definieren. Andere MBeans-Typen werden nicht unterstützt.

MBeans registrieren

Ein Standard-MBean besteht aus einem Java-Interface (mit dem Suffix MBean) und einer Implementierungsklasse. Jede Cartridge registriert die von ihr bereitgestellten MBeans. Registrierte MBeans werden beim Start des Applikationsservers geladen und mit dem MBean-Server des zugrunde liegenden Applikationsserver integriert.

Um MBeans zu registrieren, müssen Sie eine mbeans.properties Datei im classpath-Verzeichnis javasource/resources/<cartridge-name> angeben. Die mbeans.properties-Datei definiert die jeweiligen Zuordnungen von "MBean-Classname" zu "JMX-ObjectName". Das allgemeine Schema für MBean-Einträge lautet:

mbean_class_name=mbean_object_name
Der Name der MBean-Klasse muss vollständig qualifiziert sein. Der JMX-Objektname wird verwendet, um den MBean beim MBean-Server zu registrieren. Er muss der Notation eines java.management.ObjectName (z. B. domain:key1=value1, key2=value2) entsprechen. Das folgende Beispiel zeigt den jeweiligen Konfigurationseintrag für den LoggerAdministrationMBean, der von der core-Cartridge bereitgestellt wird.
com.intershop.beehive.core.capi.mbean.LoggingAdmin=com.intershop.enfinity:
        name=com.intershop.beehive.core.capi.mbean.LoggerAdministrationMBean, 
        type=AdministrationMBean

Sie können MBeans anderer Cartridges ersetzen, indem Sie ihren Namen einer anderen Implementierungsklasse zuordnen. Die Lade-Reihenfolge der Cartridges entscheidet, welcher MBean letztlich registriert wird. Die zuletzt geladene Cartridge gewinnt.

Java VisualVM und JConsole

Die Java-Tools Java VisualVM und JConsole werden hauptsächlich von Intershop Commerce Management-Administratoren verwendet, um die Systemumgebung (Ressourcenverbrauch, Prozesse, Threads usw.) für eine laufende Installation zu überwachen sowie Attribute und Operationen im Zusammenhang mit Intershop Commerce Management-MBeans anzuzeigen. In Intershop Commerce Management sind beide Java-Tools enthalten. Java VisualVM ist jedoch leistungsfähiger und ressourcenschonender, wenn Sie es von Ihrer Installation aus ausführen.
Anmerkung: Um das Java-Monitoring in einer Intershop Commerce Management-Umgebung zu aktivieren, müssen Sie die tomcat.bat-Datei bearbeiten. Öffnen Sie diese Datei mit einem Editor, scrollen Sie nach unten und heben Sie die Auskommentierung der JMX Support-Einstellungen auf. Notieren Sie sich die Portnummer, da Sie sie zum Einrichten der JMX-Verbindung für JConsole und Java VisualVM benötigen. Dadurch wird die JMX-Unterstützung für alle Java-Anwendungen auf einem einzigen Tomcat-Server innerhalb Ihrer Intershop Commerce Management-Installation aktiviert.
Öffnen Sie Java VisualVM im Ordner Intershop Commerce Management unter engine\jdk\bin. Führen Sie einen Doppelklick auf jvisualvm.exe aus. Klicken Sie oben auf die SchaltflächeAdd JMX Connection und geben Sie den <hostname> und <port> Ihres Tomcat-Servers ein. Sie können nur einen einzelnen Applikationsserver anzeigen, jedoch sind alle VMs auf dem Server sichtbar und können in separaten Registerkarten geöffnet werden. Klicken Sie mit der rechten Maustaste auf die Applikation, um die Übersicht zu öffnen.

Hier befinden sich die Registerkarten Overview, Monitor, Threads, Sampler und MBeans. Eine Beschreibung der einzelnen Registerkarten ist nachfolgend aufgeführt:

  • Übersicht

    Hier sehen Sie die Systemeigenschaften sowie die virtuelle Maschine, auf der Ihre Anwendung läuft, und das Java-Stammverzeichnis, in dem sich die Anwendung befindet.

  • Monitor

    Hier sehen Sie Speicher und Leistung, CPU-Auslastung, geladene Klassen und Threads.

  • Threads

    Diese Registerkarte öffnet sich mit einer Ansicht, die alle Threads (All Threads) auf einer Zeitachse enthält. Hier können Sie einen Thread-Dump erstellen, um ihn zu speichern und später zu analysieren. Die Drop-Down-Liste ermöglicht es Ihnen, All, Live, Finished und Selected Threads der Applikation anzuzeigen.

  • Sampler

    Sampler liefert Ihnen ein Profil Ihrer Applikationsperformance. Sie können Diagramme für bestimmte Threads erstellen und die Objekte sehen, die Systemressourcen verbrauchen.

  • MBeans

    In dieser Registerkarte können Sie alle auf der Plattform MBeans-Server registrierten MBeans anzeigen. Als Administrator werden Sie sich in erster Linie mit der Überwachung und Durchführung von Operationen für die folgenden Aufgaben befassen:

    • Unter com.intershop.enfinity können Sie die Attribute ansehen sowie die Applikations-MBeans und die Attribute der Cartridge-MBeans überwachen. Über ClearableCaches können Sie ORM-, Objekt- und PageCache-MBeans anzeigen und Operationen daran durchführen.
    • Unter oracle.ucp.admin und oracle.ucp.admin.UniversalConnectionPoolMBean können Sie Attribute anzeigen und Operationen an den Oracle-Datenbankpoolverbindungen von Intershop Commerce Management durchführen.

Wenn Sie einen MBean auswählen und die Attribute anzeigen, bei denen der Wert fett gedruckt ist, können Sie einen Doppelklick auf den Wert ausführen und er wird als Grafik oder Diagramm angezeigt. Einige Cache-MBeans ermöglichen es Ihnen beispielsweise, die Anzahl der Cache-Treffer für eine bestimmte Ressource anzuzeigen.

Öffnen Sie die JConsole im Intershop Commerce Management-Verzeichnis unter engine\jdk\bin. Führen Sie einen Doppelklick auf jconsole.exe aus. JConsole überwacht automatisch die VM auf dem Tomcat-Server, auf dem die Applikation geöffnet ist. Sie können sich jederzeit mit einem anderen Host verbinden, indem Sie Connection | New Connection wählen und die erforderlichen Informationen eingeben. Die folgende Tabelle listet die Registerkarten und die Monitoring-Optionen auf:

Tabelle 1. JConsole-Registerkarten
Registerkarte Monitoring-Schwerpunkt
Overview Hier sehen Sie die Heap-Speicherauslastung, die geladenen Threads, die geladenen Klassen und die CPU-Auslastungsgrafiken für den Tomcat-Server, auf dem Ihre Applikation läuft. Sie können einen Zeitbereich (12 Stunden, 1 Tag, 7 Tage etc.) aus der Dropdown-Liste (oder durch Rechtsklick auf eines der Objekte) im Anwendungsfenster auswählen.
Memory Die Memory-Registerkarte ermöglicht es Ihnen, Diagramme anzuzeigen (ändern Sie die anzuzeigenden Informationen im Dropdown-Menü oben), die den Speicherverbrauch über die Zeit und bestimmte Speicherpools anzeigen. Sie können die Details auch im Fenster "Details" einsehen.
Threads Hier sehen Sie aktuell laufende Daemon-Threads, die aktuelle und höchste Anzahl an Daemon-Threads sowie die Gesamtzahl der Applikationsthreads. Wählen Sie den Thread, den Sie anzeigen möchten, im Fenster "Threads" unten rechts im Applikationsfenster aus. Die Garbage Collection ist oben rechts im Applikationsfenster verfügbar.
Anmerkung: Die Garbage Collection (GC) ist ein Prozess zur Freigabe von Speicherplatz, der von Objekten genutzt wird, die nicht mehr referenziert werden. Sie kann erhebliche Auswirkungen auf die Leistung haben. Weitere Informationen finden Sie in der Oracle JConsole-Dokumentation.
Classes Zeigt die Anzahl der "Loaded Classes" in Diagrammform für die ausgewählte "Time Range" an.
VM Summary In dieser Registerkarte werden die Betriebszeit (Gesamtzeit seit dem Start der Java-VM), die Prozess-CPU (Gesamtzeit der CPU) und die Zeit für die JIT-Kompilierung angezeigt.
MBeans Zeigt alle registrierten MBeans an. Wenn Sie einen MBean im Baumdiagramm auswählen, werden auf der rechten Seite seine Attribute, Operationen, Benachrichtigungen und andere Informationen angezeigt. Klicken Sie doppelt auf einen Attributwert, um ein Diagramm des Attributwerts in Abhängigkeit von der Zeit anzuzeigen.

Beispiel-MBeans in Intershop Commerce Management

Intershop Commerce Management stellt bereits eine Reihe vordefinierter MBeans zur Verfügung, mit denen wichtige Bereiche des Systems mit JMX-Managementanwendungen überwacht werden können. Mit der aktuellen Version sind MBeans in den Cartridges core und monitor enthalten. Die von diesen Cartridges bereitgestellten MBeans sind im Paket com.intershop.beehive.<cartridge_name>.capi.mbean enthalten. In den JavaDocs, die vom Intershop Commerce Management für diese Cartridges installiert wurden (unter <IS.INSTANCE.SHARE>/system/cartridges/<cartridge_name>/release/docs/api), finden Sie Details zu den Attributen und Operationen, die von den MBeans unterstützt werden. Eine Zusammenfassung ist in der folgenden Tabelle enthalten.

Tabelle 2. Beispiel-MBeans in Intershop Commerce Management
Cartridge MBean-Schnittstelle Beschreibung
core DatabaseDriverInformation MBean Treiber (oracle.jdbc.driver.OracleDriver, com.ibm.db2j.jdbc.EmbeddedDriver) Poolgröße, Verbindungszähler
core LoggingAdminMBean Aktivierte Log-Bereiche. Aktionen zum Entfernen oder Hinzufügen von Log-Bereichen.
core OracleDataSourceInformation MBean General data source informationOracle connection cache information
core ORMCacheInformationMBean Allgemeine Informationen zum OR-Mapping-Cache für persistente Objekte.
core ORMCacheInformationObject MBean Informationen zu einzelnen persistenten Objekten (z. B. Anzahl der Instanzen im Cache, Standard-Referenzart etc.)
core JobsMBean Wird verwendet, um Jobs zu bearbeiten.
core PipelinesMBean Wird zum Nachladen von Pipelines über JMX verwendet.
monitor ProcessInformationMBean Prozessinformationen (allgemeine Prozessinformationen, Webfront-Service-Informationen, wichtige Umgebungsvariablen), Ressourcenauslastung (CPU-Auslastung, Prozess-Gesamtgröße, In-Memory-Größe, verwendete System-Threads), Java-VM-Ressourcenauslastung (Gesamt-Heap-Größe, verwendete Heap-Größe), Threads (Thread-Gruppe, Name, Thread-Name, Priorität, Daemon, lebendig), Systemeigenschaften
monitor SessionRequestInformation MBean Sitzungspersistenz aktiviert, Anzahl der aktiven Sitzungen, durchschnittliche Anzahl der Sitzungen pro Tag, Gesamtzahl der Requests etc.
Anmerkung: Für detaillierte Informationen zu den Ressourcen, die von den MBeans instrumentiert werden, müssen Sie die MBeans mit einer JMX-Managementapplikation prüfen, z. B. MX4J-HTTP-Adapter.