Поиск по этому блогу

среда, 15 января 2014 г.

JMX мониторинг удаленного сервера glassfish

     Многие знают что можно мониторить любой процесс сервера 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 вопроса остаются открытыми. Если кто-то знает решение, отпишите в комментариях.
 

Комментариев нет:

Отправить комментарий