Empty Target Group for Application Component Monitor

Microsoft.SystemCenter.Apm.ApplicationComponentGroup.EmptyApplicationComponentsMonitor (UnitMonitor)

Empty Target Group for Application Component Monitor checks for target groups that do not contain any servers hosting the applications.

Knowledge Base article:

Summary

The instance state becomes unhealthy if application components are scoped to an empty target group.

Causes

The .NET Application Performance Monitoring template lets you specify a target group that limits monitoring to members of that computer group. The target group can be set at the application group level, or specifically for individual application components through the customized settings dialog. If the target group is empty or does not contain any servers that host the application component, the application component will not be monitored.

Resolutions

This issue will resolve when you update the target group for the unhealthy application component to a computer group that contains servers hosting the application. To update the Target group to a valid computer group, use the Operations Console, go to the Authoring space and use the following steps:

Element properties:

TargetMicrosoft.SystemCenter.ApplicationMonitoring.Net.ApplicationComponentGroup
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.2SingleEventLog2StateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Empty Target Group for Application Component
The application components {1} included in {0} are scoped by target groups that do not contain any servers hosting the applications. These application components will not be monitored until the targeted group is updated to include servers that host the applications.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.Apm.ApplicationComponentGroup.EmptyApplicationComponentsMonitor" Accessibility="Public" Enabled="true" ParentMonitorID="Health!System.Health.ConfigurationState" Target="ApplicationMonitoring!Microsoft.SystemCenter.ApplicationMonitoring.Net.ApplicationComponentGroup" TypeID="Windows!Microsoft.Windows.2SingleEventLog2StateMonitorType" Remotable="true" Priority="Normal" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.Apm.ApplicationComponentGroup.EmptyApplicationComponentsMonitor.AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="ApplicationMonitoring!Microsoft.SystemCenter.ApplicationMonitoring.Net.ApplicationComponentGroup"]/ApplicationName$</AlertParameter1>
<AlertParameter2>$Data/Context/DataItem/Params/Param[5]$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="SecondEventRaised" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="FirstEventRaised" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<FirstComputerName>.</FirstComputerName>
<FirstLogName>Operations Manager</FirstLogName>
<FirstExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">.NET app monitoring</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">34433</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[4]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Id$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</FirstExpression>
<SecondComputerName>.</SecondComputerName>
<SecondLogName>Operations Manager</SecondLogName>
<SecondExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">.NET app monitoring</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">34416</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[4]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Id$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</SecondExpression>
</Configuration>
</UnitMonitor>