Quelqu'un a eu une distance de JMX JConsole à travailler?
Il semble que je n'ai jamais eu que cela fonctionne dans le passé. Actuellement, je SAIS que ça ne fonctionne pas.
Mais nous commençons notre processus Java:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=6002
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
Je peux en telnet sur le port, et "quelque chose est là" (qui est, si je ne démarrez pas le processus, rien de réponses, mais si je le fais, il le fait), mais je ne peux pas obtenir JConsole de travail de remplissage dans l'IP et le port.
Semble qu'il devrait être si simple, mais pas d'erreur, pas de bruit, rien. Ne fonctionne tout simplement pas.
Quelqu'un connait l'astuce pour ça?
- Si vous utilisez tomcat cela peut être la solution : stackoverflow.com/questions/1263991/...
- Avez-vous oublié d'accepter quelque chose ici @Will?
Vous devez vous connecter pour publier un commentaire.
J'ai une solution pour cela:
Si votre processus Java est en cours d'exécution sur Linux derrière un pare-feu et que vous voulez commencer JConsole /Java VisualVM /Java Mission de Contrôle sur Windows sur votre ordinateur pour le connecter à la JMX Port de votre processus Java.
Vous avez besoin d'accéder à votre machine linux via une connexion SSH. Toutes les Communications seront acheminés au cours de la connexion SSH.
ASTUCE: Cette Solution fonctionne, peu importe si il y a un pare-feu ou pas.
Inconvénient: Chaque fois que vous redémarrer votre processus java, vous aurez besoin de faire toutes les étapes de la 4 - 9 nouveau.
1. Vous avez besoin du mastic-suite pour votre machine Windows à partir d'ici:
2. Définir un Port libre sur votre machine linux:
Exemple:
3. Ajouter des arguments de processus java sur la machine linux
Cela doit être fait exactement de cette façon. Si sa fait comme ci-dessous, il travaille pour les Machines linux derrière un pare-feu (Il fonctionne à cause de la
-Djava.rmi.server.hostname=localhost
argument).Exemple:
4. Obtenez de l'Id du Processus de votre Processus Java
Exemple:
5. Trouver Port arbitraire pour RMIServer talons de télécharger
Le processus java ouvre un nouveau Port TCP sur la machine linux, où le RMI Serveur Talons seront disponibles pour le téléchargement. Ce port doit également être disponible via un Tunnel SSH pour obtenir une connexion à la Machine Virtuelle Java.
Avec
netstat -lp
ce port peut également être constaté lalsof -i
donne des conseils en ce port qui a été ouverte le processus java.REMARQUE: Ce port est toujours modifié lors de la java au démarrage du processus.
Exemple:
6. Permettre à deux SSH-Tunnels à partir de votre machine Windows avec putty
Exemple:
7. Connectez-vous à votre machine Linux avec le Mastic avec ce SSH Tunnel activé.
Laissez le mastic session ouverte.
Lorsque vous êtes connecté, Putty tunnel de toutes les Connexions TCP de la machine linux sur le port SSH 22.
JMX-Port:
RMIServer-Stub-Port:
8. Début JConsole /Java VisualVM /Java Mission de Contrôle pour vous connecter à votre Processus Java à l'aide de l'URL suivante
Cela fonctionne, cause JConsole /Java VisualVM /Java Contrôle de la Mission pense que vous vous connectez à un Port local sur votre machine Windows. mais Mastic envoyer tous cargaison dans le port 15666 à votre machine linux.
Sur la machine linux d'abord le processus java donne la réponse et l'envoi de la RMIServer Port. Dans cet exemple 37123.
Puis JConsole /Java VisualVM /Java Contrôle de la Mission pense qu'il se connecte à localhost:37123 et putty envoyer la totalité de la charge utile de l'avant de la machine linux
Le Processus java réponses et la connexion est ouverte.
Exemple:
9. PROFITEZ #8-]
Ajoutant
-Djava.rmi.server.hostname='<host ip>'
résolu ce problème pour moi.-Dcom.sun.management.jmxremote.rmi.port=6002
(voir aussi la réponse ci-dessous: stackoverflow.com/questions/151238/...)Essayé avec Java 8
Cette solution fonctionne bien aussi avec les pare-feu
1. Ajoutez ceci à votre java script de démarrage à distance de l'hôte:
2. L'exécuter sur votre ordinateur.
Les utilisateurs de Windows:
putty.exe -ssh user@remote-host -L 1616:remote-host:1616
Linux et les Utilisateurs de Mac:
ssh user@remote-host -L 1616:remote-host:1616
3. Début
jconsole
sur votre ordinateur4. Amusez-vous!
P. S.: au cours de l'étape 2, à l'aide de
ssh
et-L
vous préciser que le port 1616 sur le local (client) de l'hôte doit être transmis à l'hôte distant. C'est un tunnel ssh et permet de évite de pare-feu ou de réseaux divers problèmes.Vous êtes probablement victime d'un problème avec un pare-feu. Le "problème" est que le port que vous avez spécifié n'est pas le seul port utilisé, il utilise 1 ou peut-être même plus de 2 ports pour le RMI, et ceux-ci sont probablement bloqué par un pare-feu.
L'un des ports supplémentaires ne seront pas savoir d'avance si vous utilisez la valeur par défaut RMI de configuration, de sorte que vous avez à s'ouvrir à une grande plage de ports - qui peut ne pas amuser à l'administrateur du serveur.
Il y a une solution qui ne nécessite pas l'ouverture de beaucoup de ports cependant, j'ai eu à le faire fonctionner à l'aide de la source combinée des extraits et des conseils de
http://forums.sun.com/thread.jspa?threadID=5267091lien ne fonctionne plushttp://blogs.oracle.com/jmxetc/entry/connecting_through_firewall_using_jmx
http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html
Il est même possible de configurer un tunnel ssh et encore le faire fonctionner 🙂
forums.sun.com
est casséblogs.oracle.com
est cassé.Après avoir mis mon Google-fu à l'épreuve pour le couple des derniers jours, j'ai enfin réussi à obtenir que cela fonctionne après la compilation des réponses à partir de Débordement de Pile et cette page http://help.boomi.com/atomsphere/GUID-F787998C-53C8-4662-AA06-8B1D32F9D55B.html.
La rediffusion de la Dell Boomi page:
La une ligne que je n'ai pas vu de Débordement de Pile répondre à couvrir est
Dans mon cas, j'ai été de tenter de récupérer Kakfa métriques, donc j'ai simplement changé l'option ci-dessus pour correspondre à la
-Dcom.sun.management.jmxremote.port
valeur. Donc, sans authentification de toute nature, le strict minimum config devrait ressembler à ceci:Êtes-vous en cours d'exécution sur Linux? Peut-être l'agent de gestion est obligatoire pour localhost:
http://java.sun.com/j2se/1.5.0/docs/guide/management/faq.html#linux1
Sushicutta les étapes 4 à 7 peuvent être ignorées en ajoutant la ligne suivante à l'étape 3:
par exemple
Ajouter à démarrer paramètres:
Pour la redirection de port, se connecter en utilisant:
si votre hôte est un tremplin, il suffit de la chaîne du port de l'avant en exécutant la commande suivante sur l'étape de la pierre après ce qui précède:
L'esprit que le hostname=localhost est nécessaire afin d'assurer la jmxremote dit le rmi connexion à utiliser le tunnel. Sinon, il pourrait essayer de se connecter directement et a frappé le pare-feu.
ssh -L <JMX_port>:localhost:<JMX_port> <remote_user>@<remote_host>
sur la machine locale (3) Puis-je me connecter à distance JMX à l'aide de:jconsole <remote_host>:<JMX_port>
PROTIP:
Le RMI port sont ouvert à l'arbitraire portnr de l'. Si vous avez un pare-feu et ne veulent pas ouvrir les ports 1024-65535 (ou utiliser un vpn), alors vous devez faire ce qui suit.
Vous avez besoin pour réparer (comme dans le fait d'avoir un nombre connu) le Registre RMI et JMX/RMI les ports du Serveur. Vous faites cela en mettant un pot-de fichier (catalina-jmx-remote.jar c'est en extra) dans le répertoire lib-dir et la configuration d'un spécial auditeur sous serveur:
(Et bien sûr les habituels drapeaux pour l'activation de JMX
Voir: JMX Distance Cycle de vie de l'Auditeur à http://tomcat.apache.org/tomcat-6.0-doc/config/listeners.html
Alors vous pouvez vous connecter à l'aide de cette horrible URL:
Vérifier si votre serveur est derrière le pare-feu. JMX est de base sur le RMI, qui ouvrent les deux port quand ça commence. L'un est le registre de port par défaut est 1099, et peuvent être spécifiées par l'
com.sun.management.jmxremote.port
option. L'autre est pour la communication de données, et est aléatoire, qui est ce qui cause problème. Une bonne nouvelle, c'est que, à partir de JDK6, ce port aléatoire peut être spécifié par l'com.sun.management.jmxremote.rmi.port
option.Arriver JMX à travers le Pare-feu est vraiment dur. Le Problème est que la norme RMI utilise un deuxième aléatoire attribué port (à côté du RMI registry).
Nous avons trois solution de travail, mais tous les cas besoin d'un autre:
JMX via le Tunnel SSH avec proxy Socks, utilise la norme de RMI avec SSH magie
http://simplygenius.com/2010/08/jconsole-via-socks-ssh-tunnel.html
JMX MP (alternative à la norme RMI), n'utilise qu'un seul port fixe, mais besoin d'un pot sur le serveur et le client
http://meteatamel.wordpress.com/2012/02/13/jmx-rmi-vs-jmxmp/
Démarrer le Serveur JMX le code du formulaire, il est possible d'utiliser la norme RMI et de l'utilisation d'un fixe deuxième port:
https://issues.apache.org/bugzilla/show_bug.cgi?id=39055
Lors des tests de débogage/diagnostic distance JMX problèmes, tout d'abord essaie toujours de se connecter sur le même hôte que contient le MBeanServer (ex: localhost), à la règle de réseau et d'autres non-JMX des problèmes spécifiques.
Il y a déjà quelques grandes réponses ici, mais, il est un peu plus simple d'approche que je pense que c'est le partage de la valeur.
sushicutta l'approche est bonne, mais il est très manuel que vous avez pour obtenir le RMI Port à chaque fois. Heureusement, on peut contourner ce problème en utilisant un proxy SOCKS plutôt qu'explicitement l'ouverture du port de tunnels. L'inconvénient de cette approche est de JMX application que vous exécutez sur votre machine doit pouvoir être configuré pour utiliser un Proxy. La plupart des processus, vous pouvez le faire à partir de l'ajout de propriétés java, mais, certaines applications ne prennent pas en charge cette.
Suit:
Ajouter le JMX options pour le script de démarrage de votre télécommande de service Java:
Configurer un proxy SOCKS de connexion de votre ordinateur à distance:
Configurer votre local Java de surveillance de l'application pour utiliser le proxy SOCKS (localhost:9696). Remarque: Vous pouvez parfois le faire à partir de la ligne de commande, c'est à dire:
La suite travaillé pour moi (mais je pense que le port 2101 n'a pas vraiment contribuer à cet):
Je me connecte à partir d'un ordinateur distant à un serveur qui a Docker en cours d'exécution et le processus est à l'intérieur du conteneur. Aussi, j'ai arrêté de firewallD, mais je ne pense pas que c'était la question que j'ai pu telnet à 2100, même avec le pare-feu ouvert.
Espérons que cela aide.
Je suis en cours d'exécution JConsole/JVisualVm sur windows accrochage pour tomcat sous Linux Redhat ES3.
La désactivation du filtrage de paquets à l'aide de la commande suivante fait le tour pour moi:
où jconsole-hôte est le nom d'hôte ou l'adresse de l'hôte sur lequel JConsole s'exécute sur et jmxremote-port est le numéro de port défini pour com.soleil.de la gestion.jmxremote.port pour la gestion à distance.
Je suis en utilisant boot2docker pour exécuter des conteneurs docker avec Tomcat à l'intérieur et j'ai eu le même problème, la solution était de:
-Djava.rmi.server.hostname=192.168.59.103
docker run ... -p 9999:9999 ...
. À l'aide de différents ports ne fonctionne pas.Vous devez également vous assurer que votre nom de l'ordinateur résout l'adresse IP qui JMX est liaison; PAS localhost ni 127.0.0.1. Pour moi, il a aidé à mettre une entrée dans les hôtes qui définit explicitement cette.
Arriver JMX à travers le pare-feu n'est pas difficile du tout. Il y a un petit hic. Vous devez transmettre à la fois votre JMX port configuré ie. 9010 et l'un des ports dynamiques, son écoute sur ma machine, il a > 30000
Ce sont les étapes qui ont travaillé pour moi (debian derrière le pare-feu sur le serveur côté, a atteint plus de VPN à partir de mon Mac local):
vérifier ip du serveur
utilisation de la JVM params:
exécuter l'application
trouver le pid de l'exécution de processus java
vérifier tous les ports utilisés par JMX/RMI
ouvrir tous les ports à partir de l'étape 5 sur le pare-feu
Le tour est joué.
Afin d'apporter une contribution, c'est ce que j'ai fait sur CentOS 6.4 pour Tomcat 6.
Arrêt du service iptables
Ajoutez la ligne suivante à tomcat6.conf
De cette façon, j'ai été en mesure de se connecter à partir d'un autre PC à l'aide de JConsole.
Je suis en train de JMC pour exécuter l'Enregistreur de Vol (JFR) à profil NiFi sur un serveur distant qui n'offre pas un environnement graphique sur lequel exécuter des JMC.
Sur la base des autres réponses ici, et après beaucoup d'essais et d'erreur, voici ce que je suis en fournissant à la JVM (conf/bootstrap.conf)lorsque je lance NiFi:
Je n'ai mis cela dans /etc/hosts, bien que je doute qu'il est nécessaire:
Puis, lors du lancement de JMC, j'ai créer une connexion à distance avec ces propriétés:
D'ailleurs, si je clique sur la Coutume service JMX URL, je vois:
Ce fait enfin pour moi.