1. Java SE 감시 및 관리의 개요 - xrath.com 에서 번역됨

sun.com docs.sun.com | My Sun Worldwide Sites

|  | 제품 |  | 다운로드 |  | 서비스 & 솔루션 |  | 테크니컬 지원 |  | 트레이닝 |  | 리서치

| 전의 항목 목차 다음의 항목

제 1 장

# Java SE 감시 및 관리의 개요

이 장에서는, Java Platform, Standard Edition (Java SE 플랫폼)에 감시와 관리의 양서비스를 제공하는 기능 및 유틸리티를 설명합니다. 여기서 소개하는 기능의 상세한 것에 대하여는, 이 가이드의 다음의 장을 참조해 주세요.

## 주된 감시 및 관리 기능

Java SE 플랫폼에는, 중요한 감시 및 관리 기능이 준비되어 있습니다. 이러한 기능은, 크고 4 개(살)로 분류됩니다.

- Java 가상 머신 (Java VM)의 Instrumentation.

- 감시 및 관리 어플리케이션 프로그래밍 인터페이스 (API).

- 감시 및 관리툴.

- Java Management Extensions (JMX) 테크놀러지.

이러한 감시 및 관리 기능의 분류에 대한 자세한 것은, 다음의 마디를 참조해 주세요.

### Java VM Instrumentation

Java VM 는, 감시 및 관리를 목적으로 해 계측 되어 로컬 액세스나 원격 접근을 실현하는 편입형의 것 (또는, 추가 설정 불요 (아웃 오브 박스)인) 관리 기능을 유효하게 합니다. 자세한 것은,제 2 장 「JMX 테크놀러지를 사용하는 감시와 관리」 와 제 5 장 「SNMP 감시와 관리」 를 참조해 주세요.

Java VM 에는, JMX 스펙에 준거한 관리 어플리케이션으로 사용되는 플랫폼 MBean 서버와 플랫폼 MBean 가 준비되어 있습니다. 이것들은, 감시 및 관리 API (다음의 마디에 기재)의 구현입니다. 플랫폼 MXBean 와 MBean 서버에 대해서는,Platform MXBeans 와 Platform MBean Server 를 참조해 주세요.

샘플 코드는,`JDK_HOME/demo/management` 디렉토리에 포함되고 있습니다. 여기서 `JDK_HOME` 는 Java Development Kit (JDK)가 인스톨 되고 있는 디렉토리입니다.

### 감시 및 관리 API

`java.lang.management` 패키지에서는, Java VM 의 감시 및 관리를 실시하는 인터페이스를 제공합니다. 이 API 에서는, 다음의 종류의 정보에 액세스 합니다.

- 로드 된 클래스와 실행중의 thread의 수.

- Java VM 의 가동 시간, 시스템 프로퍼티, VM 입력 인수.

- thread 상태, thread 경합 통계, 라이브 thread의 스택 트레이스.

- 메모리 소비.

- 가베지 컬렉션의 통계.

- low memory의 검출.

- On Demand 데드락의 검출.

- operating system 정보.

`java.lang.management` API 에 가세해`java.util.logging.LoggingMXBean` API 에서는, 로깅의 감시 및 관리가 가능합니다.

### 감시 및 관리툴

Java SE 플랫폼에는, JConsole 로 불리는 감시용 그래피컬 툴이 준비되어 있습니다. JConsole 에는 JMX API 가 구현되고 있어 퍼포먼스를 최대한으로 발휘시키기 위한 정보를 제공하는 것으로써, Java VM 와 계측 된 어플리케이션의 퍼포먼스 감시를 가능하게 합니다. J2SE 플랫폼의 버젼 5.0 에 준비되어 있는 JConsole 는, Java SE 플랫폼의 버젼 6 에 대해 공식으로 지원되는 기능이 되었습니다.

