Bonjour,
Je souhaite accéder à des url Remote JMX via la JVisualVM.
J'ai une machine physique fedora32bits et une machine virtuelle fedora 32bits
Pour pouvoir se connecter en Remote via JMX il faut activer jstatd (remote object registry). Ce dernier est un démon qui surveille la création et la destruction des JVM et fourni une interface qui permet à des outils distants de se connecter aux JVM qui exécutent sur la machine.
A partir de la doc suivante:
http://www.herongyang.com/Java-Tools
J'ai effectué sur l'hôte virtuelle les opérations suivantes sur l'hôte virtuelle:
1) Creation d'un fichier policy jstatd.all.policy pour avoir les permissions
2) Mise en place d'un registre RMI en passant en paramètre le port 2020 pour disposer d'un port libre (le port par defaut est déja pris par mes serveurs d'applications):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 [root@localhost ~]# more /usr/lib/jvm/java/bin/jstatd.all.policy grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; }; [root@localhost ~]#
3) Lancer jstatd via la commande jstatd -J-Djava.security.policy=/usr/lib/jvm/java/bin/jstatd.all.policy -p 2020 &
Code : Sélectionner tout - Visualiser dans une fenêtre à part rmiregistry 2020 &
4) Je lance la commande jps qui affiche la liste des identifiant de chaque JVM lancé:
Par la suite je lance la commande depuis ma machine hôte virtuelle jstat sur du RMI. J'obtiens bien des réponses satifaisante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 *[jc@localhost ~]$ [jc@localhost ~]$ jps -l -m -v rmi://localhost:2020 3136 sun.tools.jps.Jps -l -m -v rmi://localhost:2020 -Dapplication.home=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0 -Xms8m 3096 GarbageCollection -Xms24m -Xmx24m 3047 sun.tools.jstatd.Jstatd -p 2020 -Dapplication.home=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0 -Xms8m -Djava.security.policy=/usr/lib/jvm/java/bin/jstatd.all.policy [jc@localhost ~]$
J'ouvre ensuite les ports suivants (2020, 53580, 38066) sur ma machine hôte virtuelle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 *[jc@localhost ~]$ [jc@localhost ~]$ jstat -gcutil -t rmi://3096@192.168.122.116:2020 1s 30 Timestamp S0 S1 E O P YGC YGCT FGC FGCT GCT 283,3 0,00 0,00 64,49 98,81 15,63 446 0,065 444 11,867 11,932 284,2 0,00 0,00 16,12 98,81 15,63 448 0,065 446 11,925 11,990 285,3 0,00 0,00 64,66 98,81 15,63 449 0,065 447 11,950 12,016 286,3 0,00 0,00 32,24 98,81 15,63 451 0,065 449 12,020 12,085 287,3 0,00 0,00 80,77 98,81 15,63 452 0,066 450 12,047 12,113 288,3 0,00 0,00 48,36 98,81 15,63 454 0,066 452 12,122 12,188 289,3 0,00 0,00 96,75 98,81 15,63 455 0,066 453 12,150 12,216 290,3 0,00 0,00 64,65 98,81 15,63 457 0,066 455 12,212 12,277 ^C[jc@localhost ~]$
Et je relance la commande jstat en remote (cette fois ci depuis ma machine physique):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 [root@localhost jc]# netstat -nap | grep jstatd tcp 0 0 :::2020 :::* LISTEN 2080/jstatd tcp 0 0 :::53580 :::* LISTEN 2080/jstatd tcp 0 0 :::38066 :::* LISTEN 3047/jstatd [root@localhost jc]#
Avec la commande jsp en remote j'ai ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [jc@localhost ~]$ jstat -gcutil -t rmi://3096@192.168.122.116:2020 1s 30 Remote Exception attaching to rmi://3096@192.168.122.116:2020 [jc@localhost ~]$
Merci d'avance pour votre aide,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 [jc@localhost ~]$ jps -l -m -v rmi://192.168.122.116:2020 Error communicating with remote host: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection refused [jc@localhost ~]$
Partager