web-dev-qa-db-fra.com

Impossible de connecter un hôte distant au VisualVM

Je suis nouveau sur Java et je suis confronté à un problème de connexion d’un hôte distant à la JVisualVM.

J'ai effectué des recherches sur Internet et suivi toutes les étapes mentionnées, mais je ne parviens toujours pas à résoudre le problème. Les étapes que j'ai suivies sont:

  1. J'ai démarré jstatd sur le serveur distant en créant d'abord un fichier jstatd.all.policy dans le $Java_HOME/bin. Le fichier contient: grant codebase "file:${Java.home}/../lib/tools.jar" { permission Java.security.AllPermission;};

  2. J'ai commencé la Jstatd en tant que jstatd -J-Djava.security.policy=jstatd.all.policy

  3. J'ai démarré l'application Java sur l'hôte distant en tant que:

    Java -Dcom.Sun.management.jmxremote -Dcom.Sun.management.jmxremote.port=9000 -Dcom.Sun.management.jmxremote.ssl=false -Dcom.Sun.management.jmxremote.authenticate=false application_name
    
  4. J'ai ensuite démarré en tant qu'instance de la variable JVisualVM sur mon ordinateur local et, lorsque j'ai ajouté l'hôte distant, la connexion s'est établie, mais je n'ai pas été en mesure de voir aucun des processus Java.

Quelqu'un peut-il m'aider s'il vous plaît avec cela.

Merci.

16
rushi

Vous devez démarrer jstatd avec l'option supplémentaire qui pointe vers l'adresse IP externe ou le nom d'hôte du serveur:

statd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=my_server_ip/hostname

Réponse basée sur: https://Java.net/projects/visualvm/lists/users/archive/2010-03/message/8

10
Piotr Holubowicz

Pour vous connecter à un VM distant, vous devez démarrer ce VM distant avec des options spécifiques:

Java
 -Dcom.Sun.management.jmxremote
 -Dcom.Sun.management.jmxremote.port=9000
 -Dcom.Sun.management.jmxremote.ssl=false
 -Dcom.Sun.management.jmxremote.authenticate=false
class

Une fois le VM démarré, accédez à votre VisualVM et procédez comme suit:

  1. Fichier -> Ajouter une connexion JMX
  2. Tapez: yourHostName: 9000 et cliquez sur OK.
  3. Sur la gauche, vous aurez la connexion JMX ajoutée, double-cliquez dessus et c'est tout!

Plus de détails sur la la plate-forme Java de surveillance et de gestion peut être trouvée ici .

6
davorp

Démarrez jstatd in Nohup sur le serveur qui doit être surveillé et connectez VisualVM au port jstatd en procédant comme suit:

Étape 1: Créez start-jstatd.sh et copiez le contenu ci-dessous:

Nohup jstatd -p 1099 -J-Djava.security.policy=<(echo 'grant codebase "file:${Java.home}/../lib/tools.jar" {permission Java.security.AllPermission;};') &

Step 2: Donnez l'autorisation d'exécution au fichier:

$ chmod a+rwx start-jstatd.sh

Étape 3: Démarrer jstatd:

$ sh start-jstatd.sh

Étape 4: Ajouter un hôte distant dans VisualVM:

 enter image description here

Étape 5: Ajoutez Connexion JMX au hôte distant, comme indiqué dans l'image ci-dessous et cliquez sur le bouton OK:  enter image description here

0
Arpit

Voici les étapes à suivre:

  1. Lancez un ejstatd dans votre hôte distant de cette manière (dans le dossier ejstatd): mvn exec:Java -Djava.rmi.server.hostname=<remote_Host_name> -Dexec.args="-pr 1099 -ph 1100 -pv 1101" (utilisé pour une connexion de type "jstatd") (spécifiez uniquement -Djava.rmi.server.hostname si le nom d’hôte de votre hôte distant ne correspond pas à celui que vous voyez actuellement votre réseau local)
  2. Lancez votre application Java avec ces paramètres Java supplémentaires: -Dcom.Sun.management.jmxremote -Dcom.Sun.management.jmxremote.ssl=false -Dcom.Sun.management.jmxremote.authenticate=false -Dcom.Sun.management.jmxremote.port=1102 -Dcom.Sun.management.jmxremote.rmi.port=1102 -Djava.rmi.server.hostname=<remote_Host_name> (utilisé pour une connexion de type "JMX") (même remarque que le point précédent pour -Djava.rmi.server.hostname)
  3. Ouvrez ces 4 ports sur votre hôte distant et mettez-les à la disposition de votre ordinateur local: 1099, 1100, 1101 et 1102
  4. Lancer JVisualVM
    1. Cliquez avec le bouton droit de la souris sur "Remote"> "Add Remote Host ..." et entrez votre nom d'hôte distant dans "Host name" (si vous n'utilisez pas le port 1099, vous pouvez le modifier dans les "Paramètres avancés").
    2. Cliquez avec le bouton droit sur l'hôte distant que vous venez de créer> "Ajouter une connexion JMX ..." et entrez "<remote_Host_name>:1102" dans l'entrée "Connexion", puis cochez la case "Ne nécessite pas de connexion SSL".
    3. Votre processus Java apparaîtra deux fois: un du type de connexion "jstatd" et un du type de connexion "JMX".

Disclaimer: Je suis l'auteur de l'open source ejstatd tool.

0
Anthony O.