1) Java mBean(Managed Bean)이란?
JDK 1.5 이상부터 기본적으로 탑재된 기능
자바 어플리케이션의 모니터링과 관리 기능을 제공한다.
Non-Java Resource와 하드웨어에 대해 wrapping한 인터페이스를 제공하며, API를 외부로 노출해 application 설정 및 통계데이터를 수집할 수 있는 기능을 제공한다.
mBean으로 알려진 하나 이상의 사용자 JavaBean 오브젝트를 통해(혹은 리소스를 호출하는) 애플리케이션, 디바이스, 서비스를 원격으로 제어할 수 있다.
mBean들은 mBean 서버에 등록되며, mBean 서버는 리소스에 접근하는 모든 원격 매니저를 관리한다.
예를 들어 특정한 bean 객체가 있다고 가정한다.
<beans>
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
<property name="beans">
<map>
<entry key="bean:name=testBean1" value-ref="testBean"/>
</map>
</property>
</bean>
<bean id="testBean" class="org.springframework.jmx.JmxTestBean">
<property name="name" value="TEST"/>
<property name="age" value="100"/>
</bean>
</beans>
이 mBean객체를 인터페이스를 사용해 추상적으로 정의해서 mBeanServer에서 인터페이스를 통해 get,set하거나 임의의 메소드를 호출시킬 수가 있다.
2) JMX(Java Management eXtensions)란?
JMX(Java Management eXtensions)는 응용 프로그램(소프트웨어)/객체/장치 (프린터 등) 및 서비스 지향 네트워크 등을 감시 관리를 위한 도구를 제공하는 자바 API이다. 응용 프로그램(소프트웨어)/객체/장치, 서비스 지향 네트워크는 MBean(Managed Bean)이라는 객체로 표현된다. - 출처 : 위키백과
3) JMX 환경
JMX 스펙은 아키텍처를 3개의 티어(=Level), 즉 계층으로 구성함
Instrumentation Level
JMX로 관리가능한 리소스(JMX manageable resource)의 구현을 위한 스펙제공.
자원을 다루는 수단은 Mbean (Managed Bean)에 의해서 제공.
Standard MBean : Java Bean로 부터 파생된 디자인 패턴 (getter/setter)
Dynamic MBean : 런타임시에 좀더 유연하도록 하는 인터페이스 정의를 사용.
Model MBean : 동적으로 설치가능한 MBean
Open MBean : 실행 중에 발견되는 객체의 정보를 확인하기 위한 MBean이 필요할 때 사용.
Notification 메커니즘: Mbean이 Notification Event를 생성하고 다른 레벨에 존재하는 컴포넌트에게 이 이벤트를 보냄.
Agent Level
직접 리소스를 제어하고 원격 관리 어플리케이션이 리소스를 콘트롤할 수 있도록 연결. MBean 서버와 MBean를 다루기 위한 에이전트 서비스로 구성
Mbean 서버 - 관리기능을 갖는 오브젝트의 레지스트리.
에이전트 서비스 - MBean 서버에 등록된 MBean의 관리기능을 실행할 수 있는 오브젝트. 에이전트 서비스도 MBean이 되어 MBean서버를 통해 제어될 수 있다.
에이전트가 제공하는 기능
MBean의 속성값을 얻고, 변경.
MBean의 메소드를 수행.
모든 MBean에서 수행된 정보를 받는다.
기존 클래스나 새로 다운로드된 클래스의 새로운 MBean을 초기화하고 등록
기존 MBean들의 구현과 관련된 관리 정책을 처리하기 위해서 에이전트 서비스를 사용되도록 한다.
Remote Management Level
어댑터와 커넥션의 프로토콜을 지정함으로써 에이전트와의 외부 커뮤니케이션을 정의한다. JMX 관리자를 구현하기 위한 인터페이스와 에이전트를 다루기 위한 컴포넌트를 제공. 에이전트와 MBean의 의미적인 내용을 관리화면으로 내보냄. 프로토콜은 local, RMI, JMX Connector API를 통해 새로운 방식 정의도 가능.
4) 사용하는 방법
- JDK에는 시스템 정보(CPU, Memory, Disk ) 의 정보를 가져올 수 있는 MBean을 제공함. Apache, Tomcat 등은 해당 서버 정보를 가져올 수 있는 MBean을 제공함
- MBeanServer에 접속하기 위해선 Connector 또는 Adaptor를 이용함. 커넥터는 JMXMP 커넥터와 RMI 커넥터가 있고 어댑터는 HTML 프로토콜 어댑터, SNMP 프로토콜 어댑터가 있다.
- 1차적으로 특정 데이터 Class(Car라던가, Student라던가)의 interface(mBean)를 정의한다. 이 인터페이스는 그 클래스의 get, set과 임의로 사용할 기능에 대한 메소드를 작성하고, Server측에서 그 인터페이스에 대한 실질적인 내용을 작성한다.
- Server를 작동시키고 Connector를 통해 Client가 Server에 요청하면 Server는 해당 인터페이스의 기능을 수행하고 결과를 반환한다.
'Java > JMX' 카테고리의 다른 글
[오류해결] javax.management.NotCompliantMBeanException: (0) | 2020.08.24 |
---|---|
[Java] JMX MBean을 이용한 모니터링(Client, Server) (0) | 2020.05.08 |
[Java] JMX Connector의 Server, Client 활용 (0) | 2020.03.18 |
[JAVA] JMX 예제 코드 및 jmxremote properties 설정 (0) | 2020.03.18 |