A performance monitor for the average time take for a request to the specific application.
The average request time monitor tracks the average request time for an application.
An unhealthy state indicates that the average request time for the application exceeded the monitored threshold configured for the agent.
Use the events to determine and fix the root cause of the problem.
Distribute the applications across multiple application servers.
Add a load balancing solution to the architecture.
Target | Microsoft.JEE.Apm.Application | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | MatchMonitorHealth | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.JEE.APM.Application.ThresholdUnitMonitor | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.JEE.APM.PerformanceHealth.AvgReqTime" Accessibility="Public" Enabled="false" Target="Microsoft.JEE.Apm.Application" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.JEE.APM.Application.ThresholdUnitMonitor" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.JEE.APM.PerformanceHealth.AvgReqTime_AlertMessageResourceID">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<!-- The alert description should include key properties of: -->
<!-- * the deep monitored application server -->
<!-- * the performance counter object name -->
<!-- * counter name -->
<!-- * instance name (not used b/c no corresponding value for rule) -->
<AlertParameter1>$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Id$</AlertParameter1>
<AlertParameter2>Response Time</AlertParameter2>
<AlertParameter3>Application Average Response Time</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Microsoft.JEE.APM.PerformanceHealth.AvgReqTime.UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="Microsoft.JEE.APM.PerformanceHealth.AvgReqTime.OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/HostName$</ComputerName>
<Protocol>$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Protocol$</Protocol>
<Port>$Target/Host/Property[Type="JEE!Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Port$</Port>
<Verb>GET</Verb>
<Query>/BeanSpy/MBeans?JMXQuery=com.microsoft.ManagementServices.APMAgent:type=COUNTER&MaxDepth=3</Query>
<Body/>
<IntervalSeconds>900</IntervalSeconds>
<TimeoutSeconds>120</TimeoutSeconds>
<MetricName>eventData/log/applications/application[@name='$Target/Property[Type="Microsoft.JEE.Apm.Application"]/ContextPath$']/counters/counter[@id='29']</MetricName>
<Threshold>50</Threshold>
<CredentialUserName>$RunAs[Name="JEE!Microsoft.JEE.MonitoringAccount"]/UserName$</CredentialUserName>
<CredentialPassword>$RunAs[Name="JEE!Microsoft.JEE.MonitoringAccount"]/Password$</CredentialPassword>
</Configuration>
</UnitMonitor>