이 2 개의 Java SE 플랫폼의 릴리스간에 JConsole 에 추가된 확장 기능의 일부는, 다음과 같습니다.

- JConsole 플러그 인 지원: 어플리케이션의 MBean 에 액세스 할 때에 필요한 커스텀 탭을 추가하는 등, JConsole 로 실행되는 독자적인 플러그 인 구축이 가능해집니다.

- 동적 접속 기능: Java SE 플랫폼의 버젼 6 에 추가된 Attach API 를 지원하는 어플리케이션에 JConsole 가 접속 가능해집니다.

- 강화된 사용자 인터페이스: 데이터 액세스를 한층 더 간단하게 합니다.

- 새로운 「개요」탭 및 「VM 의 개요」탭: 사용중의 Java VM 에 관한 전체 정보를 보다 알기 쉽게 표시합니다.

- HotSpot 진단 MBean: 실행시에 heap 덤프를 요구해, 또 일부의 VM 옵션의 설정 변경을 실시하는 API 가 준비되어 있습니다.

- 강화된 MBean 프레젠테이션: MBean 의 처리나 속성에 대한 액세스를 간단하게 합니다.

JConsole 의 전반에 대해서는,제 3 장 「JConsole 의 사용」 을 참조해 주세요.

다른 커멘드행 툴은, Java SE 플랫폼으로도 사용할 수가 있습니다. 자세한 것은, JDK 개발툴의 문서내에 있는감시 툴의 마디를 참조해 주세요.

### Java Management Extensions (JMX) 테크놀러지

Java SE 플랫폼의 버젼 6 에서는, JMX 스펙의 버젼이 1.4 가 됩니다. JMX API 에서는, 감시 및 관리를 실시하는 어플리케이션을 계측 할 수가 있습니다. RMI 연결기에서는, JConsole 등에서 이 계측에의 원격 접근이 가능해집니다.

자세한 것은, Java SE 플랫폼의 JMX 테크놀러지 문서 를 참조해 주세요. JMX API 의 주된 컴퍼넌트의 개요에 대해서는, 다음의 마디를 참조해 주세요.

#### MBean 란

JMX 테크놀러지의 MBean 는, 「관리 대상 Bean」, 즉 관리되는 자원을 나타내는 Java 객체입니다. MBean 에는 「관리 인터페이스」가 설치되고 있어 이 인터페이스는 다음의 요소로 구성됩니다.

- 읽기나 기입해 가능한 이름 첨부 및 형태 부착 속성.

- 호출해 가능한 이름 첨부 및 형태 부착 조작.

- MBean 가 송출 가능한 형태 부착 통지.

예를 들어, 어플리케이션의 구성을 나타내는 MBean 에는, 캐쉬 사이즈등이 다양한 구성 파라미터를 나타내는 속성이 준비되어 있습니다. `CacheSize` 속성을 읽어들이는 것으로, 현재의 캐쉬 사이즈가 돌려주어집니다. `CacheSize` 에의 기입을 실시하면, 이 캐쉬 사이즈가 갱신되어 어플리케이션의 실행중의 처리를 변경할 수 있을 가능성이 있습니다. `save` 등의 오퍼레이션에서는, 현재의 설정을 지속적으로 보존할 수가 있습니다. 설정의 변경을 실시하는 경우는, MBean 로 `ConfigurationChangedNotification` 등의 통지가 보내집니다.

MBean 는, 표준 또는 동적인 것이 됩니다. 표준 MBean 는, JavaBeans 컴퍼넌트 모델에 유래하는, 설계 패턴에 준거한 Java 객체입니다. 동적 MBean 에서는, 실행시에 그 관리 인터페이스를 정의합니다. 최근에는, MXBean 로 불리는 새로운 형식의 MBean 도 Java 플랫폼에 추가되고 있습니다.

