A performance monitor for the number of exception events that are generated per second for the specific application.
The exception events per second monitor tracks the number of events generated by the monitoring agent on the Java Virtual Machine.
An unhealthy state indicates that the number of exception events generated per second has exceeded the monitored threshold configured for the agent.
Use the events to determine and fix the root cause of the problem.
Modify the performance thresholds used by the agent to be more tolerant.
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.ExceptionEventsSec" 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.ExceptionEventsSec_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>EventsSec</AlertParameter2>
<AlertParameter3>Application Exception Events per Second</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Microsoft.JEE.APM.PerformanceHealth.ExceptionEventsSec.UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="Microsoft.JEE.APM.PerformanceHealth.ExceptionEventsSec.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='28']</MetricName>
<Threshold>0</Threshold>
<CredentialUserName>$RunAs[Name="JEE!Microsoft.JEE.MonitoringAccount"]/UserName$</CredentialUserName>
<CredentialPassword>$RunAs[Name="JEE!Microsoft.JEE.MonitoringAccount"]/Password$</CredentialPassword>
</Configuration>
</UnitMonitor>