Collect .NET CSM Statistic/\% of Performance violations/sec

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

Collect .NET CSM Statistic/\% of Performance violations/sec performance counter

Knowledge Base article:

Summary

The instance state becomes unhealthy if the rate of client-side performance events per defined time period exceeds the monitor threshold.

Causes

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

This counter reports the number of times a webpage or Ajax call in the monitored application exceeded the acceptable load time per second.

Excessively long network request times might be due to an unbalanced network.

Long server processing might be due to 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 Name\% of Performance violations/sec
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableFalse
AccessibilityPublic
Alert Message
.NET CSM Statistic/\% of Performance violations/sec exceeded the threshold
The .NET CSM Statistic/\% of Performance violations/sec performance counter has exceeded the configured threshold of {0}\%. The performance counter value was {1}\%.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.Apm.CsmTransaction.PerformanceRateMonitor" 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.PerformanceRateMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="AL!Microsoft.SystemCenter.Apm.TransactionBase"]/PerformanceRateMonitorThreshold$</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>% of Performance violations/sec</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"]/PerformanceRateMonitorInterval$</Frequency>
<Threshold>$Target/Property[Type="AL!Microsoft.SystemCenter.Apm.TransactionBase"]/PerformanceRateMonitorThreshold$</Threshold>
<Direction>greater</Direction>
<NumSamples>3</NumSamples>
</Configuration>
</UnitMonitor>