Многие знают что можно мониторить любой процесс сервера Glassfish, удаленного или локального, используя JMX (Java Management Extensions) клиенты такие, как
jconsole или jvisualvm. При мониторинге локального сервера никаких проблем не возникает, но только стоит попытаться подключиться к удаленному серверу возникают проблемы. И сегодня я опишу как решить некоторые из них.
При соединении с сервером glassfish 3-ей или 4-ой версии через jconsole вы получите следуюшую ошибку:
Чтобы избавиться от этой ошибки, вам необходимо зайти в админку сервера glassfish и выбрать в конфигурациях тот конфиг сервера, который вы используете. По умолчанию это server-config:
Далее идем в JVM Settings и переходим на вкладку JVM Options:
Здесь мы должны добавить 4 опции (на рисунке выше они уже добавлены):
-Djava.rmi.server.hostname=hostname
-Dcom.sun.management.jmxremote.port=8686
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Вместо hostname надо указать название своего хоста и если необходимо поменять порт по умолчанию. После добавления и сохранения данных опций, необходимо перезагрузить сервер приложений.
ВАЖНО! Перед тем как подключаться через jconsole или visualvm, необходимо отключить фаервол. Добавить порт в исключения фаервола недостаточно.
ВАЖНО! На машине, с которой будете подключаться к серверу приложений, ip адрес сервера должен резолвиться в hostname, указанный в jvm опциях.
Как видно из jvm опций мы используем соединение без аутентификации, что нехорошо. Я пробовал следующее:
- поменял значение -Dcom.sun.management.jmxremote.authenticate на true.
переименовал файл $JAVA_HOME/jre/lib/management/jmxremote.password.template
в jmxremote.password
добавил пользователя и пароль
поменял владельца файла jmxremote.password на того же,
под кем запускается glassfish
поменял права на этот файл на 666
перезапустил glassfish и ... ничего не получилось
Также очевидно, что отключать каждый раз фаервол, когда нам надо помониторить сервер приложений, не очень хорошая мысль. В интернете есть вариант добавить jvm опцию:
-Dcom.sun.aas.jconsole.server.cbport=
%port%
Но мне это тоже не помогло. После перезапуска сервера, добавления правил в фаервол и включения последнего, соединение установить не удалось.
Так что последние 2 вопроса остаются открытыми. Если кто-то знает решение, отпишите в комментариях.
Так что последние 2 вопроса остаются открытыми. Если кто-то знает решение, отпишите в комментариях.
Комментариев нет:
Отправить комментарий