jmx

Edit

관련스펙

API 문서

Instrumental level

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

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

Mbean

Notification 메커니즘: Mbean이 Notification Event를 생성하고 다른 레벨에 존재하는 컴포넌트에게 이 이벤트를 보냄.

Agent level

직접 리소스를 제어하고 원격 관리 어플리케이션이 리소스를 콘트롤할 수 있도록 연결. 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

-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 로 확인

관련자료

Spring 관련

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();
}

Lucy JMX

Lucy에서의 MBean으로 모니티터링 가능한 것들

System

Apache

Tomcat

Error Log

Database