Java JMX를 통해 자원 모니터링하기

2019. 5. 24. 21:09Java/Tip

 이번에는 JMX라는 확장 라이브러리를 이용 JConsole, VisualVM 기반으로 톰캣에 대한 자원내역을 분석 해보는 방법을 알아 보려고 한다.

작업을 하다보면 실제로 얼마나 자원을 효율적으로 쓰고있는지 언제 과부화가 되는지 정도를 GUI를 통해 체크하고 싶을때가 있는데 그런 우리들에게  JMX라는 기술을 Java에서 제공한다는걸 알고 공부해 보았다.  

 

Java 7버전 이상에서부터 제공하는 JMX 모듈을 통해 우리는 Tomcat에 대한 자원 현황을 모니터링 할 수 있게 되었는데 준비단계부터 하나씩 순서를 밟으며 공부해보자.

 

 

 

기본준비

1. JMX 다운로드 및 모듈반영 (톰캣 7 이상의 버전에서 제공)

* 다운로드 받은 파일은 Tomcat HOME 내의 lib 폴더에 넣는다.

 

2. TomcTomcat 서버에 JMX 모둘 로드 셋팅 1/2 단계

- CATALINA_OPTS 항목에 아래의 항목을 등록 하며 이때 방법은 다양하지만 아래와 같이 2가지의 방법으로 할 수 있다. 아래 옵션은 패스워드나 기타 정보 없이 접근을 위한 방법임

 

Djava.rmi.server.hostname 항목은 해당 서버의 IP 정보를 셋팅 (필수) 예를 들어 127.0.0.1로 넣게되면 접근이 되지 않는다.

 

[방법1]

 

Tomcat HOME 내의 BIN 폴더내에서 setenv.sh 를 생성 하는법 해당 파일을 생성하게 되면 Tomcat 이 구동시에 setenv.sh 파일을 동시에 호출 하게 된다.

 

[방법2]

 

catalina.sh 내에서 직접 옵션을 추가 하는방법으로 JAVA_OPTS의 위치를 찾는다.

그리고 아래와 같이 적용한다.

 

3. Tomcat 서버에 JMX 모둘 로드 셋팅 2/2 단계

 

톰캣이 시작될때 라이브러리 모듈 로딩을 적용이후 Tomcat 리스너에 추가 정보를 아래와 같이 반영하는데

 

이때 rmiRegistryPortPlatform 포트는 실제 접근하게 될 원격지 정보이며 기존 운영 포트와 충돌이 나지 않도록 설정을 하면 된다.

4. Tomcat 재기동

 

 

Jconsole 로 연결하기

1. jconsole 을 구동한다.

2. 프로토콜이 SSL 이 아니면 다음과 같은 경고를 내보낸다. Insecure 를 선택하여 연결을 진행하자.

3. 다음과 같이 JMX 관리 창이 뜨며 VM 관련한 다양한 정보를 모니터링할 수 있다.