Introduction à Oracle "JVM Diagnostics"

Oracle « JVM Diagnostics », abbrégé JVMD, permet de superviser très finement avec un intervalle d’échantillonnage de l’ordre de la seconde et même bien inférieur, l’utilisation de vos machines virtuelles Java en production. Il est compatible avec la plupart des JVM du marché, y compris celle d’IBM, de HP, de Sun et JRockit ; pour une liste exhaustive de ces JVM, reportez-vous à la note My Oracle Support [ID 1265738.1].

Si vous ne connaissez pas « JVM Diagnostics », il s’agit du successeur d’Application Diagnostic for Java (AD4J) issue du rachat en 2007 de Auptyma et désormais complètement intégré à Enterprise Manager 11g.

JVM Diagnostics fait parti des packages « WebLogic Server Management Pack Enterprise Edition« , « Diagnostics Pack for Oracle Middleware » ou « Oracle Management Pack for non-Oracle Middleware ». Il est constitué de :

  • Une console qui s’affiche depuis Enterprise Manager 11g et stocke/interroge ses données le référentiel de l’OMS
  • Un composant spécifique appelé JVM Diagnostics Manager sert de relai entre la console et l’agent JVMD ; celui-ci stocke également ses informations dans le référentiel de l’OMS
  • Des agents ; ceux-ci peuvent être déployés en mode standalone, dans la machine virtuelle Java, ou dans un serveur d’applications tel que Weblogic mais également Tomcat, JBoss ou Websphere.
  • Un agent pour les bases de données Oracle sous Unix et Linux qui permet de faire le lien entre des problèmes de performance dans l’application et le SQL de votre base de données préférée

Parmi les caractéristiques notables de JVM Diagnostics, outre le fait qu’il fonctionne dans quasiment toutes les configurations Java, il est significatif de noter que la solution est conçue pour être utilisée en production. Ses caractéristiques sont notamment une empreinte minimum, une activation à chaud, une réelle capacité de monter en charge via plusieurs JVMD Manager. Le résultat est que les administrateurs peuvent identifier rapidement, visuellement et, en revenant dans l’historique d’utilisation les problèmes de performance.

Son intégration dans Enterprise Manager permet en outre de lier ces données aux données issues de RUEI, aka Real User Experience Insight qui trace l’ensemble de l’activité réseau sur les switchs et acquis par Oracle à travers le rachat de Moniforce. JVMD est également intégré à ADP ou Application Dependency and Performance issue du rachat de ClearApp qui permet quand à lui de tracer les interactions cross-JVM et de remonter dans les diagrammes fonctionnels de technologies avancées comme les processus SOA, les composants Java EE (JSF, EJB, services Web) ou les écrans d’Oracle WebCenter…

L’article qui suit présente les éléments simples de mis en oeuvre d’Oracle JVM Diagnostics

Installer JVM Diagnostics Manager

Oracle JVM Diagnostics fait partie d’Oracle Enterprise Manager 11g. Il est donc installé avec le produit. Toutefois pour l’utiliser, vous allez devoir déployer 2 composants qui sont :

  • JVM Diagnostics Manager
  • L’agent JVM Diagnostics

La procédure d’installation d’Oracle JVM Diagnostics Manager est décrit dans Oracle® Enterprise Manager Getting Started with Oracle Fusion Middleware Management 11g Release 1 (11.1.0.1) – 9 Configuring JVM Diagnostics. Pour la mettre en oeuvre, vous devrez aller dans le répertoire ad4j de l’installation de l’OMS et décompresser le fichier ad4j.zip qui s’y trouve :

cd /u01/app/oracle/product/middleware/oms11g
cd ad4j
unzip ad4j.zip
Archive: ad4j.zip
extracting: dbagent.zip
inflating: DeployAD4JManager.py
inflating: DeployAD4JManager.sh
inflating: jamagent_secure.war
inflating: jamagent.war
extracting: loadheap.zip
extracting: manager.zip

L’installation de JVM Diagnostics Manager crée un nouveau serveur dans le domaine de l’OMS via un clone. Pour lancer la procédure, vous devrez supprimer les variable d’environnement Oracle positionnées précédemment et lancer le script DeployAD4JManager.sh puis vous laisser guider comme ci-dessous :

unset ORACLE_HOME
unset ORACLE_SID

./DeployAD4JManager.sh

Welcome to AD4J Manager Installation script
Please follow the guided instructions to install AD4J manager
*************************************************************

Operating System : Linux

Not running any envronment setup scripts as ORACLE_HOME is already set.
ORACLE_HOME=/u01/app/oracle/product/middleware/oms11g

