Comment accéder à une interface JMX dans le panneau de l'extérieur?

Je suis en train de surveiller à distance une machine virtuelle java s'exécutant dans le panneau. La configuration ressemble à ceci:

  • machine 1: exécute une JVM (dans mon cas, l'exécution de kafka) dans le menu fixe sur une machine ubuntu; l'adresse IP de cette machine est 10.0.1.201; l'application en cours d'exécution dans le menu fixe est à 172.17.0.85.

  • machine 2: pistes de JMX surveillance

Remarque que quand je lance JMX de surveillance de la machine 2, il ne fonctionne pas avec une version de l'erreur suivante (remarque: la même erreur se produit quand je lance jconsole, jvisualvm, jmxtrans, et le nœud-jmx/mnp:jmx):

La trace de la pile en cas d'absence ressemble à quelque chose comme ce qui suit pour chacun des JMX outils de suivi:

java.rmi.ConnectException: Connection refused to host: 172.17.0.85; nested exception is
    java.net.ConnectException: Operation timed out
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
    (followed by a large stack trace)

Maintenant la partie intéressante, c'est quand je lance le même outils (jconsole, jvisualvm, jmxtrans, et le nœud-jmx/mnp:jmx) sur la même machine que celle qui est en cours d'exécution docker (machine 1 à partir de ci-dessus) JMX de surveillance fonctionne correctement.

Je pense que cela donne à penser que mon JMX port est actif et fonctionne correctement, mais quand je l'execute JMX de surveillance à distance (à partir de la machine 2), il ressemble à la JMX outil ne reconnaît pas l'interne docker IP (172.17.0.85)

Ci-dessous sont pertinentes (je pense) réseau d'éléments de configuration sur la machine 1, où JMX de surveillance de travaux (notez le menu fixe ip, 172.17.42.1):

docker0   Link encap:Ethernet  HWaddr ...
      inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
      inet6 addr:... Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:6787941 errors:0 dropped:0 overruns:0 frame:0
      TX packets:4875190 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:1907319636 (1.9 GB)  TX bytes:639691630 (639.6 MB)

wlan0     Link encap:Ethernet  HWaddr ... 
      inet addr:10.0.1.201  Bcast:10.0.1.255  Mask:255.255.255.0
      inet6 addr:... Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:4054252 errors:0 dropped:66 overruns:0 frame:0
      TX packets:2447230 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:2421399498 (2.4 GB)  TX bytes:1672522315 (1.6 GB)

Et c'est le réseau concerné les éléments de configuration sur la machine distante (machine 2) à partir de laquelle je suis JMX erreurs:

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=3<RXCSUM,TXCSUM>
    inet6 ::1 prefixlen 128 
    inet 127.0.0.1 netmask 0xff000000 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    nd6 options=1<PERFORMNUD>

en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether .... 
    inet6 ....%en1 prefixlen 64 scopeid 0x5 
    inet 10.0.1.203 netmask 0xffffff00 broadcast 10.0.1.255
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: active
  • J'ai créé un projet GitHub qui contient un prêt à aller de mise en œuvre de JMX à partir d'un conteneur Docker. Il contient un Dockerfile avec une bonne entrypoint.sh, et un docker-compose.yml pour un déploiement facile.
InformationsquelleAutor Eric Broda | 2015-07-07