Удаленный мониторинг с помощью visualvm и JMX

Я хотел бы отслеживать удаленно запущенное приложение java (spring boot) с помощью jvisualvm (или jconsole). При запуске локально я могу видеть управляемый beans как в jvisualvm, так и в jconsole. При дистанционном запуске я не могу подключиться. Я попробовал это с несколькими различными java-процессами (например, с spring xd). Поиск ответов здесь на SO и на Google не помог.

Это мои JAVA_OPTS (на удаленном хосте):

$ echo $JAVA_OPTS
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.59.99

Затем я просто запускаю программу следующим образом (это для spring xd, но я испытываю ту же проблему с другими java-программами).

$ bin/xd/xd-singlenode

Серверный процесс, похоже, подбирает параметры:

$ ps -ef | grep single
vagrant  22938 19917 99 06:38 pts/2    00:00:03 /usr/lib/jvm/java-8- oracle/jre/bin/java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.59.99 -Dspring.application.name=admin -Dlogging.config=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config///xd-singlenode-logger.properties -Dxd.home=/home/vagrant/spring-xd-1.1.0.RELEASE/xd -Dspring.config.location=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config// -Dxd.config.home=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config// -Dspring.config.name=servers,application -Dxd.module.config.location=file:/home/vagrant/spring-xd-1.1.0.RELEASE/xd/config//modules/ -Dxd.module.config.name=modules -classpath (...)

Версия java на удаленном хосте (ubuntu linux vm):

$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

Версия java на локальном компьютере (Mac OS) несколько отличается:

$ java -version    
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

В jvisualvm я добавляю удаленное соединение следующим образом (пробовал как с ssl-подключением, так и без него):

enter image description here

Это сообщение об ошибке jvisualvm дает мне:

Error Message given by jvisualvm

Я могу подключиться с локального хоста к удаленному хосту с помощью команды telnet 192.168.59.99:9010, когда удаленный процесс запущен, поэтому это не похоже на проблему с брандмауэром.

Любая помощь очень ценится.

Ответ 1

Используйте следующие параметры JVM:

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.59.99

В консоли Jconsole для подключения:

service:jmx:rmi:///jndi/rmi://192.168.59.99:9010/jmxrmi