top bar

글 목록

2015년 8월 31일 월요일

[Performance] VisualVM + jstatd 연동을 통한 remote tomcat instance 모니터링

jstatd



 jstatd tool은 일종의 RMI server application이다. 원격지의 JVMs을 모니터링하거나, 원격지의 모니터링 툴이 로컬에 돌고있는 JVMs 에 접근할 수 있도록 해주는 인터페이스를 제공한다. 자세한 사항은 아래를 참고하자

http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstatd.html


Steps



연동 절차는 의외로 간단하다.

1) 원격지의 tomcat이 구동되고있는 서버에서 jstatd를 실행한다
$ jstatd
하지만 다음과같은 에러가 떨어질 것이다.
Could not create remote object
access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
        at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
        at java.security.AccessController.checkPermission(AccessController.java:559)
        at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
        at java.lang.System.setProperty(System.java:783)
        at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)
따라서 'jstatd.all.policy' 라는 파일을 만들고 다음과 같은 내용을 입력한다
grant codebase "file:/home/asuraiv/apps/jdk/lib/tools.jar" {
        permission java.security.AllPermission;
};
해당 파일을 저장후 다시 아래와 같이 명령어를 입력하자.
$ jstatd -J-Djava.security.policy=/경로/jstatd.all.policy &

2) VisualVM 을 실행하여 Remote Host를 추가한다















위의 창에서 'Host name'을 해당 서버의 ip주소를 입력한후 'OK'를 누르면 아래와 같이 해당 서버에서 돌고있는 Java 인스턴스의 목록이 노출된다.



하지만 치명적인 단점이 있는데, 바로 cpu와 memory의 모니터링은 불가하다는 것이다.
이는 JMX를 사용함으로서 어느정도 극복할 수 있는데, 다음에 포스팅 해보겠다.


댓글 없음:

댓글 쓰기