Recopilar datos de tiempo medio de ejecución (ms) de estadísticas .NET

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

Recopilar datos del contador de rendimiento de tiempo medio de ejecución (ms) de estadísticas .NET

Knowledge Base article:

Resumen

El estado de la instancia pasa a ser incorrecto si el tiempo medio de solicitud por período de tiempo definido supera el umbral de monitor.

Causas

Se generan alertas de rendimiento de transacción cuando el número de eventos de rendimiento supera el umbral de monitor configurado.

Las llamadas de base de datos excesivamente largas pueden deberse a un problema en el servidor o a la estructura y la complejidad de la consulta. Los tiempos largos de E/S de archivos pueden deberse a problemas en el servidor de archivos. Pueden producirse problemas de rendimiento de servicio web porque el servicio web o el servidor en el que reside se encuentran inactivos, o porque hay un problema en el código del servicio web. Los tiempos largos de ejecución interna de las aplicaciones pueden deberse a un código complejo o ineficiente.

Soluciones

El deterioro típico del rendimiento de una aplicación puede deberse a una llamada larga de base de datos o de servicio web, a una llamada lenta de comunicación remota .NET o de COM+, o a un código de aplicación ineficiente.

Element properties:

TargetMicrosoft.SystemCenter.Apm.Transaction
Parent MonitorSystem.Health.PerformanceState
CategoryCustom
EnabledFalse
Instance Name.NET Statistic
Counter NameAvg execution time
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableFalse
AccessibilityPublic
Alert Message
El tiempo medio de ejecución de estadísticas .NET superó el umbral
El contador de rendimiento de tiempo medio de ejecución de estadísticas .NET superó el umbral configurado de {0} ms. El valor del contador de rendimiento es {1} ms.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.Apm.Transaction.AvgRequestTimeMonitor" Accessibility="Public" Enabled="false" Target="Microsoft.SystemCenter.Apm.Transaction" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="false" Priority="Normal" TypeID="Performance!System.Performance.ConsecutiveSamplesThreshold" ConfirmDelivery="false">
<Category>Custom</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.Apm.Transaction.AvgRequestTimeMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="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>Avg execution time</CounterName>
<ObjectName>.NET Statistic</ObjectName>
<InstanceName>$Target/Property[Type="Microsoft.SystemCenter.Apm.Transaction"]/CounterInstance$</InstanceName>
<AllInstances>false</AllInstances>
<Frequency>$Target/Property[Type="Microsoft.SystemCenter.Apm.TransactionBase"]/AvgRequestTimeMonitorInterval$</Frequency>
<Threshold>$Target/Property[Type="Microsoft.SystemCenter.Apm.TransactionBase"]/AvgRequestTimeMonitorThreshold$</Threshold>
<Direction>greater</Direction>
<NumSamples>3</NumSamples>
</Configuration>
</UnitMonitor>