Objectif JMX (Java Management eXtension)

publicité
ObjectWeb - Wiki - Main - frjmx
Mise en oeuvre de l'administration avec JMX (Administration et supervision des serveurs JavaEE)
Mise en oeuvre de l'administration avec JMX (Administration et supervision des serveurs JavaEE)
Page originale: http://www-adele.imag.fr/users/Didier.Donsez/ujf/GICOM/GICOM_ENS/sujet/etape7.html
Objectif
Cette extension consiste à permettre l'administration et la supervision des serveurs JavaEE de l'application
eCOM. Pour cela, vous vous appuierez sur l'API JMX disponible depuis le JDK 5.0.
JMX (Java Management eXtension)
JMX (Java Management eXtension) est un service de supervision et d'administration d'applications Java qui
s'inspire de SNMP qui est le protocole d'administration de nœuds IP. JMX permet de superviser et
d'administrer des ressources matérielles accessibles depuis une JVM comme des ressources logiciels
s'exécutant sur une JVM. L'instrumentation des ressources se fait au moyen de composants appelés
MBean (Manageable Bean). La spécification JMX définit l'ensemble des interfaces et classes nécessaires à
cette instrumentation.
L'interaction avec les MBeans peut suivre le modèle Pull pour lire et changer la configuration des
applications (par exemple, récupérer des statistiques, l'usage des ressources, ...) ou bien suivre le modèle
Push pour notifier des événements (par exemple, signaler des problèmes, des fautes, des changements
d'état, …).
L'architecture JMX comporte 3 niveaux (voir figure 1) :
• le niveau Instrumentation qui comporte les MBeans,
• le niveau Serveur qui introspecte l'état des MBeans et exécute les opérations sur ces derniers,
• et le niveau Distribution qui permet à des consoles distantes de l'interfacer avec le serveur de MBean.
° Les connecteurs déportent l'interface du serveur
° tandis que les adaptateurs offrent des interfaces d'autres types (HTML/HTTP, SNMP, IIOP, ...).
Les MBeans exposent une interface d'administration comportant un ensemble d'attributs consultables et/ou
modifiables et un ensemble des opérations invocables. Il existe quatre types de MBean : standard MBeans,
dynamic MBeans, open MBeans et model Mbeans. Un standard MBean a une interface qui est définit
statiquement. Le nom de l'interface implémentée doit être préfixé pour le nom de la classe d'implémentation
et suffixé par "MBean". Un dynamic MBean permet d'exposer dynamiquement ses attributs et ses
opérations. La classe d'implémentation doit implémenter l'interface DynamicMBean.
Un MBean peut notifier des changements en implémentant l'interface NotificationBroadcaster.
Un MBean peut récupérer la référence du MBeanServer qui l'enregistre en implémentant l'interface
MBeanRegistration. Les adaptateurs sont généralement des MBeans enregistrés qui implémentent cette
interface.
Les Platform MBeans (appelés MXBeans) qui ont été introduit dans la plateforme Java 5.0, sont des
MBeans instrumentant la JVM : ils décrivent le système de chargement des classes, la compilation JIT, le
ramasse-miette, les loggers, les threads, du système d'exploitation …
Initialement adopté par la communauté J2EE, la spécification JMX fait partie désormais de la Java Platform
depuis la version 5.0. Des implémentations alternatives de JMX sont disponibles pour instrumenter des
applications J2SE antérieure à J2SE 5.0. MX4J http://mx4j.sf.net est l'une d'entre elles. Elle est d'ailleurs
embarquée par JOnAS quand il s'exécute sur des plateformes Java antérieures à 5.0.
-1-
ObjectWeb - Wiki - Main - frjmx
Figure 1 : Architecture à 3 niveaux de JMX.
Réalisation
Installation Récupérez les exemples JMX au moyen d'un checkout de la forge eCOM
La commande est la suivante : svn checkout
svn://svn.forge.objectweb.org/svnroot/ecom/extension/jmx Préliminaires Testez et comprenez les
exemples JMX fournis dans le répertoire.
Utilisez la console JMX JConsole.exe (http://java.sun.com/j2se/1.5/docs/guide/management/jconsole.html)
fournie dans le JDK 5.0 pour butiner les MBeans enregistrés sur les MBeanServers des exemples. Vous
pourrez utiliser également la console concurrente MC4J http://mc4j.sf.net
Vous pourrez aussi vous connecter sur les connecteurs JMX de vos serveurs JOnAS (La JMXServiceURL
est service:jmx:rmi:///jndi/rmi://hostname:1099/jrmpconnector_jonas) pour explorer les managed objects d'un
serveur J2EE conformément au JSR 77.
Remarque : la console SNMP vu en TP Réseaux peut servir à parcourir la MIB de la machine virtuelle de
vos serveurs via l'adaptateur (voir le JSR 163.et également
http://java.sun.com/j2se/1.5.0/docs/guide/management/SNMP.html) Instrumentation simple des serveurs
CORBA Lisez premièrement le chapitre 21 "Using Java Management Extentions (JMX)" du guide de
programmation de JacORB (%JACORB_HOME%docProgrammingGuideProgrammingGuide.pdf
Cette sous-extension consiste à ajouter un MBeanServer à votre GenericServer CORBA. Ce MBeanServer
sera pourvu de connecteurs et d'adaptateurs qui seront activés au démarrage à partir d'un fichier
d'initialisation.
Vous utiliserez ensuite le MBeanServer pour superviser quelques éléments notoires de vos serveurs (POA,
POM, Intercepteur). Vous définirez pour chacun de ces éléments un MBean permettant des récupérer des
statistiques diverses et variées (A vous de les imaginer !)
-2-
ObjectWeb - Wiki - Main - frjmx
Vous pourrez écrire des MBeans utilisant les types
• TabularDataSupport
http://java.sun.com/j2se/1.5.0/docs/api/javax/management/openmbean/TabularDataSupport.html
• CompositeDataSupport
http://java.sun.com/j2se/1.5.0/docs/api/javax/management/openmbean/CompositeDataSupport.html
Réalisation du déploiement dynamique des servants Cette sous-étape consiste à implémenter le
déploiement dynamiques des servants. Les servants pourront être déployer dynamiquement à partir
d'archives présentes sur Internet. Pour cela, vous utiliserez les MLet à la façon de JBoss. Réalisation d'un
adaptateur pour IIOP Cette sous-étape consiste à réaliser un adaptateur IIOP. Pour cela, vous définirez
l'interface IDL de cet adaptateur afin de pourvoir faire l'essentiel des opérations que permet de faire un
connecteur. Ensuite, vous implémenterez cet adaptateur au moyen d'un dynamic MBean qui implémente
l'interface MBeanRegistration pour pouvoir récupérer la référence du MBeanServer. Vous testerez cet
adaptateur en écrivant un client simple (de type Shell ou GUI) permettant d'explorer les MBeans enregistrés
sur le MBeanServer. Sécurisation de l'administration et du déploiement Activez la sécurité pour les
connecteurs et n'autorisez que le déploiement d'archives signées. JMX avec ANT Utilisez les tâches JMX
de Catalina (Apache TomCat) pour automatiser les interactions avec les MBeanServers de vos passerelles
et de vos serveurs (déploiement des bundles, ...). Pour cela , vous pouvez tester l'exemple se trouvant dans
le répertoire exemplesjmxjmxant de la distribution du projet. MEJB Pour terminer cette étape, vous pourrez
regarder rapidement l'exemple j2eemanagement qui est dans le répertoire examples de JOnAS. Cet
exemple illustre l'usage de MEJB pour explorer les managed objects d'un serveur J2EE. Un MEJB peut être
perçu comme un adaptateur JMX. Ils sont spécifiés par le JSR 77.
Documentation
Pour comprendre JMX, vous pouvez vous reporter
•
•
•
•
•
•
•
•
•
•
•
•
aux transparents du cours sur JMX : http://www-adele.imag.fr/~donsez/cours/jmx.pdf
à la documentation de JMX : http://java.sun.com/j2se/1.5.0/docs/guide/jmx/spec.html
au tutorial de SUN sur JMX : http://java.sun.com/j2se/1.5.0/docs/guide/jmx/tutorial/tutorialTOC.html
au tutorial de XMOJO sur JMX : http://www.xmojo.org/products/xmojo/tutorials/docs/index.html
aux exemples du JDK : http://java.sun.com/j2se/1.5.0/docs/guide/jmx/examples.html
aux «Best Practices »: http://java.sun.com/products/JavaManagement/best-practices.html
http://www.ftponline.com/javapro/2005_01/magazine/features/cpeltz/
aux transparents de Rickard Öberg sur JBoss et JMX :
http://www.ece.uic.edu/~cpress/jmx/Oberg_jmx_jboss.ppt
un recueil d'articles http://www.j2eeolympus.com/J2EE/JMX/JMX.jsp
AOP@Work: Performance monitoring with AspectJ:
http://www-128.ibm.com/developerworks/java/library/j-aopwork10/ +
http://www-128.ibm.com/developerworks/java/library/j-aopwork12/
Un exemple d'usage des MLet :
http://www.adventnet.com/products/javaagent/help/mp_agent/jmx/j_jmx_mlet_service.html
http://www.adventnet.com/products/javaagent/examples/jmx/mlet/readme.html
Java Specification Request (JSR) 163 http://jcp.org/en/jsr/detail?id=163 +
http://java.sun.com/j2se/1.5.0/docs/guide/management/SNMP.html
chapitre 21 « Using Java Management Extentions (JMX) » du guide de programmation de JacORB
(%JACORB_HOME%docProgrammingGuideProgrammingGuide.pdf
Mise en oeuvre de l'administration avec JMX (Administration et supervision des serveurs JavaEE) (en)
Creator: xwiki:XWiki.donsez Date: 2007/08/24 07:33
Last Author: xwiki:XWiki.donsez Date: 2007/08/24 07:42
Copyright (c) 2005-2006, ObjectWeb Consortium
-3-
Téléchargement