Best Practice: Unit monitors should not have manual reset states

 

What does this best practice check for?

In an MP, a monitor will change its state from green to yellow or red when whatever it is found to be monitoring goes into an unhealthy state. As a best practice, the operator, the end-user of the management pack, should not have to manually reset the health of a monitor to go back to green once the issue has been fixed. The monitor should have logic built in such that it can detect when the monitor is no longer in an unhealthy state.  

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

For operators to have to manually reset monitors back to a green health state is a tedious process that increases dissatisfaction. If a management pack is intended to monitor health, it can only make the claim to do so if it is monitoring for when monitors enter an unhealthy state, as well as when they return to a healthy state. Some common ways to detect if a monitor has returned to a healthy state are: if the unhealthy event repeatedly occurs at some interval, a green state could be detected if the unhealthy event has not occurred for a certain amount of time. Also, sometimes, monitors have green events, which detect when a problem has been fixed.

How do I fix this?

Using the Authoring Console:

1.        When building monitors using the Authoring Console, do not build a monitor of type “Manual Reset.”

Using XML:

BAD

     < UnitMonitor ID = " Microsoft.Windows.HyperV.2008.VirtualDrive.MediaAlreadyPresentMonitor" Accessibility =" Public" Enabled =" onEssentialMonitoring" Target =" HVLib!Microsoft.Windows.HyperV.VirtualDrive" ParentMonitorID =" Health!System.Health.AvailabilityState" Remotable =" true" Priority =" Normal" TypeID =" Windows!Microsoft.Windows.SingleEventLogManualReset2StateMonitorType" ConfirmDelivery =" true" >

       < Category > EventCollection </ Category >

     

       < OperationalStates >

          < OperationalState ID = " MediaAlreadyPresent" MonitorTypeStateID =" EventRaised" HealthState =" Error" />

          < OperationalState ID = " ManualReset" MonitorTypeStateID =" ManualResetEventRaised" HealthState =" Success" />

       </ OperationalStates >

     

      </ UnitMonitor >

GOOD

< 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 >

       

       < OperationalStates >

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

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

       </ OperationalStates >

       

     </ UnitMonitor >