Helper Monitor - Promote Passive or Disabled service's state from Yellow to Green

Microsoft.Amalga.UIS.2009.Monitoring.ServiceUpMonitorActiveHelper (UnitMonitor)

This monitor is solely for the purpose of promoting a service's up/down state from Yellow to Green. Yellow can happen when the service is Passive or when the service startup mode is marked as Disabled. To avoid rolling up Yellow in the diagram view, this helper was constructed. A limitation in SCOM prevents the cluster-aware monitor from having 2 Green states in a 3-state monitor. To work around this, we must do a Best Of aggregate monitor using the cluster-aware up/down monitor + this helper monitor.

Knowledge Base article:

Summary

This monitor is a helper only, assisting the cluster-aware service up/down monitor. It is solely for the purpose of promoting a Passive node's Yellow state to a Green state, or promoting a Disabled service's Yellow state to a Green state.

Resolutions

The state of this helper monitor may be ignored, but do not disable it.

Additional

This helper monitor works in tandem with the 'Windows service is running (node level, cluster aware)' monitor. Do not disable this helper monitor.

Technical Details:

When the 'Windows service is running (node level, cluster aware)' monitor is running/green, this helper monitor is intentionally yellow.

When the 'Windows service is running (node level, cluster aware)' monitor is stopped/red, this helper monitor is intentionally red.

When the 'Windows service is running (node level, cluster aware)' monitor is yellow/passive or disabled (up/down state ignored), this helper monitor is intentionally green.

By taking the Best result from the service up/down state, and this helper's state, we achieve the desired aggregate results: (and Yellow Passive is promoted to Green)

Service Up/Down=Green, Helper=Yellow, Best Of Aggregate=Green

Service Up/Down=Red, Helper=Red, Best Of Aggregate=Red

Service Up/Down=Yellow, Helper=Green, Best Of Aggregate=Green

Element properties:

TargetMicrosoft.Amalga.UIS.2009.WindowsServiceNode
Parent MonitorMicrosoft.Amalga.UIS.2009.Monitoring.ActiveNodeAggregate
CategoryCustom
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Amalga.Library.ServiceRunning.MonitorType
RemotableTrue
AccessibilityPublic
RunAsMicrosoft.Amalga.Library.Monitoring.RunAsAccount

Source Code:

<UnitMonitor ID="Microsoft.Amalga.UIS.2009.Monitoring.ServiceUpMonitorActiveHelper" Accessibility="Public" Enabled="onEssentialMonitoring" Target="Amalga2009Discovery!Microsoft.Amalga.UIS.2009.WindowsServiceNode" ParentMonitorID="Microsoft.Amalga.UIS.2009.Monitoring.ActiveNodeAggregate" Remotable="true" Priority="Normal" RunAs="AmalgaLib!Microsoft.Amalga.Library.Monitoring.RunAsAccount" TypeID="AmalgaLib!Microsoft.Amalga.Library.ServiceRunning.MonitorType" ConfirmDelivery="true">
<Category>Custom</Category>
<OperationalStates>
<OperationalState ID="UIGeneratedOpStateId7e321761382b4d0a86838a710f2a4f35" MonitorTypeStateID="Running" HealthState="Warning"/>
<OperationalState ID="UIGeneratedOpStateId1143169e9bc84a159cf3a0e14005a3d4" MonitorTypeStateID="NotRunning" HealthState="Error"/>
<OperationalState ID="UIGeneratedOpStateId2949fd50208b48aebd0662583bb6e96d" MonitorTypeStateID="PassiveNodeInactive" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>60</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>45</TimeoutSeconds>
<ComputerName>$Target/Property[Type="AmalgaLib!Microsoft.Amalga.Library.AmalgaWindowsServiceNode"]/VIPName$</ComputerName>
<ServiceName>$Target/Property[Type="AmalgaLib!Microsoft.Amalga.Library.AmalgaWindowsServiceNode"]/ServiceInstanceName$</ServiceName>
</Configuration>
</UnitMonitor>