2014-01-28 5 views
0

У меня есть приложение Grails 2, развернутое на Tomcat 7, работающее на экземпляре Amazon EC2 Ubuntu. Каковы минимальные шаги, необходимые для удаленного отладки/мониторинга приложения через SSH-соединение, например, с помощью jvisualvm (который поставляется с JDK)?Отладка удаленного приложения Grails с jvisualvm

ответ

0

Я нашел рабочее решение, документируя его для последующего использования. Обратите внимание, что этот пример не использует аутентификацию и SSL на конце Tomcat. При небольшой настройке это должно применяться и к экземплярам, ​​отличным от Ubuntu.

1. На удаленной машине, включите JMX, добавив к JAVA_OPTS сервера Tomcat:

В /etc/default/tomcat7, добавлять существующие JAVA_OPTS:

JAVA_OPTS = "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1098" 

Затем перезапустите Tomcat, чтобы применить изменения:

sudo service tomcat7 restart

2.О месте аль машина:

SSH к удаленной машине и создать туннель SOCKS в местном порту 10000. (Это будет открыть нормальный вид SSH запрос на удаленную машину, но и печатать дополнительные журналы отладки в сеансе.)

ssh -v -D 10000 <hostname>

Запустить jvisualvm. Параметры для дополнительной памяти и делать jvisualvm знают скомпилированных классов Grails, с целевых/классов относительно каталога Grails приложения:

jvisualvm -J-Xms1G -J-Xmx1G -cp:a target/classes

Настройка jvisualvm использовать прокси-сервер, который мы создали:

Prefences > Network 
Add SOCKS proxy: hostname: localhost, port: 10000 
No Proxy hosts: (make empty) 

Здесь я использую «Локальное соединение», чтобы избежать конфликта имен хоста между локальными и удаленными подключениями.

Right-click on Local > "Add JMX connection" > localhost:1098 

Все, что вам нужно - теперь вы сможете контролировать свое удаленное приложение Grails.