Назад | Перейти на главную страницу

Удаленные JMX-соединения отправляются на localhost

Я пытаюсь настроить удаленный мониторинг 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, межсетевой экран отключен для тестирования.

У меня именно эта проблема ... Я использовал сервер 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. эта конфигурация сработала для меня.