Удаленные JMX-соединения отправляются на локальный хост

Я пытаюсь настроить удаленный мониторинг JMX для процесса Java. Вот варианты, которые я даю JVM для запуска:

JAVA_OPTS="-server -Xms1G -Xmx1G -XX:MaxPermSize=512m "
JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=57011 -Dcom.sun.management.jmxremote.authenticate=false"
JMX_OPTS="$JMX_OPTS -Dcom.sun.management.jmxremote.ssl=false -Dfoo.jmx=true -Dfoo.jmx.detailed=true"
JMX_OPTS="$JMX_OPTS -Djava.rmi.server.host=192.168.9.121"
LOG_OPTS="-Dfoo.logging.type=log4j -DLOGDIR=${SERVERDIR}/logs"
ASD_OPTS="-Dfoo.conf.file=file:${PROPFILE} -cp ${CLASSPATH} foo"
/usr/bin/nohup ${JAVA_EXE} $JAVA_OPTS $JMX_OPTS $LOG_OPTS $ASD_OPTS 1>${SERVERDIR}/service.log 2>&1 &

Я могу подключиться с помощью Jconsole локально, но когда я подключаюсь с удаленного хоста, я получаю следующую ошибку (для краткости вырезано)

Java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 
java.net.ConnectException: Connection refused: <snip>

Таким образом, несмотря на явное объявление, связывающее с 192.168.9.121 (-Djava.rmi.server.host), JMX по-прежнему привязывается к интерфейсу обратной связи удаленной системы.

Единственный обходной путь, который я нашел, - это изменить мой /etc/hosts, чтобы установить полное доменное имя системы следующим образом:

127.0.0.1       localhost localhost.localdomain
192.168.9.121   my.servers.fqdn.com

Исходя из того факта, что каждая система Linux, которую я когда-либо видел, имеет my.servers.fqdn.com, указывающий на 127.0.0.1, я могу только представить странные проблемы с изменением этого.

Как я могу заставить удаленный мониторинг JMX работать без этого взлома?

Система CentOS 6, Java 1.6.0_35, брандмауэр отключен для тестирования.

0 ответов

У меня эта проблема точно... Я использовал tomcat 9.0.19 и сервер Centos7... наконец, я добавляю следующие свойства внутри path/to/tomcat/bin/setenv.sh:

CATALINA_OPTS="$CATALINA_OPTS 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=1099 
-Dcom.sun.management.jmxremote.rmi.port=1099 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Djava.rmi.server.hostname=192.168.1.20 
-Djmx.rmi.registry.port=1099 
-Djmx.rmi.port=1099 
" 

export CATALINA_OPTS

и перезапусти свой кот...

192.168.1.20 - мой локальный сервер, а 1099 - мой порт jmx. эта конфигурация работала для меня.

Другие вопросы по тегам