Hyper-V - Collect VM Uptime percentage

QND.Hyperv.2012R2.VMUptimePerc.Rule (Rule)

Element properties:

TargetQND.Hyperv.2012R2.VM
CategoryPerformanceCollection
EnabledTrue
Alert GenerateFalse
RemotableTrue

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource QND.Hyperv.2012R2.GetVMUptimePerf.DS Default
FilterVM ConditionDetection System.ExpressionFilter Default
CollectToDB WriteAction Microsoft.SystemCenter.CollectPerformanceData Default
CollectToDW WriteAction Microsoft.SystemCenter.DataWarehouse.PublishPerformanceData Default

Source Code:

<Rule ID="QND.Hyperv.2012R2.VMUptimePerc.Rule" Target="QND.Hyperv.2012R2.VM" Enabled="true" ConfirmDelivery="false" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>PerformanceCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="QND.Hyperv.2012R2.GetVMUptimePerf.DS">
<IntervalSeconds>3600</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<TraceLevel>2</TraceLevel>
<ObjectName>Virtual Machine</ObjectName>
<CounterName>Uptime %</CounterName>
<InstanceProperty>VMId</InstanceProperty>
<ValueProperty>PercUptime</ValueProperty>
</DataSource>
</DataSources>
<ConditionDetection ID="FilterVM" TypeID="System!System.ExpressionFilter">
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">/DataItem/InstanceName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type='QND.Hyperv.2012R2.VM']/VirtualMachineId$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</ConditionDetection>
<WriteActions>
<WriteAction ID="CollectToDB" TypeID="SC!Microsoft.SystemCenter.CollectPerformanceData"/>
<WriteAction ID="CollectToDW" TypeID="MSDL!Microsoft.SystemCenter.DataWarehouse.PublishPerformanceData"/>
</WriteActions>
</Rule>