JMX(Java Management Extensions)는 Java 애플리케이션의 모니터링과 관리를 위한 표준 API입니다. JMX를 사용하면 애플리케이션의 상태를 실시간으로 모니터링하고, 런타임 시에 애플리케이션을 동적으로 제어할 수 있습니다.
이번 포스트에서는 JMX를 사용하여 리모트로 애플리케이션을 모니터링하는 방법에 대해 알아보겠습니다.
JMX 리모트 연결 설정
먼저, JMX 리모트 연결을 위해 애플리케이션의 JVM 실행 옵션을 설정해야 합니다. 다음과 같이 -Dcom.sun.management.jmxremote
옵션을 추가해주세요.
java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=<port> \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar myapp.jar
위 명령어에서 <port>
는 JMX 연결에 사용될 포트 번호입니다. 필요에 따라 포트 번호를 변경하고, 인증과 SSL 설정을 변경해주세요.
JConsole로 연결하기
JConsole은 JMX를 사용하여 Java 애플리케이션을 모니터링하는 데 사용되는 GUI 도구입니다. 다음 명령어를 사용하여 JConsole을 실행할 수 있습니다.
jconsole <hostname>:<port>
<hostname>
은 애플리케이션이 실행 중인 호스트 이름 또는 IP 주소를, <port>
는 앞서 설정한 JMX 포트 번호를 입력합니다.
JConsole을 실행하면 애플리케이션의 MBeans(Monitorable Beans) 목록과 해당 MBeans의 속성 및 연산을 확인할 수 있습니다. 또한, JConsole을 통해 애플리케이션의 스레드, 메모리 사용량 등을 모니터링할 수도 있습니다.
VisualVM으로 연결하기
VisualVM은 JDK에 포함된 다용도 프로파일링 도구로, JMX를 사용하여 Java 애플리케이션을 모니터링할 수도 있습니다.
- JDK를 설치한 후,
visualvm
커맨드를 실행하여 VisualVM을 실행합니다. - VisualVM의 왼쪽 패널에서 “Remote” 탭을 선택합니다.
- “Add Remote Host” 버튼을 클릭하고, 애플리케이션의 호스트 이름과 포트 번호를 입력합니다.
- 연결된 애플리케이션의 MBeans 목록과 각 MBeans의 속성 및 연산을 확인할 수 있습니다.
VisualVM은 JConsole보다 더 다양한 모니터링 기능을 제공하므로, 보다 상세한 애플리케이션 모니터링이 필요한 경우에 유용하게 사용할 수 있습니다.
마무리
JMX를 사용하여 애플리케이션을 리모트로 모니터링하는 방법에 대해 살펴보았습니다. JMX를 통해 애플리케이션의 상태를 실시간으로 모니터링하고, 필요한 경우 제어할 수 있습니다.
더 자세한 내용은 Oracle 공식 문서를 참조할 수 있습니다.