INSTANCE HOME not set
Environment variable used in the script :
ORACLE_HOME=/u01/app/oracle/product/middleware/oms11g
MW_HOME=
WL_HOME=
MODULES_DIR=
EMGC_DOMAIN_HOME=/../gc_inst/user_projects/domains/GCDomain
Please validate that the environment set is correct.
**Error JAVA_HOME NULL. Exiting..
[oracle@pink ad4j]$ unset ORACLE_HOME
[oracle@pink ad4j]$ unset ORACLE_SID
[oracle@pink ad4j]$ ./DeployAD4JManager.sh
Welcome to AD4J Manager Installation script
Please follow the guided instructions to install AD4J manager
*************************************************************

Operating System : Linux

Setting up environment variables
INSTANCE HOME not set
Environment variable used in the script :
ORACLE_HOME=/u01/app/oracle/product/middleware/oms11g
MW_HOME=/u01/app/oracle/product/middleware
WL_HOME=/u01/app/oracle/product/middleware/wlserver_10.3
MODULES_DIR=/u01/app/oracle/product/middleware/modules
EMGC_DOMAIN_HOME=/u01/app/oracle/product/middleware/../gc_inst/user_projects/domains/GCDomain

Note : If any of the environment variable are not correct then user can modify the script and set them manually
Deleting previous existing ./manager.zip file..
Done

Unzipping ad4j.zip
Archive: ./ad4j.zip
extracting: manager.zip

Unzipping manager.zip
Archive: ./manager.zip
creating: manager/
creating: manager/Win/
inflating: manager/Win/jammanager.ear
creating: manager/SunOS/
inflating: manager/SunOS/jammanager.ear
creating: manager/Linux/
inflating: manager/Linux/jammanager.ear
creating: manager_secure/
creating: manager_secure/Linux/
inflating: manager_secure/Linux/jammanager.ear

Please specify the weblogic server details (Press (enter) to select the default values)

Enter weblogic host name [Default : pink.easyteam.fr]

Does weblogic server use secure connection (uses https)? [Default:[y]es]

Enter weblogic administration server ssl port number
7101
Enter weblogic administration server username
weblogic
Enter weblogic administration server password

---------------------
Weblogic server details specified by user are:
Host Name :
pink.easyteam.fr
weblogic port number :
7101
weblogic administration server username:
weblogic
Note: Weblogic administration server is using https
---------------------

Please specify details of a new managed server for deploying AD4J manager - Press (enter) to choose the default value

Enter managed server name[Default : EMAD4JMANAGER]

Enter managed server machine name [Default : EMGC_MACHINE1]

Enter managed server listen address[Default : pink.easyteam.fr]

Enter managed server listen port [Default : 3800]

Enter managed server ssl listen port [De fault : 3801]

Enter existing OMS server name [Default : EMGC_OMS1]

Enter existing EMGC_DOMAIN path [Default : /u01/app/oracle/product/middleware/../gc_inst/user_projects/domains/GCDomain]

Enter existing INSTANCE_HOME path [Default : /u01/app/oracle/product/middleware/../gc_inst/user_projects/domains/GCDomain/em/EMGC_OMS1]

------------------------------------------
New managed server details entered are :

Managed server name :
EMAD4JMANAGER

Manged server machine :
EMGC_MACHINE1

Managed server listen address :
pink.easyteam.fr

Managed server listen port :
3800

Managed Server SSLListen Port :
3801

Existing OMS server name :
EMGC_OMS1

Existing EMGC Domain Path:
/u01/app/oracle/product/middleware/../gc_inst/user_projects/domains/GCDomain

Existing Instance home path :
/u01/app/oracle/product/middleware/../gc_inst/user_projects/domains/GCDomain/em/EMGC_OMS1
------------------------------------------
Secure Communication between agent and manager are available on Linux.
AD4J manager on linux 32 bit can only have secure communication with AD4J agents on linux 32 bit platform. Currently its not available on any other platform
Do you want secure communication between AD4J agent and AD4J manager(y/n)? [Default:[n]o]


copying jammanager.ear to current directory

Do you wish to continue with installation of AD4J manager? y/n [Default : y]


Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

Deployment Summary:
WEBLOGICHOSTNAME pink.easyteam.fr
WEBLOGICPORTNUMBER: 7101
USERNAME: weblogic
MACHINENAME: EMGC_MACHINE1
ORACLEHOME: /u01/app/oracle/product/middleware/oms11g
WLHOME: /u01/app/oracle/product/middleware/wlserver_10.3
MODULEHOME: /u01/app/oracle/product/middleware/modules
SERVERNAME EMAD4JMANAGER
LISTENADDRESS pink.easyteam.fr
LISTENPORT 3800
SSL LISTENPORT 3801
Existing OMS server name EMGC_OMS1
Existing EMGC DOMAIN Home path /u01/app/oracle/product/middleware/../gc_inst/user_projects/domains/GCDomain
Existing Instance Home /u01/app/oracle/product/middleware/../gc_inst/user_projects/domains/GCDomain/em/EMGC_OMS1

