Surveillance à distance avec visualvm et JMX
Je voudrais surveiller une application java (spring boot) en cours d'exécution à distance avec jvisualvm (ou jconsole). Lors de l'exécution locale, je peux voir les beans gérés dans jvisualvm et jconsole. Lors de l'exécution à distance, je ne peux pas me connecter. Je l'ai essayé avec plusieurs processus java différents (par exemple avec spring xd). La recherche de réponses ici sur SO et sur Google n'a pas aidé.
Ce sont mes JAVA_OPTS (sur l'hôte distant):
$ echo $JAVA_OPTS
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.59.99
Ensuite, je démarre simplement le programme comme suit (c'est pour spring xd, mais je rencontre le même problème avec d'autres programmes java).
$ bin/xd/xd-singlenode
Le processus serveur semble prendre les options:
$ ps -ef | grep single
vagrant 22938 19917 99 06:38 pts/2 00:00:03 /usr/lib/jvm/java-8- oracle/jre/bin/java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.59.99 -Dspring.application.name=admin -Dlogging.config=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config///xd-singlenode-logger.properties -Dxd.home=/home/vagrant/spring-xd-1.1.0.RELEASE/xd -Dspring.config.location=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config// -Dxd.config.home=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config// -Dspring.config.name=servers,application -Dxd.module.config.location=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config//modules/ -Dxd.module.config.name=modules -classpath (...)
La version java sur l'hôte distant (ubuntu linux vm) est:
$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
La version java sur la machine locale (Mac OS) est légèrement différente:
$ java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
Dans jvisualvm, j'ajoute la connexion distante comme suit (essayé à la fois avec une connexion ssl et sans):
C'est le message d'erreur que jvisualvm donne moi:
Je peux me connecter de l'hôte local à l'hôte distant avec la commande telnet 192.168.59.99:9010
, lorsque le processus distant est en cours d'exécution so donc cela ne semble pas être un problème de pare-feu.
Toute aide est très appréciée.
1 answers
Veuillez utiliser les options JVM suivantes:
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.59.99
Dans le Jconsole, utilisez ce qui suit pour vous connecter:
service:jmx:rmi:///jndi/rmi://192.168.59.99:9010/jmxrmi