- 표준 MBean 에서는, 그 속성과 조작을 통해서 직접 관리를 실시하는 자원이 공개됩니다. 속성은, 「getter」메소드나 「setter」메소드를 통해서 공개됩니다. 조작은, 클래스의 그 외의 메소드 가운데, 관리측에서 이용 가능한 메소드입니다. 이러한 메소드는 모두 MBean 인터페이스에 정적으로 정의되고 있어 JMX 에이전트에서는, 인트로스페크션을 통해서 이러한 메소드를 확인할 수 있습니다. 이것이 새로운 자원을 관리 가능하게 하는 제일 알기 쉬운 방법입니다.

- 「동적 MBean」는, 그 관리 인터페이스를 실행시에 정의하는 MBean 입니다. 예를 들어 구성 MBean 는, XML 파일을 해석하는 것으로, 공개하는 속성의 이름과 형태를 결정합니다.

- 「MXBean」는 새로운 타입의 MBean 입니다. 정의 끝난 형태 세트만을 참조하는 MBean 의 코딩을 간단하게 할 수 있습니다. 이 방법이라면, 원격 클라이언트를 포함한 클라이언트는, MBean 의 형태를 나타내는 모델 고유의 클래스에 액세스 하지 않아도, MBean 를 이용할 수 있습니다. 다음에 설명하는 플랫폼 MBean 는, 모두 MXBean 입니다.

#### MBean 서버

유효하게 하려면 , MBean 를 MBean 서버에 등록할 필요가 있습니다. MBean 서버는, MBean 의 리포지터리(repository)입니다. 각 MBean 는, MBean 서버내의 일의의 이름을 사용해 등록됩니다. MBean 에는, 일반적으로 MBean 서버를 경유해서만 액세스 합니다. 즉, 코드에서는 MBean 에 직접 액세스 하는 것이 아니라, 이름을 사용하는 것으로써, MBean 서버 경유로 MBean 에 액세스 합니다.

Java SE 플랫폼에는, 편입형의 플랫폼 MBean 서버가 포함되어 있습니다. 자세한 것은,제 4 장 「플랫폼 MBean 서버와 플랫폼 MXBean 의 사용」 을 참조해 주세요.

#### MBean 의 작성 및 등록

MBean 의 작성에는 2 통과해 방법이 준비되어 있습니다. 1 번째의 방법은, MBean 인 Java 객체를 작성해,`registerMBean` 메소드로 그 객체를 MBean 서버에 등록합니다. 이제(벌써) 1 개의 방법에서는,`createMBean` 메소드의 1 개를 사용해 단일 오퍼레이션으로 MBean 의 작성 및 등록을 실시합니다.

`registerMBean` 메소드는, 로컬에서의 사용을 목적으로 한 단순한 구조가 되고 있습니다만, 원격로 사용할 수 없습니다. `createMBean` 메소드는, 원격로 사용할 수가 있습니다만, 경우에 의해 클래스 로딩에 주위를 기울일 필요가 있습니다. MBean 서버로 `MBeanRegistration` 인터페이스를 도입하고 있는 상태로 MBean 를 그 MBean 서버에 등록 또는 그 서버로부터 등록 해제하는 경우, 그 MBean 로 액션을 실행할 수가 있습니다.

#### 어플리케이션의 계측

JMX API 로 관리용 어플리케이션을 계측 하는 일반적인 순서에 대해서는, 다른 메뉴얼을 참조해 주세요. 자세한 것은,Java Management Extensions (JMX) 테크놀러지 를 참조해 주세요..

## 플랫폼 MXBean

플랫폼 MXBean 는, Java Runtime Environment (JRE)의 Java VM 와 그 외의 컴퍼넌트를 감시 및 관리하는 MBean 입니다. 각 MXBean 에서는, 클래스 로딩 시스템, Just In Time (JIT) 컴파일 시스템, 가비지 컬렉터등의 VM 기능의 일부를 캡슐화합니다.

