Подключить JVisualVM к удаленному экземпляру Wildfly?

Я пытаюсь подключить JVisualVM, работающий на моем локальном компьютере, к удаленному компьютеру, на котором работает сервер WildFly (точнее, версия 8.1.0).

Я не настраивал сервер WildFly сам, и я не знаю, кто это сделал, но я знаю, что могу войти в систему как администратор с моей локальной машины, указав в своем браузере:

https://[ip address of the remote machine]:9443/console

Обратите внимание, что это https, а не обычный http, и что порт для него был установлен на 9443 (я думаю, что по умолчанию используется 8080 или 9990 или что-то в этом роде... IDK, Я видел много номеров портов в Интернете, мне прямо сказали, что http отключен для этого сервера WildFly).

Я могу подключиться к удаленной машине по SSH. Я могу перейти в каталог bin для WildFly и запустить jboss-client.sh. Мне нужно подключиться к порту 9999 (думаю, для этого используется порт 9990 по умолчанию?)

Я скопировал jboss-client.jar (под bin/client) на свою локальную машину и запустил JVisualVM из командной строки следующим образом:

.\jvisualvm.exe -cp:a C:\[path to]\jboss-client.jar

Запускается нормально. File > Add Remote Host: Потом я ввел IP. OK. Я щелкнул его правой кнопкой мыши в разделе Remote в дереве и выбрал Add JMX Connection. Я вошел

service:jmx:http-remoting-jmx://[ip]:9999

Я отметил, что хочу использовать учетные данные безопасности, и ввел имя пользователя и пароль. Отмечено, чтобы сохранить учетные данные безопасности. Оставил флажок «Не требовать SSL-подключения». Нажмите OK. Он сразу выплюнул сообщение

Не удается подключиться к admin@service:jmx:http-remoting-jmx://[ip]:9999 с помощью service:jmx:http-remoting-jmx://[ip]:9999

Я также пробовал вместо этого порт 9443, 9990 и 8080. Ни один из них не работал. Я пробовал https вместо http в имени протокола. Это тоже не сработало.

Что мне не хватает? Как получается, что я могу получить доступ к консоли и подключиться к jboss-client.sh, но не могу использовать JVisualVM? Есть ли какой-нибудь журнал, который я могу использовать где-нибудь, чтобы увидеть, что не так? Может быть, кто-то может указать конфигурацию, которую я где-то пропустил?

Не уверен, важно это или нет, но на моей локальной машине установлена ​​Windows 10 с установленным JDK8. Сервер WildFly использует Java 6 на CentOS 6.3.


person ArtOfWarfare    schedule 29.04.2016    source источник
comment
Вы используете WildFly или JBoss EAP 6? WildFly 8+ — это контейнер Java EE 7, для которого требуется Java 7+.   -  person James R. Perkins    schedule 02.05.2016
comment
@JamesR.Perkins - На сервере определенно работает WildFly 8.1.0. Я проверю версию Java, но я уверен, что это 6...   -  person ArtOfWarfare    schedule 02.05.2016
comment
@JamesR.Perkins - Хорошо. Оказывается, на сервере установлены и Java 6, и Java 8. WildFly 8.1.0 использует установку Java 8... Я не уверен, почему на сервере отдельно установлена ​​Java 6. В любом случае, надеюсь, что разъяснение поможет вам помочь мне. :)   -  person ArtOfWarfare    schedule 02.05.2016
comment
Прослушивает ли порт управления доступный IP-адрес? Например, вы можете подключиться с CLI? Порт FWIW 9990 является портом управления по умолчанию для WildFly.   -  person James R. Perkins    schedule 03.05.2016
comment
@JamesR.Perkins - Да, я могу подключить CLI с моего локального компьютера с Windows к удаленному серверу через порт 9999. Кроме того, я могу запустить JVisualVM на удаленном сервере и подключить его к собственному экземпляру Wildfly. Этого может быть достаточно для меня... было бы предпочтительнее, чтобы он работал удаленно, но если это лучшее, что я могу сделать... может быть, я смогу с этим смириться?   -  person ArtOfWarfare    schedule 03.05.2016


Ответы (4)


Вам нужно добавить jboss-client.jar (или jboss-cli-client.jar) к пути к классу для JVisualVM. Библиотеку можно найти в каталоге bin/client установки WildFly.

Я использовал следующую команду, чтобы добавить библиотеку в путь к классу.

jvisualvm --cp:a ~/servers/wildfly-10.0.0.Final/bin/client/jboss-client.jar

Затем я использовал service:jmx:remote+http://[ip]:[port] и смог подключиться.

person James R. Perkins    schedule 03.05.2016
comment
Вау это оскорбительно. Я приложил усилия, чтобы написать и отформатировать все, что я сделал, но вы не удосужились это прочитать. - person ArtOfWarfare; 03.05.2016
comment
Извините, это не было целью оскорбить. Одно различие, которое я заметил в наших командах, может быть, просто в Windows и Linux, но вы использовали -cp, а когда я запустил справку, он использовал --cp. Тот факт, что он немедленно возвращается, похоже, указывает на то, что он не может найти протокол. По крайней мере, это мое лучшее предположение. - person James R. Perkins; 03.05.2016
comment
Хорошо, я попробовал с --cp вместо -cp. Нет разницы. Я пробовал с remote+http вместо http-remoting-jmx. Тоже никакой разницы. - person ArtOfWarfare; 03.05.2016
comment
Я не могу вспомнить, но регистрирует ли VisualVM исключения? Немедленное возвращение мне кажется подозрительным. Присоединяйтесь на freenode IRC #wildfly или в HipChat hipchat.com/gSW9XYz69. FWIW http-remoting-jmx должен работать нормально. remote+http - это просто замена этому. - person James R. Perkins; 03.05.2016

вы пропустили запуск команды jstatd на удаленном хосте, эта небольшая программа является сервером RMI, который может подключаться от клиента к удаленному хосту, хотя вы используете соединение jmx, для этого соединения используется протокол jmxrmi.

поэтому сначала на удаленном хосте создайте имя файла как security.policy, содержащее:

grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};

Конечно, вы должны в разделе файлов для Linux указать явный путь, а затем создать этот файл, поместив его в каталог bin jdk.home

то вы должны запустить эту команду на удаленном хосте $JAVA_HOME/bin/jstatd -J-Djava.security.policy=путь к /security.policy -J-Djava.rmi.server.hostname=удаленный IP-адрес -J-Djava.net .preferIPv4Stack=true, тогда вы можете подключиться к серверу с правильными настройками.

person kayvan jam    schedule 01.10.2016

Включите jboss-cli-client.jar и jboss-client.jar в папку \lib\visualvm\platform\lib и перезапустите jvisualvm, чтобы получить новые файлы jar.

person satish    schedule 03.10.2017

Я не знаю, есть ли у кого-то еще (все еще) такая же проблема (Wildfly10 на удаленной машине, где консоль управления доступна по адресу 9443 с HTTPS). Следующее сработало для меня.

Для ssh-соединений:

  1. Запуск jvisualvm с файлом jboss-client.jar
jvisualvm --cp:a @JBOSS_HOME/bin/client/jboss-client.jar
  1. Используя следующую строку подключения:
service:jmx:remote+https://remote-server:9443

ПРИМЕЧАНИЕ. Здесь я использовал remote+https

  1. Введите имя пользователя и пароль

Надеюсь это поможет.

person office.aizaz    schedule 01.07.2019