Resource State Monitor

Microsoft.Windows.Cluster.Resource.StateMonitoring (UnitMonitor)

Implements monitor for resource monitored by local cluster node.

Knowledge Base article:

Summary

This monitor checks the status of a cluster resource as it is known to local cluster node.

State

Operations Manager State

ClusterResourceInherited

Success

ClusterResourceOnline

Success

ClusterResourceInitializing

Warning

ClusterResourcePending

Warning

ClusterResourceOnlinePending

Warning

ClusterResourceOflinePending

Warning

ClusterResourceStateUnknown

Error

ClusterResourceOffline

Error (except for resources in Available Storage group)

ClusterResourceFailed

Error

Causes

An unhealthy state for this monitor indicates that the cluster resource is not online. This can happen for a few reasons including:

List resource properties

List resource dependencies

Resolutions

You can attempt to bring the cluster resource online by using the following link:

Bring resource online

Element properties:

TargetMicrosoft.Windows.Cluster.Resource
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.Cluster.CheckStatePoll
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Cluster.Resource.StateMonitoring" Accessibility="Public" Enabled="true" Target="ClusLibrary!Microsoft.Windows.Cluster.Resource" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="ClusLibrary!Microsoft.Windows.Cluster.CheckStatePoll" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Online" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Partial" HealthState="Warning"/>
<OperationalState ID="Error" MonitorTypeStateID="NotOnline" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ClusterObjectName>$Target/Property[Type='ClusLibrary!Microsoft.Windows.Cluster.Resource']/EscapedResourceName$</ClusterObjectName>
<PollInterval>300</PollInterval>
<SyncTime>12:10</SyncTime>
<ClusterObjectClass>MSCLUSTER_Resource</ClusterObjectClass>
<OnlineExpression>
<Or>
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(0|2)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type='ClusLibrary!Microsoft.Windows.Cluster.HostedGroup']/GroupName$</Value>
</ValueExpression>
<Operator>NotEqual</Operator>
<ValueExpression>
<Value Type="String">Available Storage</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(0|2|3)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type='ClusLibrary!Microsoft.Windows.Cluster.HostedGroup']/GroupName$</Value>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Available Storage</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</Or>
</OnlineExpression>
<OnlineExpressionOnDemand>
<Or>
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(0|2)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type='ClusLibrary!Microsoft.Windows.Cluster.HostedGroup']/GroupName$</Value>
</ValueExpression>
<Operator>NotEqual</Operator>
<ValueExpression>
<Value Type="String">Available Storage</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(0|2|3)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type='ClusLibrary!Microsoft.Windows.Cluster.HostedGroup']/GroupName$</Value>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Available Storage</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</Or>
</OnlineExpressionOnDemand>
<PartialExpression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(1|128|129|130)$</Pattern>
</RegExExpression>
</PartialExpression>
<PartialExpressionOnDemand>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(1|128|129|130)$</Pattern>
</RegExExpression>
</PartialExpressionOnDemand>
<NotOnlineExpression>
<Or>
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(-1|3|4)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type='ClusLibrary!Microsoft.Windows.Cluster.HostedGroup']/GroupName$</Value>
</ValueExpression>
<Operator>NotEqual</Operator>
<ValueExpression>
<Value Type="String">Available Storage</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(-1|4)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type='ClusLibrary!Microsoft.Windows.Cluster.HostedGroup']/GroupName$</Value>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Available Storage</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</Or>
</NotOnlineExpression>
<NotOnlineExpressionOnDemand>
<Or>
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(-1|3|4)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type='ClusLibrary!Microsoft.Windows.Cluster.HostedGroup']/GroupName$</Value>
</ValueExpression>
<Operator>NotEqual</Operator>
<ValueExpression>
<Value Type="String">Available Storage</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(-1|4)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type='ClusLibrary!Microsoft.Windows.Cluster.HostedGroup']/GroupName$</Value>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Available Storage</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</Or>
</NotOnlineExpressionOnDemand>
<WMIFields>Name, State</WMIFields>
</Configuration>
</UnitMonitor>