겉(표) 1-1 에서는, 모든 플랫폼 MXBean 와 각각의 플랫폼 MXBean 로 관리하는 VM 상태를 일람으로 가리킵니다. 각 플랫폼 MXBean 에는, 플랫폼 MBean 서버의 등록에 필요한 일의의 `javax.management.ObjectName` 가 있습니다. Java VM 에서는, 각각의 MXBean 의 인스턴스의 수가, 겉(표)에 나타내도록(듯이) MXBean 의 기능에 응해 0, 1, 또는 그 이상이 됩니다.

겉(표) 1-1 플랫폼 MXBean

인터페이스 | 관리하에 있는 VM 의 구분 | 객체명 | VM 마다의 인스턴스수
--- | --- | --- | ---
`ClassLoadingMXBean` | 클래스 로딩 시스템 | `java.lang:type= ClassLoading` | 1
`CompilationMXBean` | 컴파일 시스템 | `java.lang:type= Compilation` | 0 또는 1
`GarbageCollectorMXBean` | 가비지 컬렉터 | `java.lang:type= GarbageCollector, name=collectorName` | 1 개 이상
`LoggingMXBean` | 로깅시스템 | `java.util.logging:type =Logging` | 1
`MemoryManagerMXBean` (`GarbageCollectorMXBean` 의 서브 인터페이스) | 메모리 풀 | `java.lang:typeMemoryManager, name=managerName` | 1 개 이상
`MemoryPoolMXBean` | 메모리 | `java.lang:type= MemoryPool, name=poolName` | 1 개 이상
`MemoryMXBean` | 메모리 시스템 | `java.lang:type= Memory` | 1
`OperatingSystemMXBean` | 기반이 되는 operating system | `java.lang:type= OperatingSystem` | 1
`RuntimeMXBean` | 런타임 시스템 | `java.lang:type= Runtime` | 1
`ThreadMXBean` | thread 시스템 | `java.lang:type= Threading` | 1

플랫폼 MXBean (`LoggingMXBean` 는 제외하다)의 상세한 것에 대하여는,java.lang.management 패키지의 API 레퍼런스에 기재되어 있는 패키지의 해설을 참조해 주세요. `LoggingMXBean` 의 상세한 것에 대하여는,java.util.logging 의 API 레퍼런스를 참조해 주세요.

## 플랫폼 MBean 서버

「플랫폼 MBean 서버」는, 동일한 Java VM 로 실행하는, 개개에 관리된 컴퍼넌트에 의해 공유할 수가 있습니다. 플랫폼 MBean 서버에는,`ManagementFactory.getPlatformMBeanServer()` 메소드를 사용해 액세스 할 수가 있습니다. 이 메소드에 대한 1 번째의 호출에 의해, 플랫폼 MBean 서버가 작성되어 다음에 이 서버의 일의의 객체명을 사용해 플랫폼 MXBean 의 등록을 합니다. 그 후, 이 메소드는, 최초로 작성한 플랫폼 `MBeanServer` 의 인스턴스를 돌려줍니다.

동적으로 작성/파기된 MXBean (예를 들어, 메모리 풀이나 매니저)는, 플랫폼 MBean 서버로 자동적으로 등록이나 등록 해제를 합니다. 시스템 프로퍼티 `javax.management.builder.initial` 의 설정을 하고 있는 경우, 플랫폼 MBean 서버는, 지정의 `MBeanServerBuilder` 를 사용해 작성됩니다.

플랫폼 MBean 서버를 사용해 플랫폼 MXBean 의 옆에 있는 다른 MBean 의 등록을 실시할 수가 있습니다. 이것에 의해, MBean 는 모두 동일한 MBean 서버를 개입시켜 공개되어 네트워크는 보다 간단하게 공개하거나 검출할 수가 있게 됩니다.

| 전의 항목 목차 다음의 항목

회사 정보 연락처 이용 규약 프라이버시 Copyright 1994-2006 Sun Microsystems, Inc.