Подбор инструментальных средств, обладающих возможностью обратной связи в плане производительности, - ключ к эффективному администрированию любой компьютерной системы. Исторически сложилось так, что компоненты компьютерных систем (маршрутизаторы, серверы, рабочие станции, приложения и т. д.) используют различные инструментальные модели. В сетевых устройствах обычно задействован протокол SNMP, а в персональных компьютерах может применяться стандарт Desktop Management Interface (DMI) или другие управляющие протоколы и приложения собственной разработки.

Для решения связанных с этим проблем группой Distributed Management Task Force (DMTF, преобразованной из Desktop Management Task Force) были предложены стандарты Web-Based Enterprise Management/Common Information Model (WBEM/ CIM) создания обобщенных структур, обеспечивающие унификацию несопоставимых управляющих протоколов. (Дополнительную информацию о проекте WBEM и входящих в него стандартах можно получить на сайте http://www.dmtf.org/wbem/index.html.) WBEM объединяет различные инструментальные стандарты в общую объектную модель, к которой в свою очередь могут обращаться приложения, ориентированные на использование WBEM. В Windows 2000 разработчики объединили стандарты WBEM в набор служб под названием Windows Management Instrumentation (WMI).

Чтобы максимально эффективно использовать WMI в Windows 2000 Professional, нужно сначала изучить все возможности этого инструментального средства. Сценарии WMI полезны в тех случаях, когда требуется создавать особенно сложные запросы и манипулировать информацией о программном и аппаратном обеспечении Windows-компьютеров в сети.

Модель обобщенного представления информации Common Information Model (CIM)

CIM - Common Information Model - это объектно-ориентированная модель, которая предоставляет управляющим приложениям описания управляемых объектов (логических и физических). Как объектно-ориентированная спецификация, CIM использует набор классов, наследующих друг другу. Для этих классов определены свойства, методы и связи. Связи позволяют соотносить объекты друг с другом таким образом, чтобы управляемую систему можно было описать несколькими различными способами. Например, класс компьютерных систем Win32 (т. е. рабочих станций Windows) может иметь связи с классом приложений, установленных на том же компьютере. Такие связи дают возможность управляющему приложению не только собирать данные о компонентах отдельных систем, но и отслеживать взаимодействие систем между собой.

WMI использует формат Managed Object Format (MOF) для описания схемы CIM, определяющей основные классы и их взаимоотношения друг с другом. При просмотре каталога \%systemroot%system32wbem рабочей станции Windows 2000 можно увидеть несколько файлов с расширением .MOF. В этих текстовых файлах приведены текущие описания классов для управляемых объектов, поддерживаемых WMI. На Экране 1 приводится несколько строк файла ntevt.mof, в которых описаны классы учета событий Windows 2000.

Экран 1. Просмотр в Notepad файла ntevt.mof с классами событий.

Спецификации WBEM/CIM - это промышленный стандарт, ориентированный на работу с любой платформой или операционной системой. Более того, он позволяет вносить специфические для каждого поставщика расширения схемы. Поэтому, несмотря на то что базовые классы CIM разработаны для большого количества платформ, некоторые производители могут добавлять собственные классы, зависящие от платформы. На Экране 1 приведен пример реализованных Microsoft классов, определяющих журналы событий Windows 2000.

Провайдеры и потребители

Помимо расширения базовой схемы CIM спецификации WBEM/CIM содержат элементы provider («провайдер») и consumer («потребитель»). «Провайдер» - это программный код, собирающий данные для управляющего приложения непосредственно от управляемого объекта. А «потребитель» - это приложение, которое собранными данными пользуется. Например, по отношению к Microsoft Systems Management Server (SMS) 2.0 служба WMI является потребителем, использующим инвентаризационную базу данных SMS об аппаратном и программном обеспечении. Microsoft по умолчанию поставляет несколько провайдеров, список которых приведен в Таблице 1. Они взаимодействуют с аппаратным и программным обеспечением, предоставляя управляющим приложениям информацию в пригодном для них виде.

Кроме того, специалистами Microsoft реализованы средства разработки (SDK) для WMI, входящие в состав Windows Platform SDK и позволяющие самостоятельно создавать WMI-провайдеров. (Более подробно о WMI SDK можно узнать на Web-сайте Microsoft Developer Network-MSDN по адресу: http://msdn.microsoft.com/downloads/sdks/ wmi/default.asp.) Например, для того чтобы обслуживать конкретное приложение, можно написать специальную программу-провайдер, которая будет извлекать управляющие данные из этого приложения и предоставлять их WMI.

Провайдеры могут выдавать как зависящие от событий, так и неизменяемые (например, информацию об объеме оперативной памяти рабочей станции или доступном дисковом пространстве) данные об управляемом объекте. Управляющие приложения, работающие в Windows 2000, пользуются Common Information Model Object Manager (CIMOM) для получения доступа к данным обоих типов. CIMOM обеспечивает наличие необходимых интерфейсов между управляющими приложениями и провайдерами. Получив данные от разных провайдеров, таких, как SNMP и Win32, CIMOM с помощью WMI API предоставляет эту информацию управляющим приложениям.

CIMOM и данные, зависимые от событий

Отслеживая события WMI, пользователь может наблюдать за состоянием системы в режиме реального времени. Об изменениях в работе управляемого объекта нужно узнавать вовремя, чтобы при необходимости автоматически выполнить какие-либо действия. Управляющие приложения регистрируются в CIMOM для получения сообщений о соответствующих событиях, а CIMOM в свою очередь запрашивает провайдеров об их наступлении. Зафиксировав событие, соответствующий провайдер сообщит об этом CIMOM, который передаст информацию управляющему приложению, ожидающему наступления зарегистрированного события.

Поскольку CIMOM извлекает управляющие данные с помощью нескольких провайдеров, появляется возможность установить взаимосвязь между событиями, происходящими в различных компонентах системы. Например, можно зарегистрировать у провайдера Performance Monitor получение уведомлений об увеличении размеров файла подкачки и одновременно у провайдера Win32 получение уведомлений о приложениях, затребовавших выделения памяти выше заданного уровня. С помощью этих двух событий можно локализовать и легко идентифицировать в системе приложение, выходящее из-под контроля. Более того, в саму управляющую программу можно с помощью WMI включить правило, прекращающее работу таких приложений.

Высокопроизводительные провайдеры

Большинство провайдеров Windows 2000 Professional размещены в каталоге \%systemroot% system32wbem. Провайдеры обычно существуют в виде DLL-модулей и могут быть обычными (normal) или высокопроизводительными (High-Performance, HiPerf). Высокопроизводительные провайдеры должны быть DLL-модулями, написанными для работы в том же процессе, что и вызывающая их управляющая программа или WMI. Например, программа System Monitor, версия Performance Monitor для Windows 2000, использует высокопроизводительный провайдер wbemperf.dll для сбора данных через WMI.

Поскольку System Monitor собирает данные в режиме реального времени, Microsoft пришлось разрабатывать эту программу как высокопроизводительного провайдера. Однако не все провайдеры могут быть высокопроизводительными. При покупке управляющего приложения, использующего WMI, или при установке провайдера, написанного независимым поставщиком программных продуктов (independent software vendor, ISV), необходимо выяснить его тип, поскольку обычный провайдер может оказаться слишком медленным для конкретного приложения.

Репозитарий WBEM

CIMOM хранит неизменяемые данные об управляемых объектах в репозитарии WBEM, в файле \%systemroot%system32wbem epositorycim.rep. Провайдеры предоставляют данные CIMOM, а Windows 2000 автоматически сохраняет копию хранилища каждые 30 мин в файле CIM.rec.

Экран 2. Управление резервированием хранилища WBEM.

С помощью snap-in-модуля WMI Control в Microsoft Management Console (MMC) можно изменять параметры резервного копирования, восстанавливать данные с резервной копии, управлять поведением WMI и другими свойствами репозитария. Чтобы открыть модуль WMI Control, нужно нажать правой кнопкой мыши на иконке My Computer и выбрать Manage в ниспадающем меню или воспользоваться элементом Computer Management из папки Administrative Tools. Раскрыв узел Services and Applications, следует нажать правой кнопкой на меню WMI Control, а затем Properties. На Экране 2 показана панель Backup/Restore, с помощью которой можно управлять процессами резервирования и восстановления.

Навигационные средства WMI

Экран 3. Базовое пространство имен WMI.

Для того чтобы свободно перемещаться по WMI, нужно освоить структуру его пространства имен. Она аналогична дереву MIB в SNMP и представляет собой каталог, в котором находятся определенные классы объектов, отсортированные по поставщику и функциональности. На Экране 3 показано базовое пространство имен WMI. Начинается оно всегда с root. В идентификаторе rootCIMV2 пространства имен определены классы, которые являются частью ядра стандарта WBEM/CIM 2.0. Классы, предоставленные компанией Microsoft, имеют префикс-указатель Win32_ или MS. Их можно найти в любой части дерева.

В каталоге \%systemroot%system32wbem системы Windows 2000 находится приложение wbemtest.exe, с помощью которого осуществляется подключение и перемещение по пространству имен WMI. Нажав кнопку Connect в меню программы wbemtest.exe, можно получить доступ к определенной части пространства имен (например, rootCIMV2) на локальном или удаленном компьютере. После подключения можно вывести все доступные классы данной части пространства имен и соответствующие им методы и свойства, а также определить, какие свойства и методы пространство имен унаследовало от порождающих классов. Такие унаследованные свойства и методы содержат префикс подчеркивания «_» (например, __SystemClass).

Экран 4. Настройка параметров доступа для ootWMI.

В WMI определены средства ограничения доступа к пространству имен, причем сделано это так же, как и в Windows 2000. Выбрав закладку Security в окне WMI Control Properties, можно сконфигурировать параметры обеспечения безопасности. На Экране 4 показан диалог настройки параметров безопасности раздела ootWMI пространства имен WMI.

После установки WMI SDK появляются дополнительные инструменты навигации по пространству имен WMI. Это оснащенный Web-интерфейсом WMI Object Browser, который позволяет просматривать объекты и связанные с ними методы и свойства внутри пространства имен в окне с несколькими хорошо оформленными панелями. На Экране 5 в окне WMI Object Browser представлен экземпляр класса Win32_OperatingSystem, для которого определено свойство с именем SAUTERNES. В правой панели окна показаны свойства, связанные с экземпляром класса Win32_ OperatingSystem. Эти данные соответствуют конкретной установке Windows 2000 на моем компьютере.

Экран 5. Просмотр методов объектов и их свойств через WMI Object Manager.

В состав WMI SDK также входит средство регистрации событий Event Registration Tool, с помощью которого можно вручную регистрировать приложения-потребители для получения уведомлений о наступлении конкретных событий. Кроме того, имеется также и программа WMI Event Viewer, позволяющая просматривать текущие данные о зарегистрированных несколькими потребителями событиях. При регистрации на получение сведений о наступлении события выполняются три процедуры. Первая - регистрируется приложение-потребитель, которое будет получать сообщения о наступлении события. Затем создается фильтр, определяющий граничные параметры интересующих приложение данных. Например, можно создать фильтр, который будет выдавать предупреждение о превышении уровня загрузки процессора более чем на 80%. И, наконец, устанавливается таймер. Существует два типа таймеров: абсолютный и интервальный. Абсолютный таймер позволяет задать дату и время начала сбора информации о событиях. С помощью интервального таймера устанавливается частота запрашивания данных у провайдера WMI.

Язык запросов WBEM

Язык запросов WBEM (WBEM Query Language) - это стандартный язык, с помощью которого формируются запросы к WMI. Например, для создания фильтра, сообщающего CIMOM, какие события нужно зарегистрировать, необходимо сформировать запрос на получение информации об отслеживаемых событиях. Этот запрос создается с помощью подмножества специализированного диалекта SQL, разработанного специально для WMI - WBEM Query Language. Пользователь, знакомый с SQL, достаточно легко сможет освоить WBEM Query Language. Следует подчеркнуть, что этот язык предназначен только для чтения информации, он позволяет опрашивать управляемые объекты, но не модифицировать их.

Запросы языка WBEM Query Language могут быть адресованы данным, событиям и структуре данных. Запросы к данным позволяют извлекать экземпляры определенных классов управляемых объектов и связанные с ними свойства. С помощью запросов к событиям создаются фильтры определенных событий. Запросы к структуре дают возможность извлекать информацию (например, описания классов и соответствующих им методов, свойств и связей) из структуры WBEM. В WMI SDK приводятся ключевые слова, поддерживаемые WBEM Query Language. В SDK описан специфичный для WMI диалект WBEM Query Language, однако его синтаксис сходен с используемым в SQL.

Подготовка сценариев WMI

Перечень типов данных, доступ к которым можно получить с помощью WMI, и способов взаимодействия с ними едва ли не безграничен. До этого в качестве потребителей данных указывались только управляющие программы, например производство NetIQ (AppManager) и IBM (Tivoli Enterprise Solutions). Дополнительная информация об AppManager и Tivoli помещена во врезке «Программы управления».

Корпорация Microsoft также предоставила администраторам систем способ доступа к этим данным. Например, средство подготовки сценариев WMI Scripting API позволяет работать с COM-объектами, методами и свойствами с помощью Visual Basic (VB), VBScript, Jscript или любого другого механизма создания COM-сценариев. WMI предоставляет WMI Scripting API в распоряжение CIMOM. При написании сценария WMI программист обращается к CIMOM напрямую, опрашивая с его помощью провайдера или репозитарий. Сценарии WMI также можно задействовать для регистрации событий, запросов (с помощью WBEM Query Language) к свойствам объекта или изменения его настроек. Сценарии WMI можно использовать и для выполнения запросов и работы с данными WMI на удаленных машинах.

Инструментарий WMI Scripting API позволяет решать задачи, для которых не требуется использовать программы управления системами. Например, экземпляр класса Win32_ Process в WMI представляет процесс Win32, выполняющийся на рабочей станции. Как показано на Экране 6, с помощью входящей в состав SDK программы WMI Object Browser можно подключиться к пространству имен ootCIMV2, нажать кнопку Browse for Instance, выбрать Win32_Process и получить список всех процессов, выполняющихся в системе. В этом примере исследуется экземпляр notepad.exe, в правой панели показаны свойства, связанные с данным объектом, включая степень использования памяти и файла подкачки. Каждый экземпляр класса Win32_Process поддерживает четыре метода - Create, GetOwner, GetOwnerSid и Terminate.

Экран 6. Использование класса Win32_Process для отслеживания работающих процессов системы.

Несколько строк кода, приведенного на Рисунке 1, показывают, как можно обнаружить и прекратить работу экземпляра Microsoft Word, выполняющегося в системе. В этом коде использован цикл FOR...EACH для нумерации запущенных в системе процессов. Далее с помощью метода GetObject открывается пространство имен WMI, по умолчанию установленное в ootCIMV2, и задается уровень прав доступа. WMI использует учетную запись зарегистрированного в данный момент пользователя (или другую явно заданную учетную запись) для назначения прав доступа при выполнении запроса. При определении параметра impersonationLevel=impersonate, сценарий использует полномочия текущей учетной записи при подключении к пространству имен. Следующий далее набор команд ExecQuery («select * from Win32_Process where Name=?winword.exe?») представляет собой оператор языка WBEM Query Language. Его задача - выбрать все экземпляры класса Win32_process, у которых свойство Name равно winword.exe. Когда такой процесс будет обнаружен, выполняется метод Terminate для прекращения его работы.

Рисунок 1. WMI-сценарий обнаружения работающего процесса.

На Рисунке 1 показан пример использования сценариев WMI. Еще можно собирать информацию об аппаратном обеспечении на локальных и удаленных системах, считывать и изменять записи в системном реестре, получать информацию о статусе приложения, устанавливаемого с помощью Microsoft Installer (MSI - бывший Windows Installer). Образцы WMI-сценариев можно найти в Microsoft Windows 2000 Resource Kit. Существует несколько Web-сайтов, содержащих ресурсы для Windows Script Host (WSH) и примеры использования WMI. Среди них «Windows Scripting Host Bazaar» Гюнтера Борна (http://ourworld.compuserve.com/ homepages/guenter_born/wshbazaar/wshbazaar.htm), «WSH FAQ» Яна Морриша (http://wsh.glazier.co.nz) и «Win32 Scripting» Кларенса Вашингтона мл. (http://cwashington.netreach.net/main_site/default.asp).

Новые возможности администрирования

WMI в Windows 2000 Professional предоставляет непревзойденные средства управления Windows-системами и данными. Внедряя WMI и средства WMI Scripting API на Web-страницах и в сценариях, можно создавать такие варианты управления, которые обеспечат контроль инфраструктуры Windows 2000 на самом высоком уровне.

ОБ АВТОРЕ

Даррен Мар-Элиа - внештатный редактор журнала Windows NT Magazine. Специалист по архитектуре NT; занимается планированием развертывания сетей NT 4.0 и Windows 2000 в масштабах США. С автором можно связаться по адресу: dmarelia@earthlink.net.


Таблица 1. Провайдеры, поставляемые Microsoft по умолчанию.
НАИМЕНОВАНИЕ ПРОВАЙДЕРАФУНКЦИЯ ПРОВАЙДЕРА
Performance Monitor (Монитор производительности)Предоставляет интерфейс к данным монитора производительности (Performance Monitor).
Registry (Реестр)Показывает параметры системного реестра и их значения.
Registry event (События реестра)Позволяет перехватывать события, происходящие при изменении записей в системном реестре.
MSIПредоставляет данные о приложении, использующем формат MSI.
SNMPПерехватывает события SNMP от устройств, использующих этот протокол (например, сетевых компьютеров, серверов).
Windows NT event log (Журнал событий Windows NT)Обеспечивает доступ к системному журналу событий и создает событие при появлении новой записи.
Win32Поддерживает набор данных по основным аспектам систем Win32, включая такие свойства, как имя компьютера и его конфигурация.
Windows Driver Model (WDM) (Модель драйверов Windows)Позволяет разработанным в соответствии с WDM-драйверам устройств обмениваться управляющей информацией.

ПРОГРАММЫ УПРАВЛЕНИЯ

APPMANAGER

NetIQ

http://www.netiq.com/products

TIVOLI ENTERPRISE SOLUTIONS

IBM

http://www.tivoli.com/products/solutions