Skip navigation

Cet article suppose que vous avez une bonne connaissance de Java, vous devez entre autre savoir ajouter des options à votre JVM. Nous allons voir comment monitorer une application JEE fonctionnant sur un serveur Jboss distant. Autant vous le dire de suite, j’ai déjà lu beaucoup de solutions sur Internet pour monitorer un Jboss sur un serveur distant, aucune n’a fonctionnée pour moi, alors j’y vais aussi de ma solution mais elle ne fonctionnera peut-être pas pour vous.

Pour monitorer nos applications nous allons utiliser Visual VM. Cette application est incluse dans les JDK 1.6 et ultérieures. Nous ne verrons pas dans cet article comment exploiter les résultats fournis par Visual VM, il existe déjà de nombreux articles très bien faits sur Internet. Je ne détail pas non plus comment monitorer un serveur local, il suffit de lire la documentation sur le site officiel.

Veuillez noter que pour profiter des fonctionnalités complètes de Visual VM, votre application doit fonctionner sur une JVM 1.6 ou ultérieur. Mais vous pourrez obtenir des informations intéressantes même si votre application fonctionne sur une JVM 1.5 ou inférieur… Assez parlé, rentrons dans le gras.

  • Coupez votre serveur Jboss
service jboss_myApp stop
  • Éditer le fichier de configuration du Jboss

Il est placé à différents endroits selon la configuration de votre serveur. Le mien est à l’adresse suivante : /etc/jboss_myApp.conf . Cherchez dans le fichier la section JAVA_OPTS et ajoutez les lignes suivantes à la suite :

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9876"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"
JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl"

Cherchez dans le fichier la séquence « JBOSS_BIND_ADDRESS="0.0.0.0" » et remplacez la par :

JBOSS_BIND_ADDRESS="IP_DE_VOTRE_SEVEUR"

Ce paramètre correspond à l’option –b fournie au démarrage du Jboss.

  • Démarrer votre serveur jboss
service jboss_myApp start

Il vous faut démarrer jstatd sur votre serveur distant. Jstatd est contenu dans le dossier « lib » de la JRE. Remplacez $JRE_HOME par le répertoire « home » de votre JRE.

  • Configurez jstatd
cd $JRE_HOME/lib
mkdir security # si le dossier n’existe pas déjà
cd security
vi jstatd.policy

Ajoutez le contenu suivant au fichier jstatd.policy :

grant codebase "file:${java.home}/../lib/tools.jar" {
     permission java.security.AllPermission;
};

Sauvegardez et quittez.

  • Démarrez jstatd
cd $JVM_HOME/lib/security # normalement vous êtes déjà dans ce répertoire
jstatd -p 8008 -J-Djava.security.policy=jstatd.policy

8008 a été choisi aléatoirement, il ne faut pas que le port soit déjà utilisé. Normalement vous n’avez aucun message en retour, c’est que jstatd est bien démarré.

Votre serveur distant est maintenant près à être monitoré. Revenez sur votre machine locale pour lancer Visual VM.

  • Démarrez Visual VM
cd $JDK_HOME/bin
./jvisualvm
  • Configurez Visual VM
Dans l'onglet de gauche "Remote", faites clic droit, puis "Add remote host"
Entrez l'IP du serveur à monitorer
Faites ensuite un clic droit sur votre serveur, et cliquez sur « Add jstatd connection... »
Cliquez sur « Add custom » pour ajouter le port 8008

Vous verrez votre Jboss apparaitre dans la liste des applications Java juste sous votre serveur. Il ne vous reste plus qu’à apprendre à vous servir de Visual VM.