본문 바로가기
Programing Language/Java

[Java] JMX, JMX MBean이란 ?

by tangle96 2022. 4. 15.

 

오라클자바커뮤니티 유튜브 발췌

출처 : https://www.youtube.com/watch?v=6kjGpSU_aJE 

 

 


 

 

1.JMX란 ? 

 

1.JMX(Java Management Extensions)은 Java 응용 프로그램의 모니터링과 관리기능을 제공합니다.

 

2.웹사이트를 통해 원격의 Web Server, was, db등의 상태 모니터링, Start, Stop등의 기능, 디바이스 상태, 각종 서비스제어 등의 기능을 제공할 수 있습니다.

 

3.JMX 기술을 사용하여 리소스를 관리하려면 Java 프로그래밍 언어로 리소르를 관리해야하는데 MBeans로 알려진 Java 객체를 사용하여 리소스를 관리합니다.

 

 

JMX의 MBean은 JMX Agent를 통해 관리되는 응용프로그램 또는 시스템 리소스 입니다.

표준 MBean dms XXXMBean이라는 Java 인터페이스와 해당 인터페이스를 구현하는 XXX라는 java클래스를 작성하여 정의 됩니다.

 

다음 규칙을 따라야합니다.

-리소스의 상태는 getter와 setter를 통해 완전히 설명

-MBean은 최소한 하나의 pbulci 생성자를 제공

 

 

 


2. JMX 아키텍처 3레벨

 

  • Remode Management(Distributed) Tier

-리소스나 서비스를 관리하는 응용프로그램이 JMX에이전트와 통신 할 수 있도록 하는 구성 요소를 포함합니다.

-클라이언트가 접근 가능한 JMX Agent를 만드는 프로토콜 Adapter 와 Connector를 정의합니다.

-MBeanServer는 프로토콜 Adaptor와 Connector를 이용하여 클라이언트에서 JMX Agent에 액세스 할 수 있도록 합니다.

-프로노콜 Adaptor 및 표준 Connector를 사용하녀 JMX Agent의 Java vm( 외부에 있는 원격 관리 애플리케이션 (클라이언트) 에서 JMX Agent에 접근할 수 있습니다. 

 

 

  • Instrumentation Tier

- MBean과 관리 가능한 리소스들을 포함합니다.

- 애플리케이션, 장치 또는 서비스와 같은 관리되는 MBean이라는 Java 개체를 사용하여 관리됩니다.

- MBean은 원격 관리 및 모니터링을 위한 jmx agent를 통해 관리됨

 

 

  • AgentTier

- JMX Agent는 리소스를 직접 제어하고 원격 관리 애플리케이션(클라이언트)에서 사용할 수 있도록 하는 표준 Agent입니다.

- JMX Agent의 핵심 구성 요소는 MBean이 등록된 서버 인 MBeanServer로 MBean의 등록 관리하기 위한 서비스들을 포함하고 있습니다. 즉 MBean을 위한 레지스트리 이며, 모든 클라이언트는 MBeanServer를 통해야 MBean을 다룰 수 있습니다.

- JMX Agent는 리소스를 제어하고 클라이언트에서 접근할 수 있는 표준 Agent입니다

 

 

클라이언트는 클라이언트나 커넥트를 통해서 에이전트에 접근하는데 핵심 컴포넌트는 MBeanserver

클라이언트가 주소로 부르기쉽게 서비스로 만들어둔것

 

 


3. Visual VM을 통한 JMX 모니터링

 

필자의 jdk1.8.0_321 > bin 폴더에서

jvisualvm.exe 을 확인할 수 있었다.

JVM을 모니터링 하기 위해 만들어진 툴이다.

 

실행 후 상단의 메뉴에서 Tools - Plugin을 클릭하면

 

위 화면이 나타나는데 최초로 실행 했다면 Check for Updates를 통해 plugin을 업데이트 해주고

Installed에서 확인해주자

Install이 끝난후 다시 실행하면

 

VM이 작동중인 것을 모니터링 할 수 있는 메뉴들이 더욱 다양하게 활성화 되었다.

 

여기서 MBeanServer에 추가한 JMXCommand method를 실행해 보려고 한다.

 

 

 

구현해 놓았던 임의의 TcpServer 자바 파일에

 

MessageMBean interface

Message 구현

 

메서드를 server에 등록하고 VisualVM을 확인해보면

 

등록해 놓았던 JMX 커맨드 중 Message를 클릭하여 Operations를 통해 메서드를 실행 해 볼수 있었다.

 

임의로 로컬에서만 실행했지만 네트워크 설정을 Remote로 등록 한다면 원격에서 내 자바파일을 Start,Stop 모니터링 할 수 있다는 얘기다.

 

 

댓글