Autor: Pavel Řepa, Microsoft MVP, IT senior konzultant
Management packy mohou být k dispozici buď od výrobce aplikačního řešení, které chceme monitorovat nebo od komerčního výrobce management packů (např.: Quest Software). Pokud však chceme monitorovat aplikace, pro které management packy neexistují, nemusíme zoufat. V rámci Operations Manager 2007 R2 máme k dispozici šablony pro monitorování služeb a procesů. Díky těmto šablonám jsme schopni vytvořit základní pravidla pro monitorování konkrétních služeb a procesů na dostupnost a vytěžování CPU a operační paměti. Pro konkrétní aplikaci může být ale kritická také dostupnost záznamů v registrech. V tomto článku si popíšeme jak vytvořit monitorovací pravidla pro dohled dostupnosti klíče a hodnoty registru, abychom získali.
Jak vytvořit monitor pro kontrolu existence klíče registru
Pro vytvoření monitoru použijeme Authoring Console z System Center Operations Manager 2007 R2 Authoring Resource Kitu a zabudovaných vlastností operátorské konzole. Práce v Authoring Console není zcela jednoduchá, přičemž je samozřejmostí, že musíme znát základní strukturu management packů.
Spustíme Authoring Console a vytvoříme nový management pack (new empty management pack), který pojmenujeme např.: RegKeySampleMP. V dalším kroku přiřadíme nově vytvořenému management packu vlastnost MonitorType. V rámci Operations Manageru 2007 je na výběr mnoho MonitorType (např.: Basic Service Monitor, Event Timer Reset, Event Manual Reset), ale kontrola registrů zde chybí.
V levé části Authoring Console se přepneme do části Type Library -> Monitor Types. V části Action zvolíme New –> Composite Monitor Type a pojmenujeme jej “RegKeySampleMP.RegExistsMonitorType”. Otevře se nám okno s nastavením, kde na úvodní stránce (záložka General) doplníme název “DT - Check Existence of RegKey Monitor Type”.
Na záložce States definujeme typ monitoru. Vybereme 2 State Monitor Type a doplníme ID of state 1: RegKeyExists a ID of state 2: RegKeyMissing.
Na záložce Member modules doplníme datový zdroj pro přístup do registrů pomocí dvoustupňové detekce (jeden pro dobrý stav (RegKeyExists) a jeden pro špatný stav (RegKeyMissing). Stiskneme Add a vyhledáme datový zdroj Microsoft.Windows.RegistryProvider. Doplníme ModuleID (zde RegistryDS) a stiskneme OK. Otevře se nám nastavení provideru, kde doplníme následující:
ComputerName – místo původního testu doplníme: “$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$” (bez uvozovek) Jedná se o proměnou, která řekne workflow, aby se propojila s registry lokálního počítače
- AttributeName – Název atributu, (zde XeroxRegExists).
- Path – cesta ke klíči v registrech. HKLM se nedoplňuje (zde SOFTWARE\Xerox).
- PathType – použijeme “0” pro klíč, “1” je pro hodnotu.
- Attribute Type – použijeme 0 – Boolean (true or false).
- Frequency – vložíme hodnotu 86400 (frekvence ve vteřinách = 1 den).

Po doplnění informací stiskneme OK. Na záložce Member Modules přidáme další modul. V okně Choose Module Type vyhledáme System.ExpressionFilter, který pojmenujeme CDExists. Tento filtr nám umožní přidávat podmínky do výstupu z monitorovacího typu. Doplníme parametry pro XPathQuery – použijeme jméno atributu z konfigurace provideru ve tvaru Values/XeroxRegExists. Pro volbu Operator ponecháme hodnotu Equals.
Na záložce Member Modules přidáme třetí modul. V okně Choose Module Type znovu vyhledáme System.ExpressionFilter, který pojmenujeme CDMissing. Doplníme parametry pro XPathQuery – použijeme jméno atributu z konfigurace provideru ve tvaru Values/XeroxRegExists. Pro volbu Operator ponecháme hodnotu Equals.

Po doplnění modulů na záložce Regular definujeme pořadí činností pro jednotlivé stavy. Nejprve označíme stav RegKeyExists a ve spodní části okna vybereme pořadí jednotlivých modulů. Pro RegistryDS vybereme CDExists a pro CDExists vybereme Monitor State Output. Dále označíme stav RegKeyMissing, ve spodní části okna vybereme pořadí pro RegistryDS vybereme CDMissing a pro CDMissing vybereme Monitor State Output.

Nyní máme vytvořený MonitorType a v dalším kroku vytvoříme monitor. V rámci Authoring Console se přepneme do části Health Model a zde vybereme Monitors. Z Action panelu zvolíme New -> Custom Unit Monitor. Doplníme název (zde - RegKeySampleMP.RegExistsMonitor) a otevřou se nám vlastnosti, kde na úvodní stránce vyplníme jméno (zde DT - Monitor for Existence of Xerox Registry), v poli Target vybereme z menu Microsoft.Windows.Server.OperatingSystem a v poli Parent Monitor vybereme System.Health.ConfigurationState. Při konfiguraci monitoru vždy vyberte konkrétní monitor (Availability, Configuration, Performance nebo Security), nikdy nenechávejte původní nastavení.
Na záložce Configuration doplníme MonitorType stisknutím odkazu Browse for a Type a vybráním námi dříve vytvořeného. Na záložce Health tab vybereme z nabídky správné stavy pro jednotlivé podmínky. Na záložce Alerting můžeme doplnit parametry pro automatické generování události.
A to je vše. Nyní otestujeme nový management pack v testovacím prostředí. Z menu Tools v Authoring Console vyberme položku Export MP to Management Group a doplníme název Operations Manager management serveru. Pokud se podíváme do operátorské konzole Operations Manageru, uvidíme zde nyní nový management pack a po krátké také první hlášení o chybějících klíčích registru.

Jak vytvořit monitor pro kontrolu hodnoty v klíči registru
Kontrola dostupnosti klíče sama o sobě ještě neznamená, že aplikace instalovaná ve Windows má správně nastaveny konfigurační hodnoty. Mnoho aplikací ukládá tyto informace do registrů. A my si nyní popíšeme, jak tyto informace sledovat pomocí Operations Manageru 2007.
Pokud chceme vytvořit kontrolu dostupnosti hodnot v klíčích registru, budeme postupovat podobně jako u klíče samotného. V Authoring Console vytvoříme nový management pack (Windows Application (Registry), který pojmenujeme např.: RegValueSampleMP. V dalším kroku přiřadíme nově vytvořenému management packu vlastnost MonitorType.
V levé části Authoring Console se přepneme do části Type Library -> Monitor Types. V části Action zvolíme New –> Composite Monitor Type a pojmenujeme jej “RegValueSampleMP.MonitorType”. Otevře se nám okno s nastavením, kde na úvodní stránce (záložka General) doplníme název “DT - Check Existence of Reg Value Monitor Type”.
Na záložce States definujeme typ monitoru. Vybereme 2 State Monitor Type a doplníme ID of state 1: RegValueExists a ID of state 2: RegValueMissing.
Na záložce Member modules doplníme datový zdroj pro přístup do registrů pomocí dvoustupňové detekce (jeden pro dobrý stav (RegKeyExists) a jeden pro špatný stav (RegKeyMissing). Stiskneme Add a vyhledáme datový zdroj Microsoft.Windows.RegistryProvider. Doplníme ModuleID (zde RegistryDS) a stiskneme OK. Otevře se nám nastavení provideru, kde doplníme následující:
Poznámka: Zde je hlavní rozdíl mezi kontrolou klíče a hodnoty registru.
ComputerName – místo původního testu doplníme: “$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$” (bez uvozovek) Jedná se o proměnou, která řekne workflow, aby se propojila s registry lokálního počítače
- AttributeName – název atributu, zde použijeme LogLevel.
- Path – cesta ke klíči v registrech. HKLM se nedoplňuje (zde SOFTWARE\Jalasoft\Xian Network Manager Connector Module).
- PathType – použijeme “1” pro hodnotu, “0” je pro klíč.
- Attribute Type – použijeme 1 – String (podrobnější informace o datových typech naleznete ZDE).
- Frequency – vložíme hodnotu 86400 (frekvence ve vteřinách = 1 den).
Nyní na záložce Member Modules přidáme další modul. V okně Choose Module Type vyhledáme System.ExpressionFilter, který pojmenujeme CDValueExists. Tento filtr nám umožní přidávat podmínky do výstupu z monitorovacího typu. Doplníme parametry pro XPathQuery – použijeme jméno atributu z konfigurace provideru ve tvaru Values/LogLevel. Pro volbu Operator doplníme hodnotu Matches regular expression a nakonec doplníme ^(1|2|3|4)$.

Na záložce Member Modules přidáme třetí modul. V okně Choose Module Type znovu vyhledáme System.ExpressionFilter, který pojmenujeme CDValueMissing. Doplníme parametry pro XPathQuery – použijeme jméno atributu z konfigurace provideru ve tvaru Values/LogLevel. Pro volbu Operator doplníme hodnotu Does not match regular expression a nakonec doplníme ^(1|2|3|4)$.

Po doplnění modulů na záložce Regular definujeme pořadí činností pro jednotlivé stavy. Nejprve označíme stav RegKeyExists a ve spodní části okna vybereme pořadí jednotlivých modulů. Pro RegistryDS vybereme CDValueExists a pro CDValueExists vybereme Monitor State Output. Dále označíme stav RegKeyMissing, ve spodní části okna vybereme pořadí pro RegistryDS vybereme CDValueMissing a pro CDValueMissing vybereme Monitor State Output.
Nyní máme vytvořený MonitorType a v dalším kroku vytvoříme monitor. V rámci Authoring Console se přepneme do části Health Model a zde vybereme Monitors. Z Action panelu zvolíme New -> Custom Unit Monitor. Doplníme název (zde - RegValueSampleMP.RegExistsMonitor) a otevřou se nám vlastnosti, kde na úvodní stránce vyplníme jméno (zde DT - Monitor for Existence of Registry Value), v poli Target vybereme z menu Microsoft.Windows.Server.OperatingSystem a v poli Parent Monitor vybereme System.Health.ConfigurationState. Na záložce Configuration doplníme MonitorType stisknutím odkazu Browse for a Type a vybráním námi dříve vytvořeného. Na záložce Health tab vybereme z nabídky správné stavy pro jednotlivé podmínky. Na záložce Alerting můžeme doplnit parametry pro automatické generování události.
Kontrolu funkčnosti lze opět provést po importu do Operations Manageru 2007 pomocí operátorské konzole.