2013-12-17 4 views
2

Используя VisualVM, я могу видеть два типа подключения удаленного хоста.Не удается подключиться к удаленному хосту JMX

  1. jstatd

  2. JMX

Так что я пытаюсь использовать JMX, я последовал за многочисленные уроки, но не повезло до сих пор.

В настоящее время есть мой рабочий стол и один Linux-модуль с запущенным приложением Java-сервера. Я пытаюсь настроить клиент VisualVM на рабочем столе, чтобы увидеть приложение java, запущенное в окне linux.

Я добавил следующий скрипт JAVA_OPTS в скрипт start.sh для приложения java на linux.

JMX_PORT="-Dcom.sun.management.jmxremote.port=33333" <-- allowed on firewall 
JMX_SSL="-Dcom.sun.management.jmxremote.ssl=false" 
JMX_AUTH="-Dcom.sun.management.jmxremote.authenticate=false" 
JMX_IP="-Djava.rmi.server.hostname=xx.xx.xx.xx" <-- where linux box NAT ip. 

Java приложения на Linux был успешно запущен с опциями JMX добавлены start.sh, я полагаю, так как нет никакой ошибки или предупреждения.

Когда я попытался добавить JMX-соединение, он говорит, что не может подключиться к нему.

Я проверил, заблокирован ли 33333, это не так, я смог подключиться к этому ip с портом, используя telnet с моего рабочего стола.

Есть ли другой порт, который я должен открыть для VisualVM?

Чтобы использовать JMX, есть ли какая-либо другая настройка, которую я должен сделать, например, RMI Registry server или создание файла политики jstatd и запуск jstat daemon ?? Я думал, что это только для подключения jstatd, поэтому я не преследовал этот учебник.

+1

Я бы просто использовал туннель ssh, самый простой и безболезненный –

+1

@RC. Спасибо за комментарий, но порт не является основной проблемой здесь, так как это очень закрытая сеть, я должен следовать этим конкретным процедурам. Суть в том, что у меня нет четкого понимания того, как работает JMX-соединение и VisualVM. – handicop

ответ

1

У меня не было другого понятия, как я могу это исправить, поэтому с помощью туннеля ssh.

  1. Я добавил параметр запуска jmx в свой скрипт запуска приложения java на удаленном хосте. (jmxremote.port = 33300, ssl to false, аутентифицировать false, имя хоста.)
  2. ssh -D 33300 на рабочем столе для удаленного хоста.
  3. начала jvisualvm используя system_socks_proxy = локальный: 33300 -J-Djava.net.useSystemProxies = истинный

Теперь удаленный хост успешно добавлен с помощью добавления нового соединения JMX на VisualVM.

ref. VisualVM over ssh

+0

Мне не нравится туннель ssh из-за проблем [TCP-over-TCP] (http://sites.inka.de/bigred/devel/tcp-tcp.html).С помощью openvpn вы используете UDP и избегаете проблем TCP-over-TCP. – LinuxLuigi

2

Самый простой способ - использовать туннель openvpn между сервером и рабочим столом, чем вы избавляетесь от брандмауэра вещами NAT. Я делаю это так, и это работает как шарм.

Смежные вопросы