[java] JMX 애플리케이션을 리모트로 모니터링하기

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 애플리케이션을 모니터링할 수도 있습니다.

  1. JDK를 설치한 후, visualvm 커맨드를 실행하여 VisualVM을 실행합니다.
  2. VisualVM의 왼쪽 패널에서 “Remote” 탭을 선택합니다.
  3. “Add Remote Host” 버튼을 클릭하고, 애플리케이션의 호스트 이름과 포트 번호를 입력합니다.
  4. 연결된 애플리케이션의 MBeans 목록과 각 MBeans의 속성 및 연산을 확인할 수 있습니다.

VisualVM은 JConsole보다 더 다양한 모니터링 기능을 제공하므로, 보다 상세한 애플리케이션 모니터링이 필요한 경우에 유용하게 사용할 수 있습니다.

마무리

JMX를 사용하여 애플리케이션을 리모트로 모니터링하는 방법에 대해 살펴보았습니다. JMX를 통해 애플리케이션의 상태를 실시간으로 모니터링하고, 필요한 경우 제어할 수 있습니다.

더 자세한 내용은 Oracle 공식 문서를 참조할 수 있습니다.