Connecting to t3s://pink.easyteam.fr:7101 with userid weblogic ...
Successfully connected to Admin Server 'EMGC_ADMINSERVER' that belongs to domain 'GCDomain'.

Dummy deploying on EMGC_OMS1
This will make jammanager entry to system-jazn-data.xml

Deploying application from /u01/app/oracle/product/middleware/oms11g/ad4j/./jammanager.ear to targets EMGC_OMS1 (upload=false) ...
<Jul 24, 2011 3:13:57 PM CEST> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating deploy operation for application, jammanager [archive: /u01/app/oracle/product/middleware/oms11g/ad4j/./jammanager.ear], to EMGC_OMS1 .>
....Completed the deployment of Application with status completed
Current Status of your Deployment:
Deployment command type: deploy
Deployment State : completed
Deployment Message : no message
Stopping application jammanager.
<Jul 24, 2011 3:14:11 PM CEST> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating stop operation for application, jammanager [archive: null], to EMGC_OMS1 .>
...Completed the stop of Application with status completed
Current Status of your Deployment:
Deployment command type: stop
Deployment State : completed
Deployment Message : no message
Undeploying application jammanager ...
<Jul 24, 2011 3:14:21 PM CEST> <Info> <J2EE Deployment SPI> <BEA-260121> <Initiating undeploy operation for application, jammanager [archive: null], to EMGC_OMS1 .>
.Completed the undeployment of Application with status completed
Current Status of your Deployment:
Deployment command type: undeploy
Deployment State : completed
Deployment Message : no message
Location changed to edit tree. This is a writable tree with
DomainMBean as the root. To make changes you will need to start
an edit session via startEdit().

For more help, use help(edit)

Starting an edit session ...
Started edit session, please be sure to save and activate your
changes once you are done.
Creating Server

Created Server. Now setting up properties

Saving all your changes ...
Saved all your changes successfully.
Activating all your changes, this may take a while ...
The edit lock associated with this edit session is released
once the activation is completed.
Activation completed

Starting server EMAD4JMANAGER ................................
Server with name EMAD4JMANAGER started successfully
Deploying application from /u01/app/oracle/product/middleware/oms11g/ad4j/./jammanager.ear to targets EMAD4JMANAGER (upload=false) ...
<jul 2011 24, 3:14:57 cest pm> <info> <j2ee deployment spi > <bea-260121> <initiating . [archive ad4j app application, deploy emad4jmanager for jammanager.ear], jammanager middleware oms11g operation oracle product to u01>
....Completed the deployment of Application with status completed
Current Status of your Deployment:
Deployment command type: deploy
Deployment State : completed
Deployment Message : no message
Disconnected from weblogic server: EMGC_ADMINSERVER


Exiting WebLogic Scripting Tool.

<Jul 24, 2011 3:15:12 PM CEST> <Warning> <JNDI> <BEA-050001> <WLContext.close() was called in a different thread than the one in which it was created.>

Note:

Déployer l’agent JVM Diagnostics

Le cas le plus simple de déploiement d’un agent est dans le cas d’un domaine Weblogic déjà supervisé par Oracle Enterprise Manager; Il suffit alors de sélectionner le domaine dans Enterprise Manager et de sélectionner le bouton « Deploy Agent » comme ci-dessous :

La page de déploiement des agents demande les informations de connexion à Weblogic et à l’agent Oracle local :

Note:
Pour déployer des agents manuellement, reportez-vous aux différents scénarios d
e déploiements manuels décrits dans la documentation

Superviser vos bases de données Oracle

Pour corréler l’utilisation de la JVM et les ordres SQL dans vos bases de données Oracle, vous devrez enregistrer les informations de configuration de vos bases de données dans JVM Diagnostics; pour cela, sélectionnez le menu « JVM Diagnostics > Setup > Database » et enregistrez les informations de connexion comme ci-dessous :

Diagnostiquer les problèmes

Une fois la configuration réalisée, vous pouvez :

  • Visualiser les différents résumés d’utilisation des JVM
  • Naviguer dans les performances en temps réels; retrouver les différents « tops » Threads, SQL, heaps
  • Tracer des threads et visualiser en détail l’utilisations des composants
  • Collecter et visualiser la manière dont la mémoire heap est utilisée

Vous pourrez ainsi très rapidement détecter les méthodes ou instances à investiguer… Pour en savoir plus, lisez Oracle® Enterprise Manager Getting Started with Oracle Fusion Middleware Management
11g Release 1 (11.1.0.1) – 13 Using JVM Diagnostics