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