Objectif JMX (Java Management eXtension)
Transcription
Objectif JMX (Java Management eXtension)
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-