Добавление удаленных виртуальных машин в Java VisualVM

Если я открою jvisualvm и перейти к File >> Add Remote Host Мне предлагается создать новую запись удаленного сервера. Я ввожу имя хоста myapp01.example.org, а затем я вижу, что сервер отображается под Remote раздел Applications дерево на левой стороне. Когда я щелкаю правой кнопкой мыши по этому серверу и нажимаю Add JMX ConnectionЯ вижу следующий диалог:

введите описание изображения здесь

Допустим, у меня запущено приложение Java (WAR развернуто на Tomcat) на myapp01.example.org:8443, Для SSH на сервер я использую имя пользователя skroob и пароль 12345 (эй, это комбинация в моем багаже!)

ssh skroob@myapp01.example.org
skroob@myapp01.example.org's password: 12345

Когда я заполняю диалог следующим образом:

  • Подключение: myapp01.example.org:8443
  • Имя пользователя: skroob
  • Пароль: 12345

Я получаю следующую ошибку:

Невозможно подключиться к skroob@myapp01.example.org:8443 с использованием службы:jmxLrmi:///jndi/rmi://myapp01.example.org:8443/jmxrmi

Я полагаю, что это может быть потому, что я не настраиваю JMX для показа на самом Tomcat. Или, может быть, я просто ввел неправильную информацию. Возможно оба. В любом случае:

  • Что мне нужно сделать, чтобы настроить это с правильной информацией JMX?
  • Что мне нужно сделать, чтобы правильно настроить jstatd?

1 ответ

Решение

Это не то, как указано соединение JMX. Для tomcat лучший способ - создать файл bin/setenv.sh. Это лучше, потому что сценарии Apache уже настроены на его поиск и вызов, если он есть.

Это место, где вы должны установить любые параметры установки.

Вы далеко пойдете с чем-то вроде этого:

#
# PORT for debug
export JPDA_ADDRESS='8000'

echo start with 'jpda start' parameters to enable debugging.  Tomcat will listen on $JPDA_ADDRESS

CATALINA_OPTS="\
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=1299 \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password \
-Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access \
-Dcom.sun.management.jmxremote.ssl=false 

jmxremote.access:

monitorRole readonly
controlRole readwrite

jmxremote.password: этот файл ДОЛЖЕН БЫТЬ ЧИТАТЬ ТОЛЬКО по идентификатору, который запускает Tomcat или JMX НЕ РАБОТАЕТ! т.е. chmod 400 jmxremote.password

monitorRole  readpass
controlRole  changepass

В основном вы настраиваете 2 идентификатора пользователя JMX. Тот, который может получить доступ к открытым геттерам. Другой, который также может получить доступ к сеттерам и произвольным методам Mbean. На практике вы обычно хотите поставить последний, чтобы вы могли делать больше, чем просто смотреть.

ТАК.... в твоем диалоге выше становится

  • Соединение: myapp01.example.org:1299
  • Имя пользователя: controlRole
  • Пароль: пароль
Другие вопросы по тегам