JMX

Java Management Extensions (JMX) is a Java technology that supplies tools for managing and monitoring applications, system objects, devices and service-oriented networks. Those resources are represented by objects called MBeans. In the API, classes can be dynamically loaded and instantiated.

Available solutions




Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/generic_java_jmx


Template App Generic Java JMX

Overview

For Zabbix version: 5.0
Official JMX Template from Zabbix distribution. Could be useful for many Java Applications (JMX).

Setup

Refer to the vendor documentation.

Zabbix configuration

No specific Zabbix configuration is required.

Macros used

Name Description Default
{$JMX.CPU.LOAD.MAX}

A threshold in percent for CPU utilization trigger.

85
{$JMX.CPU.LOAD.TIME}

The time during which the CPU utilization may exceed the threshold.

5m
{$JMX.FILE.DESCRIPTORS.MAX}

A threshold in percent for file descriptors count trigger.

85
{$JMX.FILE.DESCRIPTORS.TIME}

The time during which the file descriptors count may exceed the threshold.

3m
{$JMX.HEAP.MEM.USAGE.MAX}

A threshold in percent for Heap memory utilization trigger.

85
{$JMX.HEAP.MEM.USAGE.TIME}

The time during which the Heap memory utilization may exceed the threshold.

10m
{$JMX.MP.USAGE.MAX}

A threshold in percent for memory pools utilization trigger. Use a context to change the treshold for a specific pool.

85
{$JMX.MP.USAGE.TIME}

The time during which the memory pools utilization may exceed the threshold.

10m
{$JMX.NONHEAP.MEM.USAGE.MAX}

A threshold in percent for Non-heap memory utilization trigger.

85
{$JMX.NONHEAP.MEM.USAGE.TIME}

The time during which the Non-heap memory utilization may exceed the threshold.

10m

Template links

There are no template links in this template.

Discovery rules

Items collected

Group Name Description Type Key and additional info
JMX ClassLoading: Loaded class count

Displays number of classes that are currently loaded in the Java virtual machine.

