Собирать "Приложения .NET/Средн. время запроса (мс)"

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

Собирать значения счетчика производительности "Приложения .NET/Средн. время запроса (мс)"

Knowledge Base article:

Краткое описание

Экземпляр переходит в неработоспособное состояние, если среднее время запроса за заданный промежуток времени превышает пороговое значение монитора.

Причины

Предупреждения о производительности приложения создаются, когда количество событий производительности превышает пороговое значение монитора.

Слишком длительные вызовы базы данных могут быть обусловлены неполадкой сервера или структурой и сложностью запроса. Медленные операции ввода-вывода могут быть обусловлены неполадкой файлового сервера. Неполадки производительности веб-служб могут быть вызваны неисправностями сервера, на котором выполняются веб-службы, или неполадками в коде веб-служб. Медленное внутреннее выполнение приложений может быть вызвано излишне сложным или нерациональным кодом.

Решения

Снижение производительности приложений обычно может быть вызвано длительными вызовами базы данных, длительными вызовами веб-служб, медленными удаленными вызовами .NET, медленными вызовами COM+ или нерациональным кодом приложений.

Element properties:

TargetMicrosoft.SystemCenter.Apm.ApplicationInstance
Parent MonitorSystem.Health.PerformanceState
CategoryCustom
EnabledFalse
Instance Name.NET Apps
Counter NameAvg. Request Time
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeSystem.Performance.ConsecutiveSamplesThreshold
RemotableFalse
AccessibilityPublic
Alert Message
Значение счетчика "Приложения .NET/Средн. время запроса" превышает пороговое значение
Значение счетчика "Приложения .NET/Средн. время запроса" превысило настроенное пороговое значение {0} мс. Значение счетчика производительности было равно {1} мс.
RunAsDefault

Source Code:

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