WMI 아키텍쳐
WMI(Windows Management Instrument)는 규모가 커지고 복잡해지는 Enterprise System, Application, Network의 관리에 도움이 되도록 Windows 2000의 일부로 개발된 하나의 도구입니다.
사용결과 Windows 2000과 Windows 2003 모두에서 사용 가능하며 다만 버전별로 Table 및 Field명이 틀린 경우가 있으므로 버전별로 관리하는 것이 바람직합니다.
그럼 WMI가 무엇인가에 대해 알아보기로 하겠습니다.
1. 소개
현재 서버 관리 쪽은 자동화와 표준화를 통해 인당 서버수를 늘려 한사람당 관리하는 서버들의 대수가 늘어나고 있습니다.
이런 상황에서 서버 관리자는 서버정보 및 서버관리에 있어 해당 서버들의 정보를 조회할 툴이 없는 경우 큰 업무로드에 시달리게 됩니다.
NT계열에서 이런 난제를 해결할 수 있는 방법은 WMI가 있다. 이러한 WMI의 핵심 기능은 다음과 같습니다.
(1) 균일 스크립트 API : 관리 개체는 CIM 개체 모델에 기초한 공통 개체 프레임워크에 정의되므로 WMI만
사용하면 다양한 정보를 사용할 수 있습니다.
(2) 원격 관리 : WMI는 로컬 및 원격 사용이 가능하므로 자신의 PC에서 각 서버의 정보를 효율적으로 뽑아볼
수 있습니다.
(3) 검색성과 탐색성 : DB Query를 이용하여 검색하므로 해당 자료를 쉽게 추출할 수 있습니다.
(4) 강력한 이벤트 게시 및 가입 : 모든 사용자 정의 동작을 특정 이벤트 수신하는 즉시 수행가능 합니다.
2. 아키텍처
(1) 공급자
- 공급자는 일반적인 H/W Driver 및 OS에서 제공하는 정보들을 의미한다.
즉, 예로들면 우리가 설치하는 그래픽 카드의 정보를 알고 싶은 경우 해당 정보는 그래픽 카드의
Driver에 저장되어 있으며 이를 우리는 공급자라고 말한다.
(2) CIM 개체 관리자
- Winmgmt를 통해 시스템에 표현됩니다.
- 소비자가 원하는 자료를 얻기 위해 CIM 개체 관리자에 요청을 하며 이런 요청을 중개하는 CIMOM이
있으며 CIMOM은 사용 가능한 클래스(Repository에 존재)와 공급자를 확인 합니다.
시나리오는 소비자가 요청하는 정보를 CIMOM이 평가한 후 공급자에서 필요 정보를 얻어와
소비자에게 공급하는 구조입니다.
물론 CIM Repository에서 정보를 가져오기도 하지만 WMI의 최대강점은 공급자에서 Data를 취합하여
동적으로 Data를 제공하는 점입니다.
(3) 관리 응용 프로그램
- 소비자의 개념은 Application이라고 할 수 있습니다.
우리는 Application을 통해 Wmi를 수행하게 됩니다.
예를 들어, A라는 개발자가 Wmi를 이용하여 서버의 정보를 가지고 오는 역할을 하는 App를 만든다면
해당 App를 소비자라고 할 수 있을 것입니다.
3. WMI 클래스
WMI Class는 일반 Class구조를 가지고 있으며 아래와 같은 내용으로 구성되어 있습slek.
(1) 속성 : 값을 의미하며 WMI Table 의 각 Filed 값을 의미합니다.
(2) 메서드 : 해당 인스턴스에서 수행하는 동작을 의미하며 예를 들어 Win32_Directory 클래스에는
압축을 할 수 있는 Compress 메서드가 있습니다.
(3) 이벤트 : 시스템에서 발생하는 사건이나 실패를 수신하기 위해 소비자가 요청할 수 있는 알림을
의미합니다. 시스템의 변경 내용을 이벤트의 기초로 사용 가능합니다.
예를 들어 Win32_Processor 클래스의 LoadPercentage 속성은 CPU 사용률이 50% 이상
사용될 때 마다 이벤트를 요청하기 위해 사용 가능함
(4) 연결 : 클래스 사이의 관계를 설명하며 그 자체도 클래스에 의해 정의됩니다.
4. 공급자
(1) Win32 공급자 : 운영체제, 컴퓨터 시스템, 주변기기, 파일시스템에 대한 정보, 보안 정보
(2) WDM 공급자 : 사용자 입력장치, 저장장치 , 네트워크 인터페이스, 통신포트를 위한 WDM Driver
(3) 이벤트 로그 공급자 : Windows NT 이벤트 로그 항목 읽기, 옵션 구성, 이벤트 로그 백업,
이벤트가 로그 추가 시 WMI 이벤트가 생성될 수 있음
(4) 레지스트리 공급자 : 레지스트리 키 만들기, 읽기, 쓰기, 지정된 레지스트리 키가 수정되면
WMI 이벤트 생성 간능
(5) 성능 카운터 공급자 : 시스템 모니터 도구에 표시되는 성능값 계산에 사용되는 카운터 정보 제공
(6) Active Directory 공급자 : MS Active Directory 서비스에 저장되는 정보의 게이트웨이 역할을 합니다.
단일 API를 사용하여 WMI와 Active Directory 모두의 정보 액세스 할 수 있음
(7) Windows Installer 공급자 : Windows Installer에 대한 완전한 제어와 WMI를통한 소프트웨어 설치를
가능하게 합니다. 또한 Windows Installer를 사용하여 설치된 모든 APP에
대한 정보를 제공합니다.
(8) SNMP 공급자 : 관리에 SNMP(Simple Network Management Protocol)을 사용하는 시스템과 장치의
게이트웨이 역할을 합니다. SNMP MIB 개체 변수를 읽고 쓸 수 있습니다.
SNMP 트랩은 자동으로 WMI 이벤트에 매핑됩니다.
(9) 보기 공급자 : 기존 클래스로부터 새로운 집계 클래스를 만들 수 있습니다. 관심 있는 정보만을 위해
원본 클래스를 필터링할 수 있고, 여러 클래스의 정보를 단일 클래스로 조합할 수
있으며, 여러 컴퓨터의 정보를 단일 보기에 집계할 수 있습니다.
5. 마치며
WMI를 사용하여 할 수 있는 영역은 많습니다. vbscript와 같은 script언어 뿐 아니라 VBA같은 어플리케이션 언어에서도 WMI를 지원하기 때문에 관리 툴 제작에 많은 도움이 될것으로 보입니다.
평상시 이런 내용을 자동화 했으면 or 관리 툴이 있어 서버 관리가 쉬웠으면 하고 생각한 admin들에게 큰 도움이 될 것으로 보이며 해당 툴 개발을 통해 Admin의 관리 능력의 향상을 가져올 것이라 생각합니다.
Windows 2008에서는 PowerShell이 개발되어 더욱 쉽게 서버르르 관리할 수 있게 되어 있으므로 WMI 뿐 아니라 PowerShell에 대해서 공부해 보는 것도 Admin에게 새로운 영역을 발견하는데 큰 영향을 미칠거라 생각합니다.
WMI(Windows Management Instrument)는 규모가 커지고 복잡해지는 Enterprise System, Application, Network의 관리에 도움이 되도록 Windows 2000의 일부로 개발된 하나의 도구입니다.
사용결과 Windows 2000과 Windows 2003 모두에서 사용 가능하며 다만 버전별로 Table 및 Field명이 틀린 경우가 있으므로 버전별로 관리하는 것이 바람직합니다.
그럼 WMI가 무엇인가에 대해 알아보기로 하겠습니다.
1. 소개
현재 서버 관리 쪽은 자동화와 표준화를 통해 인당 서버수를 늘려 한사람당 관리하는 서버들의 대수가 늘어나고 있습니다.
이런 상황에서 서버 관리자는 서버정보 및 서버관리에 있어 해당 서버들의 정보를 조회할 툴이 없는 경우 큰 업무로드에 시달리게 됩니다.
NT계열에서 이런 난제를 해결할 수 있는 방법은 WMI가 있다. 이러한 WMI의 핵심 기능은 다음과 같습니다.
(1) 균일 스크립트 API : 관리 개체는 CIM 개체 모델에 기초한 공통 개체 프레임워크에 정의되므로 WMI만
사용하면 다양한 정보를 사용할 수 있습니다.
(2) 원격 관리 : WMI는 로컬 및 원격 사용이 가능하므로 자신의 PC에서 각 서버의 정보를 효율적으로 뽑아볼
수 있습니다.
(3) 검색성과 탐색성 : DB Query를 이용하여 검색하므로 해당 자료를 쉽게 추출할 수 있습니다.
(4) 강력한 이벤트 게시 및 가입 : 모든 사용자 정의 동작을 특정 이벤트 수신하는 즉시 수행가능 합니다.
2. 아키텍처
(1) 공급자
- 공급자는 일반적인 H/W Driver 및 OS에서 제공하는 정보들을 의미한다.
즉, 예로들면 우리가 설치하는 그래픽 카드의 정보를 알고 싶은 경우 해당 정보는 그래픽 카드의
Driver에 저장되어 있으며 이를 우리는 공급자라고 말한다.
(2) CIM 개체 관리자
- Winmgmt를 통해 시스템에 표현됩니다.
- 소비자가 원하는 자료를 얻기 위해 CIM 개체 관리자에 요청을 하며 이런 요청을 중개하는 CIMOM이
있으며 CIMOM은 사용 가능한 클래스(Repository에 존재)와 공급자를 확인 합니다.
시나리오는 소비자가 요청하는 정보를 CIMOM이 평가한 후 공급자에서 필요 정보를 얻어와
소비자에게 공급하는 구조입니다.
물론 CIM Repository에서 정보를 가져오기도 하지만 WMI의 최대강점은 공급자에서 Data를 취합하여
동적으로 Data를 제공하는 점입니다.
(3) 관리 응용 프로그램
- 소비자의 개념은 Application이라고 할 수 있습니다.
우리는 Application을 통해 Wmi를 수행하게 됩니다.
예를 들어, A라는 개발자가 Wmi를 이용하여 서버의 정보를 가지고 오는 역할을 하는 App를 만든다면
해당 App를 소비자라고 할 수 있을 것입니다.
3. WMI 클래스
WMI Class는 일반 Class구조를 가지고 있으며 아래와 같은 내용으로 구성되어 있습slek.
(1) 속성 : 값을 의미하며 WMI Table 의 각 Filed 값을 의미합니다.
(2) 메서드 : 해당 인스턴스에서 수행하는 동작을 의미하며 예를 들어 Win32_Directory 클래스에는
압축을 할 수 있는 Compress 메서드가 있습니다.
(3) 이벤트 : 시스템에서 발생하는 사건이나 실패를 수신하기 위해 소비자가 요청할 수 있는 알림을
의미합니다. 시스템의 변경 내용을 이벤트의 기초로 사용 가능합니다.
예를 들어 Win32_Processor 클래스의 LoadPercentage 속성은 CPU 사용률이 50% 이상
사용될 때 마다 이벤트를 요청하기 위해 사용 가능함
(4) 연결 : 클래스 사이의 관계를 설명하며 그 자체도 클래스에 의해 정의됩니다.
4. 공급자
(1) Win32 공급자 : 운영체제, 컴퓨터 시스템, 주변기기, 파일시스템에 대한 정보, 보안 정보
(2) WDM 공급자 : 사용자 입력장치, 저장장치 , 네트워크 인터페이스, 통신포트를 위한 WDM Driver
(3) 이벤트 로그 공급자 : Windows NT 이벤트 로그 항목 읽기, 옵션 구성, 이벤트 로그 백업,
이벤트가 로그 추가 시 WMI 이벤트가 생성될 수 있음
(4) 레지스트리 공급자 : 레지스트리 키 만들기, 읽기, 쓰기, 지정된 레지스트리 키가 수정되면
WMI 이벤트 생성 간능
(5) 성능 카운터 공급자 : 시스템 모니터 도구에 표시되는 성능값 계산에 사용되는 카운터 정보 제공
(6) Active Directory 공급자 : MS Active Directory 서비스에 저장되는 정보의 게이트웨이 역할을 합니다.
단일 API를 사용하여 WMI와 Active Directory 모두의 정보 액세스 할 수 있음
(7) Windows Installer 공급자 : Windows Installer에 대한 완전한 제어와 WMI를통한 소프트웨어 설치를
가능하게 합니다. 또한 Windows Installer를 사용하여 설치된 모든 APP에
대한 정보를 제공합니다.
(8) SNMP 공급자 : 관리에 SNMP(Simple Network Management Protocol)을 사용하는 시스템과 장치의
게이트웨이 역할을 합니다. SNMP MIB 개체 변수를 읽고 쓸 수 있습니다.
SNMP 트랩은 자동으로 WMI 이벤트에 매핑됩니다.
(9) 보기 공급자 : 기존 클래스로부터 새로운 집계 클래스를 만들 수 있습니다. 관심 있는 정보만을 위해
원본 클래스를 필터링할 수 있고, 여러 클래스의 정보를 단일 클래스로 조합할 수
있으며, 여러 컴퓨터의 정보를 단일 보기에 집계할 수 있습니다.
5. 마치며
WMI를 사용하여 할 수 있는 영역은 많습니다. vbscript와 같은 script언어 뿐 아니라 VBA같은 어플리케이션 언어에서도 WMI를 지원하기 때문에 관리 툴 제작에 많은 도움이 될것으로 보입니다.
평상시 이런 내용을 자동화 했으면 or 관리 툴이 있어 서버 관리가 쉬웠으면 하고 생각한 admin들에게 큰 도움이 될 것으로 보이며 해당 툴 개발을 통해 Admin의 관리 능력의 향상을 가져올 것이라 생각합니다.
Windows 2008에서는 PowerShell이 개발되어 더욱 쉽게 서버르르 관리할 수 있게 되어 있으므로 WMI 뿐 아니라 PowerShell에 대해서 공부해 보는 것도 Admin에게 새로운 영역을 발견하는데 큰 영향을 미칠거라 생각합니다.