JMX jmx["java.lang:type=ClassLoading","LoadedClassCount"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX ClassLoading: Total loaded class count

Displays the total number of classes that have been loaded since the Java virtual machine has started execution.

JMX jmx["java.lang:type=ClassLoading","TotalLoadedClassCount"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX ClassLoading: Unloaded class count

Displays the total number of classes that have been loaded since the Java virtual machine has started execution.

JMX jmx["java.lang:type=ClassLoading","UnloadedClassCount"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Compilation: Name of the current JIT compiler

Displays the total number of classes unloaded since the Java virtual machine has started execution.

JMX jmx["java.lang:type=Compilation","Name"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 30m

JMX Compilation: Accumulated time spent

Displays the approximate accumulated elapsed time spent in compilation, in seconds.

JMX jmx["java.lang:type=Compilation","TotalCompilationTime"]

Preprocessing:

- MULTIPLIER: 0.001

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX GarbageCollector: ConcurrentMarkSweep number of collections per second

Displays the total number of collections that have occurred per second.

JMX jmx["java.lang:type=GarbageCollector,name=ConcurrentMarkSweep","CollectionCount"]

Preprocessing:

- CHANGE_PER_SECOND

JMX GarbageCollector: ConcurrentMarkSweep accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX jmx["java.lang:type=GarbageCollector,name=ConcurrentMarkSweep","CollectionTime"]

Preprocessing:

- MULTIPLIER: 0.001

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX GarbageCollector: Copy number of collections per second

Displays the total number of collections that have occurred per second.

JMX jmx["java.lang:type=GarbageCollector,name=Copy","CollectionCount"]

Preprocessing:

- CHANGE_PER_SECOND

JMX GarbageCollector: Copy accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX jmx["java.lang:type=GarbageCollector,name=Copy","CollectionTime"]

Preprocessing:

- MULTIPLIER: 0.001

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX GarbageCollector: MarkSweepCompact number of collections per second

Displays the total number of collections that have occurred per second.

JMX jmx["java.lang:type=GarbageCollector,name=MarkSweepCompact","CollectionCount"]

Preprocessing:

- CHANGE_PER_SECOND

JMX GarbageCollector: MarkSweepCompact accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX jmx["java.lang:type=GarbageCollector,name=MarkSweepCompact","CollectionTime"]

Preprocessing:

- MULTIPLIER: 0.001

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX GarbageCollector: ParNew number of collections per second

Displays the total number of collections that have occurred per second.

JMX jmx["java.lang:type=GarbageCollector,name=ParNew","CollectionCount"]

Preprocessing:

- CHANGE_PER_SECOND

JMX GarbageCollector: ParNew accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX jmx["java.lang:type=GarbageCollector,name=ParNew","CollectionTime"]

Preprocessing:

- MULTIPLIER: 0.001

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX GarbageCollector: PS MarkSweep number of collections per second

Displays the total number of collections that have occurred per second.

JMX jmx["java.lang:type=GarbageCollector,name=PS MarkSweep","CollectionCount"]

Preprocessing:

- CHANGE_PER_SECOND

JMX GarbageCollector: PS MarkSweep accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX jmx["java.lang:type=GarbageCollector,name=PS MarkSweep","CollectionTime"]

Preprocessing:

- MULTIPLIER: 0.001

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX GarbageCollector: PS Scavenge number of collections per second

Displays the total number of collections that have occurred per second.

JMX jmx["java.lang:type=GarbageCollector,name=PS Scavenge","CollectionCount"]

Preprocessing:

- CHANGE_PER_SECOND

JMX GarbageCollector: PS Scavenge accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX jmx["java.lang:type=GarbageCollector,name=PS Scavenge","CollectionTime"]

Preprocessing:

- MULTIPLIER: 0.001

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory: Heap memory committed

Current heap memory allocated. This amount of memory is guaranteed for the Java virtual machine to use.

JMX jmx["java.lang:type=Memory","HeapMemoryUsage.committed"]
JMX Memory: Heap memory maximum size

Maximum amount of heap that can be used for memory management. This amount of memory is not guaranteed to be available if it is greater than the amount of committed memory. The Java virtual machine may fail to allocate memory even if the amount of used memory does not exceed this maximum size.

JMX jmx["java.lang:type=Memory","HeapMemoryUsage.max"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory: Heap memory used

Current memory usage outside the heap.

JMX jmx["java.lang:type=Memory","HeapMemoryUsage.used"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory: Non-Heap memory committed

Current memory allocated outside the heap. This amount of memory is guaranteed for the Java virtual machine to use.

JMX jmx["java.lang:type=Memory","NonHeapMemoryUsage.committed"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory: Non-Heap memory maximum size

Maximum amount of non-heap memory that can be used for memory management. This amount of memory is not guaranteed to be available if it is greater than the amount of committed memory. The Java virtual machine may fail to allocate memory even if the amount of used memory does not exceed this maximum size.

JMX jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory: Non-Heap memory used

Current memory usage outside the heap

JMX jmx["java.lang:type=Memory","NonHeapMemoryUsage.used"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory: Object pending finalization count

The approximate number of objects for which finalization is pending.

JMX jmx["java.lang:type=Memory","ObjectPendingFinalizationCount"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX MemoryPool: CMS Old Gen committed

Current memory allocated

JMX jmx["java.lang:type=MemoryPool,name=CMS Old Gen","Usage.committed"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX MemoryPool: CMS Old Gen maximum size

Maximum amount of memory that can be used for memory management. This amount of memory is not guaranteed to be available if it is greater than the amount of committed memory. The Java virtual machine may fail to allocate memory even if the amount of used memory does not exceed this maximum size.

JMX jmx["java.lang:type=MemoryPool,name=CMS Old Gen","Usage.max"]
JMX MemoryPool: CMS Old Gen used

Current memory usage

JMX jmx["java.lang:type=MemoryPool,name=CMS Old Gen","Usage.used"]
JMX MemoryPool: CMS Perm Gen committed

Current memory allocated

JMX jmx["java.lang:type=MemoryPool,name=CMS Perm Gen","Usage.committed"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX MemoryPool: CMS Perm Gen maximum size

Maximum amount of memory that can be used for memory management. This amount of memory is not guaranteed to be available if it is greater than the amount of committed memory. The Java virtual machine may fail to allocate memory even if the amount of used memory does not exceed this maximum size.

JMX jmx["java.lang:type=MemoryPool,name=CMS Perm Gen","Usage.max"]
JMX MemoryPool: CMS Perm Gen used

Current memory usage

JMX jmx["java.lang:type=MemoryPool,name=CMS Perm Gen","Usage.used"]
JMX MemoryPool: Code Cache committed

Current memory allocated

JMX jmx["java.lang:type=MemoryPool,name=Code Cache","Usage.committed"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX MemoryPool: CodeCache maximum size

Maximum amount of memory that can be used for memory management. This amount of memory is not guaranteed to be available if it is greater than the amount of committed memory. The Java virtual machine may fail to allocate memory even if the amount of used memory does not exceed this maximum size.

JMX jmx["java.lang:type=MemoryPool,name=Code Cache","Usage.max"]
JMX MemoryPool: Code Cache used

Current memory usage

JMX jmx["java.lang:type=MemoryPool,name=Code Cache","Usage.used"]
JMX MemoryPool: Perm Gen committed

Current memory allocated

JMX jmx["java.lang:type=MemoryPool,name=Perm Gen","Usage.committed"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX MemoryPool: Perm Gen maximum size

Maximum amount of memory that can be used for memory management. This amount of memory is not guaranteed to be available if it is greater than the amount of committed memory. The Java virtual machine may fail to allocate memory even if the amount of used memory does not exceed this maximum size.

JMX jmx["java.lang:type=MemoryPool,name=Perm Gen","Usage.max"]
JMX MemoryPool: Perm Gen used

Current memory usage

JMX jmx["java.lang:type=MemoryPool,name=Perm Gen","Usage.used"]
JMX MemoryPool: PS Old Gen

Current memory allocated

JMX jmx["java.lang:type=MemoryPool,name=PS Old Gen","Usage.committed"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX MemoryPool: PS Old Gen maximum size

Maximum amount of memory that can be used for memory management. This amount of memory is not guaranteed to be available if it is greater than the amount of committed memory. The Java virtual machine may fail to allocate memory even if the amount of used memory does not exceed this maximum size.

JMX jmx["java.lang:type=MemoryPool,name=PS Old Gen","Usage.max"]
JMX MemoryPool: PS Old Gen used

Current memory usage

JMX jmx["java.lang:type=MemoryPool,name=PS Old Gen","Usage.used"]
JMX MemoryPool: PS Perm Gen committed

Current memory allocated

JMX jmx["java.lang:type=MemoryPool,name=PS Perm Gen","Usage.committed"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX MemoryPool: PS Perm Gen maximum size

Maximum amount of memory that can be used for memory management. This amount of memory is not guaranteed to be available if it is greater than the amount of committed memory. The Java virtual machine may fail to allocate memory even if the amount of used memory does not exceed this maximum size.

JMX jmx["java.lang:type=MemoryPool,name=PS Perm Gen","Usage.max"]
JMX MemoryPool: PS Perm Gen used

Current memory usage

JMX jmx["java.lang:type=MemoryPool,name=PS Perm Gen","Usage.used"]
JMX MemoryPool: Tenured Gen committed

Current memory allocated

JMX jmx["java.lang:type=MemoryPool,name=Tenured Gen","Usage.committed"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX MemoryPool: Tenured Gen maximum size

Maximum amount of memory that can be used for memory management. This amount of memory is not guaranteed to be available if it is greater than the amount of committed memory. The Java virtual machine may fail to allocate memory even if the amount of used memory does not exceed this maximum size.

JMX jmx["java.lang:type=MemoryPool,name=Tenured Gen","Usage.max"]
JMX MemoryPool: Tenured Gen used

Current memory usage

JMX jmx["java.lang:type=MemoryPool,name=Tenured Gen","Usage.used"]
JMX OperatingSystem: File descriptors maximum count

This is the number of file descriptors we can have opened in the same process, as determined by the operating system. You can never have more file descriptors than this number.

JMX jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX OperatingSystem: File descriptors opened

This is the number of opened file descriptors at the moment, if this reaches the MaxFileDescriptorCount, the application will throw an IOException: Too many open files. This could mean you’re are opening file descriptors and never closing them.

JMX jmx["java.lang:type=OperatingSystem","OpenFileDescriptorCount"]
JMX OperatingSystem: Process CPU Load

ProcessCpuLoad represents the CPU load in this process.

JMX jmx["java.lang:type=OperatingSystem","ProcessCpuLoad"]

Preprocessing:

- MULTIPLIER: 100

JMX Runtime: JVM uptime

-

JMX jmx["java.lang:type=Runtime","Uptime"]

Preprocessing:

- MULTIPLIER: 0.001

JMX Runtime: JVM name

-

JMX jmx["java.lang:type=Runtime","VmName"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 30m

JMX Runtime: JVM version

-

JMX jmx["java.lang:type=Runtime","VmVersion"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 30m

JMX Threading: Daemon thread count

Number of daemon threads running.

JMX jmx["java.lang:type=Threading","DaemonThreadCount"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Threading: Peak thread count

Maximum number of threads being executed at the same time since the JVM was started or the peak was reset.

JMX jmx["java.lang:type=Threading","PeakThreadCount"]
JMX Threading: Thread count

The number of threads running at the current moment.

JMX jmx["java.lang:type=Threading","ThreadCount"]
JMX Threading: Total started thread count

The number of threads started since the JVM was launched.

JMX jmx["java.lang:type=Threading","TotalStartedThreadCount"]

Triggers

Name Description Expression Severity Dependencies and additional info
Compilation: {HOST.NAME} uses suboptimal JIT compiler

-

{TEMPLATE_NAME:jmx["java.lang:type=Compilation","Name"].str(Client)}=1 INFO

Manual close: YES

GarbageCollector: Concurrent Mark Sweep in fire fighting mode

-

{TEMPLATE_NAME:jmx["java.lang:type=GarbageCollector,name=ConcurrentMarkSweep","CollectionCount"].last()}>{Template App Generic Java JMX:jmx["java.lang:type=GarbageCollector,name=ParNew","CollectionCount"].last()} AVERAGE
GarbageCollector: Mark Sweep Compact in fire fighting mode

-

{TEMPLATE_NAME:jmx["java.lang:type=GarbageCollector,name=MarkSweepCompact","CollectionCount"].last()}>{Template App Generic Java JMX:jmx["java.lang:type=GarbageCollector,name=Copy","CollectionCount"].last()} AVERAGE
GarbageCollector: PS Mark Sweep in fire fighting mode

-

{TEMPLATE_NAME:jmx["java.lang:type=GarbageCollector,name=PS MarkSweep","CollectionCount"].last()}>{Template App Generic Java JMX:jmx["java.lang:type=GarbageCollector,name=PS Scavenge","CollectionCount"].last()} AVERAGE
Memory: Heap memory usage more than {$JMX.HEAP.USAGE.MAX}% for {$JMX.HEAP.MEM.USAGE.TIME}

-

{TEMPLATE_NAME:jmx["java.lang:type=Memory","HeapMemoryUsage.used"].min({$JMX.HEAP.MEM.USAGE.TIME})}>({Template App Generic Java JMX:jmx["java.lang:type=Memory","HeapMemoryUsage.max"].last()}*{$JMX.HEAP.MEM.USAGE.MAX}/100) WARNING
Memory: Non-Heap memory usage more than {$JMX.NONHEAP.MEM.USAGE.MAX}% for {$JMX.NONHEAP.MEM.USAGE.TIME}

-

{TEMPLATE_NAME:jmx["java.lang:type=Memory","NonHeapMemoryUsage.used"].min({$JMX.NONHEAP.MEM.USAGE.TIME})}>({Template App Generic Java JMX:jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"].last()}*{$JMX.NONHEAP.MEM.USAGE.MAX}/100) WARNING
MemoryPool: CMS Old Gen memory usage more than {$JMX.MP.USAGE.MAX:"CMS Old Gen"}% for {$JMX.MP.USAGE.TIME:"CMS Old Gen"}

-

{TEMPLATE_NAME:jmx["java.lang:type=MemoryPool,name=CMS Old Gen","Usage.used"].min({$JMX.MP.USAGE.TIME:"CMS Old Gen"})}>({Template App Generic Java JMX:jmx["java.lang:type=MemoryPool,name=CMS Old Gen","Usage.max"].last()}*{$JMX.MP.USAGE.MAX:"CMS Old Gen"}/100) WARNING
MemoryPool: CMS Perm Gen memory usage more than {$JMX.MP.USAGE.MAX:"CMS Perm Gen"}% for {$JMX.MP.USAGE.TIME:"CMS Perm Gen"}

-

{TEMPLATE_NAME:jmx["java.lang:type=MemoryPool,name=CMS Perm Gen","Usage.used"].min({$JMX.MP.USAGE.TIME:"CMS Perm Gen"})}>({Template App Generic Java JMX:jmx["java.lang:type=MemoryPool,name=CMS Perm Gen","Usage.max"].last()}*{$JMX.MP.USAGE.MAX:"CMS Perm Gen"}/100) WARNING
MemoryPool: Code Cache memory usage more than {$JMX.MP.USAGE.MAX:"Code Cache"}% for {$JMX.MP.USAGE.TIME:"Code Cache"}

-

{TEMPLATE_NAME:jmx["java.lang:type=MemoryPool,name=Code Cache","Usage.used"].min({$JMX.MP.USAGE.TIME:"Code Cache"})}>({Template App Generic Java JMX:jmx["java.lang:type=MemoryPool,name=Code Cache","Usage.max"].last()}*{$JMX.MP.USAGE.MAX:"Code Cache"}/100) WARNING
MemoryPool: Perm Gen memory usage more than {$JMX.MP.USAGE.MAX:"Perm Gen"}% for {$JMX.MP.USAGE.TIME:"Perm Gen"}

-

{TEMPLATE_NAME:jmx["java.lang:type=MemoryPool,name=Perm Gen","Usage.used"].min({$JMX.MP.USAGE.TIME:"Perm Gen"})}>({Template App Generic Java JMX:jmx["java.lang:type=MemoryPool,name=Perm Gen","Usage.max"].last()}*{$JMX.MP.USAGE.MAX:"Perm Gen"}/100) WARNING
MemoryPool: PS Old Gen memory usage more than {$JMX.MP.USAGE.MAX:"PS Old Gen"}% for {$JMX.MP.USAGE.TIME:"PS Old Gen"}

-

{TEMPLATE_NAME:jmx["java.lang:type=MemoryPool,name=PS Old Gen","Usage.used"].min({$JMX.MP.USAGE.TIME:"PS Old Gen"})}>({Template App Generic Java JMX:jmx["java.lang:type=MemoryPool,name=PS Old Gen","Usage.max"].last()}*{$JMX.MP.USAGE.MAX:"PS Old Gen"}/100) WARNING
MemoryPool: PS Perm Gen memory usage more than {$JMX.MP.USAGE.MAX:"PS Perm Gen"}% for {$JMX.MP.USAGE.TIME:"PS Perm Gen"}

-

{TEMPLATE_NAME:jmx["java.lang:type=MemoryPool,name=PS Perm Gen","Usage.used"].min({$JMX.MP.USAGE.TIME:"PS Perm Gen"})}>({Template App Generic Java JMX:jmx["java.lang:type=MemoryPool,name=PS Perm Gen","Usage.max"].last()}*{$JMX.MP.USAGE.MAX:"PS Perm Gen"}/100) WARNING
MemoryPool: Tenured Gen memory usage more than {$JMX.MP.USAGE.MAX:"Tenured Gen"}% for {$JMX.MP.USAGE.TIME:"Tenured Gen"}

-

{TEMPLATE_NAME:jmx["java.lang:type=MemoryPool,name=Tenured Gen","Usage.used"].min({$JMX.MP.USAGE.TIME:"Tenured Gen"})}>({Template App Generic Java JMX:jmx["java.lang:type=MemoryPool,name=Tenured Gen","Usage.max"].last()}*{$JMX.MP.USAGE.MAX:"Tenured Gen"}/100) WARNING
OperatingSystem: Opened file descriptor count more than {$JMX.FILE.DESCRIPTORS.MAX}% of maximum

-

{TEMPLATE_NAME:jmx["java.lang:type=OperatingSystem","OpenFileDescriptorCount"].min({$JMX.FILE.DESCRIPTORS.TIME})}>({Template App Generic Java JMX:jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"].last()}*{$JMX.FILE.DESCRIPTORS.MAX}/100) WARNING
OperatingSystem: Process CPU Load more than {$JMX.CPU.LOAD.MAX}% for {$JMX.CPU.LOAD.TIME}

-

{TEMPLATE_NAME:jmx["java.lang:type=OperatingSystem","ProcessCpuLoad"].min({$JMX.CPU.LOAD.TIME})}>{$JMX.CPU.LOAD.MAX} AVERAGE
Runtime: JVM is not reachable

-

{TEMPLATE_NAME:jmx["java.lang:type=Runtime","Uptime"].nodata(5m)}=1 AVERAGE

Manual close: YES

Runtime: {HOST.NAME} runs suboptimal VM type

-

{TEMPLATE_NAME:jmx["java.lang:type=Runtime","VmName"].str(Server)}<>1 INFO

Manual close: YES

Feedback

Please report any issues with the template at https://support.zabbix.com

Articles and documentation

+ Propose new article
Add your solution