Best Practice: Unit monitor AlertOnStateshould correspond to an unhealthy state used in 2-state unit monitors

 

What does this best practice check for?

In an MP, it is a frequent occurrence to have unit monitor that raise alerts as they change state. As a best practice, the alert should be raised on the same state that the monitor reflects as being unhealthy.

Why is it important to follow this best practice? What is the impact of not following this best practice?

When alerts do not occur on the unhealthy state that is designated by the monitor, the alert will not show in the Operations Console. By design, on a two state monitor, if the unhealthy state is a Warning state, the alert should be raised on a Warning state; if the unhealthy monitor state is a Critical state, the alert should be written to be raised on a Critical state.

How do I fix this?

Using the Authoring Console:

1.        For all monitors, open the Properties dialog. In the Alerting tab, check that “Generate the Alert When:” matches the monitor’s unhealthy state.

Using XML:

< UnitMonitor ID = " Microsoft.Windows.Server.2008.LogicalDisk.AvailabilityHealth" Accessibility =" Public" Enabled =" onEssentialMonitoring" Target =" Server2008!Microsoft.Windows.Server.2008.LogicalDisk" ParentMonitorID =" SystemHealth!System.Health.AvailabilityState" Remotable =" true" Priority =" Normal" TypeID =" Microsoft.Windows.Server.2008.LogicalDisk.Monitortype" ConfirmDelivery =" false" >

       < Category > StateCollection </ Category >

       < AlertSettings AlertMessage = " Microsoft.Windows.Server.2008.LogicalDisk.AvailabilityHealth.AlertMessage" >

          < AlertOnState > Error </ AlertOnState >

         < AutoResolve > true </ AutoResolve >

         < AlertPriority > Normal </ AlertPriority >

         < AlertSeverity > Error </ AlertSeverity >

         < AlertParameters >

           < AlertParameter1 > $Target/Property[Type="Windows!Microsoft.Windows.LogicalDevice"]/Name$ </ AlertParameter1 >

         </ AlertParameters >

       </ AlertSettings >

       < OperationalStates >

          < OperationalState ID = " NotAvailabile" MonitorTypeStateID =" Bad" HealthState =" Error" />

         < OperationalState ID = " Availabile" MonitorTypeStateID =" Good" HealthState =" Success" />

       </ OperationalStates >

     </ UnitMonitor >