본 장에서는 SNMP MIB에 대해 설명한다.
사용자는 모든 JEUS 서버의 속성에 접근할 수 있는데 이것은 JEUS MIB에 정의되어 있다. MIB는 표준 SNMP의 한 부분이다.
MIB에 대한 자세한 내용은 www.ietf.org 사이트를 참조한다.
JEUS MIB 파일은 다음의 디렉터리에 존재하는 TMAX-JEUS8.0-MIB.mib 파일에 정의되어 있다.
JEUS_HOME/lib/system
직접적으로 MIB 파일을 볼 수 있으며 “Appendix A. JEUS SNMP MIB 정보”에서 OID 속성값의 매핑을 확인할 수 있다.
JEUS에서는 MIB 브라우저를 제공하지 않지만 3rd-Party MIB 브라우저를 사용할 수 있고, SNMP 유틸리티 벤더 대부분에서 MIB 브라우저를 제공한다.
OID(Object ID)는 관리되는 객체를 구별하기 위해 정수를 나열한 것으로 OID 트리 구조를 사용해서 객체의 경로를 정의한다. OID는 MIB 파일에서 정의한다.
각 OID는 JEUS MBean의 각 속성과 매핑된다. JEUS SNMP Agent로 특정한 OID 값을 가진 SNMP 패킷을 전송하면 OID와 일치하는 정보를 리턴한다.
다음은 JEUS MIB의 OID 트리이다.
TmaxSoft의 엔터프라이즈 OID는 1.3.6.1.4.1.14586이다. 즉, 모든 JEUS 속성값의 접두어는
1.3.6.1.4.1.14586.100이 된다. 예를 들어 JEUS 서버 버전 속성값의 OID는
1.3.6.1.4.1.14586.100.3.2이다.
객체열을 가져오는 표준 접미어는 다음과 같다.
접미어 | 설명 |
---|---|
0 | 모든 객체를 가져온다. |
1 | 전체 객체 중에서 첫 번째 객체만 가져온다. |
예를 들어 1.3.6.1.4.1.14586.100.9.1.1 OID에서 1.3.6.1.4.1.14586.100.9.1은 EJB 모듈의 객체 이름의 속성을 의미하고, 1.3.6.1.4.1.14586.100.9.1.1은 첫 번째 EJB 모듈의 객체 이름을 의미한다. 그러므로 GET_NEXT 1.3.6.1.4.1.14586.100.9.1을 사용하면 1.3.6.1.4.1.14586.100.9.1.1의 결과가 아닌 1.3.6.1.4.1.14586.100.9.2의 값이 리턴된다.
JEUS SNMP Agent는 객체들의 개수를 리턴하는 특별한 OID 접미어인 "9999"를 제공한다. 예를 들어 GET 1.3.6.1.4.1.14586.100.9.1.9999라고 했을 때 JEUS에 10개의 EJB가 deploy되어 있다면 10을 리턴한다.
모든 OID 트리에 접미어가 있는 것이 아니므로 실제 OID만 탐색할 수 있다.
JEUS에서는 다음과 같이 2가지 OID 버전을 지원한다.
Static OID(정적 OID)
MIB 기반의 정보만으로 구성되는 OID이다.
Static OID는 동일한 특성의 객체에 대해서 동일한 OID가 할당된다. 그래서 하나의 OID에 대해서 해당 객체가 여러 개 존재할 경우에는 값들이 목록으로 리턴된다.
예를 들어 JEUS에 2개의 서버가 실행되고 있을 때 서버의 이름에 해당하는 OID로 요청을 하면, [server name1, server name2]와 같이 목록이 리턴된다.
동일한 OID에 대해서 여러 객체가 존재할 경우 해당 객체에 대한 모니터링이 쉽지 않다.
Dynamic OID(동적 OID)
Dynamic OID는 객체에 대한 유일한 값을 부여하기 위해서 MIB에 의한 정보로 구성된 OID에 "."으로 구분된 32개의 숫자를 나열하여 구성된다.
(예: [MIB 기반 OID].1.2.3.4.5.--- . 31.32)
32자리의 ID는 객체가 생성될 때 SNMP Agent에서 동적으로 생성된다. 각각의 객체에 Dynamic OID를 부여하여 특정 객체에 대한 모니터링이 용이하다.
예를 들어서 2개의 서버를 운용 중인 JEUS에 각 서버의 Thread Pool의 최댓값과 최솟값을 알고 싶을 경우에 Static OID와 Dynamic OID의 차이는 다음과 같다.
Static OID의 경우
다음의 형식으로 된 MIB 기반의 OID에 해당 객체들의 목록이 리턴된다.
[최댓값에 해당하는 OID]=[ maximum, maximum' ], [최솟값에 해당하는 OID]=[ minimum, minimum' ]
이때 결과값의 목록에서 동일한 위치의 maximum과 minimum이 같은 서버의 값인지 보장되지 않기 때문에 같은 서버에 연관된 값을 알 수 없다(하나의 서버에 해당하는 값이 첫 번째 나올 수도 있고, 두 번째 나올 수도 있다).
Dynamic OID의 경우
다음의 형식으로 결과값이 출력되기 때문에 특정 객체에 대한 연관된 값을 정확하게 알 수 있다.
[최댓값에 해당하는 OID].[server1의 동적 생성 OID]=maximum, [최솟값에 해당하는 OID].[server1의 동적 생성 OID]=minimum
JEUS에서 SNMP는 Dynamic OID를 기본으로 동작한다. Static OID로 SNMP를 사용하고 싶다면 JEUS 실행 스크립트에서 다음과 같이 실행한다.
-Djeus.management.snmp.dynamic=false