Header

  1. View current page

    정상혁의 수첩

Profile_img_60x60_08
195

JMX

관련스펙

JSR 3: Java management Extensions (JMX Specification)

JSR 160 : Java Management Extendsion (JMX) Remote API 1.0

 

API 문서

http://java.sun.com/j2se/1.5.0/docs/api/javax/management/package-summary.html

Java Management[tm] Extensions (JMX) Download Information

http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/

JConsole

http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html

 

Instrumental level

JMX로 관리가능한 리소스(JMX manageable resource)의 구현을 위한 스펙제공.

자원을 다루는 수단은 Mbean (Managed Bean)에 의해서 제공.

Mbean

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들의 구현과 관련된 관리 정책을 처리하기 위해서 에이전트 서비스를 사용되도록 한다.

 

Distributed Services Level

JMX 관리자를 구현하기 위한 인터페이스와 에이전트를 다루기 위한 컴포넌트를 제공. 에이전트와 MBean의 의미적인 내용을 관리화면으로 내보냄.

프로토콜은 local, RMI, JMX Connector API를 통해 새로운 방식 정의도 가능.

 

사용예

JDK에는 시스템정보 (CPU, Memory, Disk 등)의 정보를 가져올 수 있는 MBean을 제공

Apache, Tomcat등 에는 해당 서버정보를 가져올 수 있는 MBean 제공

JMX는 기본적으로 다섯 가지 모니터릿 정보를 제공한다.
System  Apache Tomcat Error Log Database

[jconsole] JConsoled을 사용해서 Tomcat 5.5 모니터링 하기

      -Dcom.sun.management.jmxremote \
      -Dcom.sun.management.jmxremote.port=8086 \
      -Dcom.sun.management.jmxremote.ssl=false \
      -Dcom.sun.management.jmxremote.authenticate=false \

      -Dcom.sun.management.jmxremote.password.file=/home/benelog/jmxremote.password \

netstat -anp 로 확인

 

관련자료

Instrumenting applications with JMX

Monitoring and Management Using JMX

Using JConsole to Monitor Applications

예제:

JMX를 사용해 관리되는 인스턴스 생성하기

RMI를 사용해 원격 MBean server 사용하기

 

Spring 관련

JMX with Spring

JMX 지원

Spring + Apache Mina + JMX

 

Sample code

     MBeanServer server = ManagementFactory.getPlatformMBeanServer();  
     ObjectName name = new ObjectName("mbeantest:type=Speaker");  
     Speaker mbean = new Speaker();
     server.registerMBean(mbean, name);
    
     mbean.setMessage("How are you?");    
     while(true){
      mbean.say();
      Thread.sleep(1000);  
     }

 

public class Speaker implements SpeakerMBean {
 private String message;

 public String getMessage() {
  return message;
 }

 public void setMessage(String message) {
  this.message = message;
 }
 
 public void say(){
  System.out.println(message);
 }
 
 public void clearMessage(){
  this.message = "no message";
 }
}
 public interface SpeakerMBean {
 public String getMessage();
 public void setMessage(String message);
 public void say();
 public void clearMessage();
}

 

http://whiteship.me/2627

 

 

History

Last edited on 05/18/2010 07:02 by benelog

Comments (0)

You must log in to leave a comment. Please sign in.