Two-state event based monitor with timer

Microsoft.SystemCenter.DataWarehouse.2SingleEventLogTimed2StateUnitMonitorType (UnitMonitorType)

Monitor switches to good state if a given good event appears; monitor switches to bad state if given bad event appears and no good event is registered within a given time frame

Element properties:

RunAsDefault
AccessibilityPublic
Support Monitor RecalculateFalse

Member Modules:

ID Module Type TypeId RunAs 
CorrelatorFirstDataSource DataSource Microsoft.Windows.BaseEventProvider Default
CorrelatorSecondDataSource DataSource Microsoft.Windows.BaseEventProvider Default
SecondDataSource DataSource Microsoft.Windows.BaseEventProvider Default
CorrelatorFirstFilterCondition ConditionDetection System.ExpressionFilter Default
CorrelatorSecondFilterCondition ConditionDetection System.ExpressionFilter Default
MissingEventCorrelator ConditionDetection System.CorrelatorAutoMissingCondition Default
SecondFilterCondition ConditionDetection System.ExpressionFilter Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
TimeIntervalSecondsint$Config/TimeIntervalSeconds$Maximum allowed recovery time (seconds)Time interval in seconds the monitor will wait before switching to bad state after bad event in registered

Source Code:

<UnitMonitorType ID="Microsoft.SystemCenter.DataWarehouse.2SingleEventLogTimed2StateUnitMonitorType" Accessibility="Public">
<MonitorTypeStates>
<MonitorTypeState ID="SecondEventRaised" NoDetection="false"/>
<MonitorTypeState ID="FirstEventRaisedAndNoSecondEventRaisedInTimeInterval" NoDetection="false"/>
</MonitorTypeStates>
<Configuration>
<xsd:element name="WorkflowName" type="xsd:string"/>
<xsd:element name="FirstEventId" type="xsd:int"/>
<xsd:element name="SecondEventId" type="xsd:int"/>
<xsd:element name="TimeIntervalSeconds" type="xsd:int"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="TimeIntervalSeconds" ParameterType="int" Selector="$Config/TimeIntervalSeconds$"/>
</OverrideableParameters>
<MonitorImplementation>
<MemberModules>
<DataSource TypeID="Windows!Microsoft.Windows.BaseEventProvider" ID="SecondDataSource">
<ComputerName>.</ComputerName>
<LogName>Operations Manager</LogName>
</DataSource>
<DataSource TypeID="Windows!Microsoft.Windows.BaseEventProvider" ID="CorrelatorFirstDataSource">
<ComputerName>.</ComputerName>
<LogName>Operations Manager</LogName>
</DataSource>
<DataSource TypeID="Windows!Microsoft.Windows.BaseEventProvider" ID="CorrelatorSecondDataSource">
<ComputerName>.</ComputerName>
<LogName>Operations Manager</LogName>
</DataSource>
<ConditionDetection TypeID="System!System.ExpressionFilter" ID="CorrelatorFirstFilterCondition">
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Integer">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="Integer">$Config/FirstEventId$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[1]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/ManagementGroup/Name$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[2]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Config/WorkflowName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</ConditionDetection>
<ConditionDetection TypeID="System!System.ExpressionFilter" ID="CorrelatorSecondFilterCondition">
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Integer">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="Integer">$Config/SecondEventId$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[1]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/ManagementGroup/Name$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[2]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Config/WorkflowName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</ConditionDetection>
<ConditionDetection TypeID="System!System.ExpressionFilter" ID="SecondFilterCondition">
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="Integer">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="Integer">$Config/SecondEventId$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[1]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/ManagementGroup/Name$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[2]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Config/WorkflowName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</ConditionDetection>
<ConditionDetection TypeID="System!System.CorrelatorAutoMissingCondition" ID="MissingEventCorrelator">
<Correlator>
<CorrelationExpression/>
<Count>1</Count>
<Interval>$Config/TimeIntervalSeconds$</Interval>
<CorrelationOrder>InSequence</CorrelationOrder>
<CorrelationItemPolicy>First</CorrelationItemPolicy>
</Correlator>
</ConditionDetection>
</MemberModules>
<RegularDetections>
<RegularDetection MonitorTypeStateID="SecondEventRaised">
<Node ID="SecondFilterCondition">
<Node ID="SecondDataSource"/>
</Node>
</RegularDetection>
<RegularDetection MonitorTypeStateID="FirstEventRaisedAndNoSecondEventRaisedInTimeInterval">
<Node ID="MissingEventCorrelator">
<Node ID="CorrelatorFirstFilterCondition">
<Node ID="CorrelatorFirstDataSource"/>
</Node>
<Node ID="CorrelatorSecondFilterCondition">
<Node ID="CorrelatorSecondDataSource"/>
</Node>
</Node>
</RegularDetection>
</RegularDetections>
</MonitorImplementation>
</UnitMonitorType>