S2D 2016: Storage Subsystem Health State Monitor

Microsoft.Windows.Server.10.0.Storage.StorageSpacesDirect.StorageSubSystem.SteadyStateMonitor (UnitMonitor)

Monitor for Storage Spaces Direct 2016 Storage Subsystem health state

Knowledge Base article:

Summary

Storage Subsystem Health State Monitor changes the state when the state of the Storage Subsystem is unhealthy.

Element properties:

TargetMicrosoft.Windows.Server.10.0.Storage.StorageSpacesDirect.StorageSubSystem
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveFalse
Monitor TypeMicrosoft.Windows.Server.10.0.Storage.StorageSpacesDirect.StorageObject.SteadyStateMonitorType
RemotableTrue
AccessibilityPublic
RunAsMicrosoft.Storage.Library.MonitoringRunAsProfile

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.10.0.Storage.StorageSpacesDirect.StorageSubSystem.SteadyStateMonitor" Accessibility="Public" Target="Microsoft.Windows.Server.10.0.Storage.StorageSpacesDirect.StorageSubSystem" RunAs="MicrosoftStorageLibrary!Microsoft.Storage.Library.MonitoringRunAsProfile" ParentMonitorID="SystemHealth!System.Health.AvailabilityState" Remotable="true" TypeID="Microsoft.Windows.Server.10.0.Storage.StorageSpacesDirect.StorageObject.SteadyStateMonitorType" Enabled="true">
<Category>AvailabilityHealth</Category>
<OperationalStates>
<OperationalState ID="Critical" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="Healthy" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<TargetInstanceUniqueID>$Target/Property[Type="MicrosoftStorageLibrary!Microsoft.Storage.Library.StorageArray"]/UniqueID$</TargetInstanceUniqueID>
<TargetInstanceObjectID>$Target/Property[Type="Microsoft.Windows.Server.10.0.Storage.StorageSpacesDirect.StorageSubSystem"]/ObjectId$</TargetInstanceObjectID>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</ComputerName>
<WQLQuery>Select SourceUniqueId, SourceObjectId, PreviousHealthStatus, CurrentHealthStatus From MSFT_StorageHealthStatusChangeEvent Where SourceClassName = 'MSFT_StorageSubSystem'</WQLQuery>
<PollInterval>15</PollInterval>
<TimeoutSeconds>300</TimeoutSeconds>
<StorageClassName>MSFT_StorageSubSystem</StorageClassName>
</Configuration>
</UnitMonitor>