Windows Service Wildcard Monitor

WildCardTemplate.Template (Template)

This template allows you to monitor WindowsServices with WMI query using query insted of just selecting one service.

Source Code:

<Template ID="WildCardTemplate.Template">
<Configuration>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Name" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Description" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="WmiQuery" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ServiceGroup" type="xsd:string"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="TemplateGuid" type="xsd:string"/>
</Configuration>
<References>
<Reference ID="Self"/>
<Reference ID="SystemCenter"/>
<Reference ID="SystemLibrary"/>
<Reference ID="Health"/>
<Reference ID="Windows"/>
<Reference ID="MSNL"/>
</References>
<Implementation>
<TypeDefinitions>
<EntityTypes>
<ClassTypes>
<ClassType ID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$" Accessibility="Public" Abstract="false" Base="$Reference/MSNL$Microsoft.SystemCenter.OwnProcessNTService" Hosted="true" Singleton="false"/>
</ClassTypes>
</EntityTypes>
</TypeDefinitions>
<Monitoring>
<Discoveries>
<Discovery ID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$.DiscoveryRule" Enabled="false" Target="$Reference/Windows$Microsoft.Windows.Computer" ConfirmDelivery="false" Remotable="true" Priority="Normal">
<Category>Discovery</Category>
<DiscoveryTypes>
<DiscoveryClass TypeID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$"/>
</DiscoveryTypes>
<DataSource ID="DS" TypeID="$Reference/Windows$Microsoft.Windows.WmiProviderWithClassSnapshotDataMapper">
<NameSpace>root\cimv2</NameSpace>
<Query>$TemplateConfig/WmiQuery$</Query>
<Frequency>3600</Frequency>
<ClassId>$MPElement[Name="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$"]$</ClassId>
<InstanceSettings>
<Settings>
<Setting>
<Name>$MPElement[Name="$Reference/Windows$Microsoft.Windows.Computer"]/PrincipalName$</Name>
<Value>$Target/Property[Type="$Reference/Windows$Microsoft.Windows.Computer"]/PrincipalName$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name="$Reference/MSNL$Microsoft.SystemCenter.NTService"]/ServiceName$</Name>
<Value>$Data/Property[@Name='Name']$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name="$Reference/MSNL$Microsoft.SystemCenter.NTService"]/ServiceProcessName$</Name>
<Value>$Data/Property[@Name='PathName']$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name="$Reference/MSNL$Microsoft.SystemCenter.NTService"]/DisplayName$</Name>
<Value>$Data/Property[@Name='DisplayName']$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name="$Reference/MSNL$Microsoft.SystemCenter.NTService"]/Description$</Name>
<Value>$Data/Property[@Name='Description']$</Value>
</Setting>
<Setting>
<Name>$MPElement[Name="$Reference/SystemLibrary$System.Entity"]/DisplayName$</Name>
<Value>$Data/Property[@Name='DisplayName']$</Value>
</Setting>
</Settings>
</InstanceSettings>
</DataSource>
</Discovery>
</Discoveries>
<Monitors>
<UnitMonitor ID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$.ServiceState.Monitor" Accessibility="Public" Enabled="true" Target="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$" ParentMonitorID="$Reference/Health$System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="$Reference/Windows$Microsoft.Windows.CheckNTServiceStateMonitorType" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$.ServiceState.Monitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>High</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="$Reference/MSNL$Microsoft.SystemCenter.NTService"]/DisplayName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="$Reference/Windows$Microsoft.Windows.Computer"]/NetworkName$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Running" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="NotRunning" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="$Reference/Windows$Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<ServiceName>$Target/Property[Type="$Reference/MSNL$Microsoft.SystemCenter.NTService"]/ServiceName$</ServiceName>
<CheckStartupType>true</CheckStartupType>
</Configuration>
</UnitMonitor>
</Monitors>
<Overrides>
<DiscoveryPropertyOverride ID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$.Discovery.Override" Context="$Reference/SystemLibrary$System.Entity" ContextInstance="$TemplateConfig/ServiceGroup$" Enforced="false" Discovery="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$.DiscoveryRule" Property="Enabled">
<Value>true</Value>
</DiscoveryPropertyOverride>
</Overrides>
</Monitoring>
<Presentation>
<StringResources>
<StringResource ID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$.ServiceState.Monitor.AlertMessage"/>
</StringResources>
</Presentation>
<LanguagePacks>
<LanguagePack ID="ENU" IsDefault="false">
<DisplayStrings>
<DisplayString ElementID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$">
<Name>Service WildCard Template $TemplateConfig/Name$</Name>
<Description>$TemplateConfig/ServiceScopeGroup$</Description>
</DisplayString>
<DisplayString ElementID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$.DiscoveryRule">
<Name>Service WildCard Template $TemplateConfig/Name$ Discovery</Name>
<Description>Service Template $TemplateConfig/Name$ Discovery</Description>
</DisplayString>
<DisplayString ElementID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$.ServiceState.Monitor">
<Name>Service Running State</Name>
<Description>Monitors the current status of the Windows service. An alert from this monitor indicates the Windows Service is not currently running</Description>
</DisplayString>
<DisplayString ElementID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$.ServiceState.Monitor" SubElementID="Error">
<Name>Service is not running</Name>
<Description>Service is not running</Description>
</DisplayString>
<DisplayString ElementID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$.ServiceState.Monitor" SubElementID="Success">
<Name>Service is running</Name>
<Description>Service is running</Description>
</DisplayString>
<DisplayString ElementID="CV.WildCardService.$TemplateConfig/Name$.$TemplateConfig/TemplateGuid$.ServiceState.Monitor.AlertMessage">
<Name>Windows Service Stopped</Name>
<Description>The '{0}' service on computer {1} has stopped running</Description>
</DisplayString>
</DisplayStrings>
</LanguagePack>
</LanguagePacks>
</Implementation>
</Template>