Best of Oracle Weblogic Diagnostic Framework Dr. Frank Munz munz & more München Schlüsselworte: Weblogic Diagnostic Framework, Oracle Weblogic Server 11g, WLS11g, Fusion Middleware, Monitoring, Instrumentierung. Einleitung Das Oracle Weblogic Diagnostic Framework (WLDF) findet häufig zu wenig Beachtung, da zur Anwendung des WLDF das Verstehen der Zusammenhänge zwischen den Weblogic Server internen MBean-Hierarchien, JMX und ggf. weiteren Protokollen wie SNMP oder JMS notwendig sind. Dieser Vortrag erläutert die Möglichkeiten die das WLDF für das Monitoring sowie für die Instrumentierung von Anwendungen und Weblogic Server bietet. Wir betrachten gängige Fragestellungen aus der Praxis wie die Überwachung eines Connection Pools oder die maximalen Ausführungszeit eines Web Service Aufrufes. Die wichtigsten Komponenten des WLDF werden dabei vorgestellt: Data Harvester, Watches, Notifications, Diagnostic Images sowie nützliche, überall verfügbare Tools. Grundlage MBeans JMX ist die standardisierte Java Management Schnittstelle. Management Beans (MBeans) stellen die Grundbausteine dar, die über JMX angesprochen werden. MBeans sind hierarchisch strukturiert, das heißt, es ist von möglich von einer MBean Instanz zu etwa vorhandenen Kindern zu navigieren. MBeans haben außerdem Attribute, Operationen und arbeiten mit Events. Prinzipiell kann der Zugriff auf die Weblogic MBeans mit einem Java Programm per JMX programmiert werden, allerdings ist der Aufwand relativ hoch. Weblogic verwendet sowohl Laufzeit-MBeans für die Daten, die nicht in der Konfiguration des Servers gespeichert sind und nur existieren wenn der jeweilige Server gestartet ist, als auch Konfigurations-MBeans, die den Konfigurationsdaten in der config.xml und den Systemmodulen entsprechen. Grundlage WLST Das Weblogic Scripting Tool (WLST) ist in Jython implementiert und stellt eine ideale Abstraktionsebene zum Zugriff auf die MBeans des WLS dar. Das Tool kann offline eingesetzt werden, beispielsweise zum Erstellen von WLS Domänen, oder online zur Betrachtung von Konfigurations-MBean Attributen oder zum Anlegen von neuen Komponenten wie Managed Server, JMS Server oder Data Sources. Neben diesen Konfigurationswerten kann der Zugriff auf Laufzeitwerte, wie die aktuelle Anzahl der Threads oder des freien JVM Heaps erfolgen. WLST Ein Überblick über die wichtigsten WLST Kommandos liefert beispielsweise der im Web verfügbare Quickreference Guide unter: http://www.munzandmore.com/downloads/wlst_quickreference.pdf WLDF Einführung Das WLDF existiert seit WLS9. Es vereinfacht und vereinheitlicht die Logging- und Monitoring-Konzepte von WLS8. Ähnlich wie bei der Konfiguration von JDBC und JMS werden die konfigurierbaren Ressourcen des WLDF als Systemmodule über die Admin Console oder das WLST angelegt oder zusammen mit der Anwendung als Anwendungsmodul deployed. WLDF Collected Metrics / Diagnostic Archive Versierten Anwendern des WLST fällt der Einstieg in das WLDF relativ leicht. So wird beim Anlegen von Collected Metrics einfach festgelegt welche Daten von MBean Typen, Instanzen oder Attributen gesammelt und in ein Archiv geschrieben werden. Das Archiv ist zunächst im Dateisystem abgelegt. Alternativ ist es möglich das Archiv in einer Datenbank anzulegen um so auch einen effizienten Zugriff auf historische Daten zu gewährleisten. Der nachfolgende Screenshot zeigt die Auswahl der MBean Attribute WseeOperationRuntimeMBean zur Überwachung der Laufzeit eines Web Service. des Abb. 1: Collected Metrics: Definition der gesammelten Attribute zur Messung der Ausführungszeiten einer Web Service Implementierung. Watches und Notifications Watches definieren Bedingungen auf der Basis der MBean Daten. Ist die Bedingung erfüllt wird eine Notification ausgelöst und unter der Verwendung eines der nachfolgenden Transportprotokollen zugestellt: • • • • • Java Management Extensions (JMX) Java Message Service (JMS) Simple Mail Transfer Protocol (SMTP) Simple Network Management Protocol (SNMP) Diagnostic Images Somit ist es leicht zu konfigurieren, dass jemand per email über kritische Zustände informiert wird, oder dass beispielsweise alle Notifications an einen zentralen JMS Server geleitet werden. Der nachfolgende Screenshot zeigt die Definition einer Watch Rule. Die Bedingung, die einer solchen Regel zugrundeliegt kann interaktiv durch die Kombination logischer Expression mit der Admin Console erstellt werden. Die Regelsprache ist im Anhang der WLDF Dokumentation ausführlich beschrieben. Abb. 2: Watch: Definition einer Watch Rule zur Überwachung des prozentual freien Heap Speichers. Instrumentierung Die Instrumentierung basiert auf den Prinzipien der Aspekt Orientierten Programmierung (AOP). Im Gegensatz zur AOP kann im WLDF bereits auf eine Reihe vordefinierte Monitore zur Instrumentierung des Weblogic Servers oder der Anwendung zurückgegriffen werden. Diese Monitore können dynamisch an- oder ausgeschaltet werden. Die zu einem Monitor gehörende wählbare Action definiert dann welcher Code beim Erreichen eines Monitors ausgeführt wird: • • • • • DisplayArgumentsAction StackDumpAction ThreadDumpAction TraceAction TraceElapsedTimeAction • MethodInvocationStatisticsAction (seit WLS10.3) Interessant ist die MethodInvocationStatisticsAction, die im Gegensatz zu den anderen Actions keine Events in das File- oder Datenbank-Archiv schreibt, sondern Daten zur Performance eines Joinpoints in Form einer MBean direkt im Speicher ablegt. Pointcuts definieren eine Menge von Joinpoints, also diejenigen Stellen einer Anwendung an denen eine Action angewendet wird. Im folgenden Beispiel sind das alle Ausführungen von Methoden mit beliebigen Parametern, deren Namen mit bookTicket beginnen, die im Paket com.munzandmore liegen, einen beliebigen Rückgabewert liefern und public sind: execute ( public * com.munzandmore* bookTicket* (…) ) Im Gegensatz zu den frei definierbaren Pointcuts bei der Instrumentierung einer Anwendung findet die Instrumentierung des Weblogic Server an aus einer Liste auswählbaren vordefinierten Stellen des Weblogic Server Codes statt, zum Beispiel bei der Rückgabe einer Connection in den Connection Pool oder bei der Verwendung einer http Session. WLDF Console Extension Die Console Extension für das WLDF musste in früheren BEA Versionen aus dem Weblogic Installationsverzeichnis in das Domänenverzeichnis kopiert werden. Bei der aktuellen Version Oracle WLS11g kann die Konsolenerweiterung nun direkt über die Admin Console aktiviert werden. Die Console ersetzt so auch die graphische Darstellung der Heap-Nutzung, wie sie beispielsweise noch in der Admin Console von WLS8 vorhanden war, durch eine generische Darstellung beliebiger MBean Attribute über die Zeit. Neben vordefinierten Views, die bereits Sichten auf JMS, JDBC oder den Heapverbrauch liefern, können beliebige eigene Darstellung definiert werden. Abb. 3: WLDF Console Erweiterung am Beispiel einer problematischen Anwendung mit JDBC connection leak. Zusätzlich visualisiert die WLDF Console Extension aber auch Events, die durch die Actions einer Instrumentierung generiert wurden. Auf diese Weise lässt sich bequem, die Ausführungszeit einer bestimmten Methode einer Anwendung visualisieren. WLDF Diagnostic Images Diagnostic Images werden per Knopfdruck aus der Admin Console heraus oder als Notification basierend auf einer Watch generiert. Diese Diagnostic Images enthalten eine Momentaufnahme der Laufzeit- und der Konfigurationsdaten eines Weblogic Servers in Form einer Zip Datei. WLDF Zusammenfassung Das folgende Mindmap fasst die wichtigsten Komponenten des WLDF zusammen: Abb. 4: MindMap zur Übersicht über das WLDF Kontaktadresse: Dr. Frank Munz munz & more Oracle Middleware Consulting and Training Blütenstr. 19 D-80799 München Telefon: Fax: E-Mail Internet: +49(0)1794908605 [email protected] http://www.munzandmore.com