Best of Oracle Weblogic Diagnostic Framework

Werbung
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
Herunterladen