Добавление удаленных виртуальных машин в 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
- Пароль: пароль