Collect .NET CSM Statistic/Avg execution time (ms)

Microsoft.SystemCenter.Apm.CsmTransaction.AvgRequestTimeMonitor (UnitMonitor)

Collect .NET CSM Statistic/Avg execution time performance counter (ms)

Knowledge Base article:

Summary

The instance state becomes unhealthy if the average request time for the webpage loading on the browser per defined time period exceeds the monitor threshold.

Causes

Transaction performance alerts are generated when the average duration of client-side performance events exceeds the configured monitor threshold.

Excessively long network request times might be caused by an unbalanced network.

Long server processing might be caused by complex or inefficient source code.

Page loading time performance issues might occur because of either large page size or a large number of java scripts.

Long Window.OnLoad performance issues might result from long JavaScript handlers execution.

Resolutions

A typical long page load call can be caused by an unbalanced network, long server processing time, long page loading time, or Window.OnLoad time.

Element properties:

TargetMicrosoft.SystemCenter.Apm.CsmTransaction
Parent MonitorSystem.Health.PerformanceState
CategoryCustom
EnabledFalse
Instance Name.NET CSM Statistic
Counter NameAverage page request execution time
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableFalse
AccessibilityPublic
Alert Message
.NET CSM Statistic/Avg. Request Time exceeded the threshold.
The .NET CSM Statistic/Avg execution time performance counter has exceeded the configured threshold of {0} ms. The performance counter value was {1} ms.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.Apm.CsmTransaction.AvgRequestTimeMonitor" Accessibility="Public" Enabled="false" Target="Microsoft.SystemCenter.Apm.CsmTransaction" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="false" Priority="Normal" TypeID="Performance!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>Custom</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.Apm.CsmTransaction.AvgRequestTimeMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="AL!Microsoft.SystemCenter.Apm.TransactionBase"]/AvgRequestTimeMonitorThreshold$</AlertParameter1>
<AlertParameter2>$Data/Context/SampleValue$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="ConditionFalse" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="ConditionTrue" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>Average page request execution time</CounterName>
<ObjectName>.NET CSM Statistic</ObjectName>
<InstanceName>$Target/Property[Type="Microsoft.SystemCenter.Apm.CsmTransaction"]/CounterInstance$</InstanceName>
<AllInstances>false</AllInstances>
<Frequency>$Target/Property[Type="AL!Microsoft.SystemCenter.Apm.TransactionBase"]/AvgRequestTimeMonitorInterval$</Frequency>
<Threshold>$Target/Property[Type="AL!Microsoft.SystemCenter.Apm.TransactionBase"]/AvgRequestTimeMonitorThreshold$</Threshold>
<Direction>greater</Direction>
<NumSamples>3</NumSamples>
</Configuration>
</UnitMonitor>