Percentage VM Memory Utilized

Microsoft.JEE.PerformanceHealth.MemoryUtilizedMonitor (UnitMonitor)

A performance monitor for the percentage of virtual machine memory used on an application server.

Knowledge Base article:

Summary

The memory utilized performance monitor tracks the memory utilization of the Java Virtual Machine associated with the application server.

Causes

An unhealthy state indicates that the memory utilization has exceeded the monitored threshold configured for the application server.

Resolutions

Element properties:

TargetMicrosoft.JEE.ApplicationServer.Monitored.Instance
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.JEE.ThresholdUnitMonitor
RemotableTrue
AccessibilityPublic
Alert Message
Memory utilized exceeded
The memory utilized monitor exceeded its threshold for application server ID: {0}, Object Name: {1}, Counter Name: {2}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.JEE.PerformanceHealth.MemoryUtilizedMonitor" Accessibility="Public" Enabled="false" Target="Microsoft.JEE.ApplicationServer.Monitored.Instance" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.JEE.ThresholdUnitMonitor" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.JEE.PerformanceHealth.MemoryUtilizedMonitor_AlertMessageResourceID">
<AlertOnState>Warning</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/Property[Type="Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Id$</AlertParameter1>
<AlertParameter2>Memory</AlertParameter2>
<AlertParameter3>JVM Percent Heap Memory Used</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Microsoft.JEE.PerformanceHealth.MemoryUtilization.UnderThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="Microsoft.JEE.PerformanceHealth.MemoryUtilization.OverThreshold" MonitorTypeStateID="OverThreshold" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Property[Type="Microsoft.JEE.ApplicationServer.Monitored.Instance"]/HostName$</ComputerName>
<Protocol>$Target/Property[Type="Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Protocol$</Protocol>
<Port>$Target/Property[Type="Microsoft.JEE.ApplicationServer.Monitored.Instance"]/Port$</Port>
<BaseURL/>
<URLSuffix/>
<IntervalSeconds>900</IntervalSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<MetricName>Stats/Memory/Properties/PercentHeapMemoryUsed</MetricName>
<Threshold>90</Threshold>
</Configuration>
</UnitMonitor>