VOOZH about

URL: https://www.zabbix.com/integrations/java_monitoring

⇱ Java monitoring and integration with Zabbix


Propose integration

Java

Available solutions




This template is for Zabbix version: 7.4

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/generic_java_jmx?at=release/7.4

Generic Java JMX

Overview

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

Requirements

Zabbix version: 7.4 and higher.

Tested versions

This template has been tested on:

  • Java Applications

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

Refer to the vendor documentation.

Macros used

Name Description Default
{$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
{$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 threshold for a specific pool.

85
{$JMX.MP.USAGE.TIME}

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

10m
{$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.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.MEM.POOL.NAME.MATCHES}

This macro used in memory pool discovery as a filter.

Old Gen|G1|Perm Gen|Code Cache|Tenured Gen
{$JMX.USER}

JMX username.

{$JMX.PASSWORD}

JMX password.

Items

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

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

ClassLoading: Total loaded class count

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

ClassLoading: Unloaded class count

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

Compilation: Name of the current JIT compiler

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

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

Compilation: Accumulated time spent

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

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

Preprocessing

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 10m

Memory: Heap memory committed

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

JMX agent jmx["java.lang:type=Memory","HeapMemoryUsage.committed"]
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 agent jmx["java.lang:type=Memory","HeapMemoryUsage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Heap memory used

Current memory usage outside the heap.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Memory","NonHeapMemoryUsage.committed"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Non-Heap memory used

Current memory usage outside the heap

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Object pending finalization count

The approximate number of objects for which finalization is pending.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 are opening file descriptors and never closing them.

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

ProcessCpuLoad represents the CPU load in this process.

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

Preprocessing

  • Custom multiplier: 100

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

Preprocessing

  • Custom multiplier: 0.001

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

Threading: Daemon thread count

Number of daemon threads running.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Threading","PeakThreadCount"]
Threading: Thread count

The number of threads running at the current moment.

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

The number of threads started since the JVM was launched.

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

Triggers

Name Description Expression Severity Dependencies and additional info
Generic Java JMX: Compilation: {HOST.NAME} uses suboptimal JIT compiler find(/Generic Java JMX/jmx["java.lang:type=Compilation","Name"],,"like","Client")=1 Info Manual close: Yes
Generic Java JMX: Memory: Heap memory usage is high min(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.used"],{$JMX.HEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])*{$JMX.HEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])>0 Warning
Generic Java JMX: Memory: Non-Heap memory usage is high min(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.used"],{$JMX.NONHEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])*{$JMX.NONHEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])>0 Warning
Generic Java JMX: OperatingSystem: Opened file descriptor count is high min(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","OpenFileDescriptorCount"],{$JMX.FILE.DESCRIPTORS.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"])*{$JMX.FILE.DESCRIPTORS.MAX}/100) Warning
Generic Java JMX: OperatingSystem: Process CPU Load is high min(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","ProcessCpuLoad"],{$JMX.CPU.LOAD.TIME})>{$JMX.CPU.LOAD.MAX} Average
Generic Java JMX: Runtime: JVM is not reachable nodata(/Generic Java JMX/jmx["java.lang:type=Runtime","Uptime"],5m)=1 Average Manual close: Yes
Generic Java JMX: Runtime: {HOST.NAME} runs suboptimal VM type find(/Generic Java JMX/jmx["java.lang:type=Runtime","VmName"],,"like","Server")<>1 Info Manual close: Yes

LLD rule Garbage collector discovery

Name Description Type Key and additional info
Garbage collector discovery

Garbage collectors metrics discovery.

JMX agent jmx.discovery["beans","java.lang:name=*,type=GarbageCollector"]

Item prototypes for Garbage collector discovery

Name Description Type Key and additional info
GarbageCollector: {#JMXNAME} number of collections per second

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

JMX agent jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionCount"]

Preprocessing

  • Change per second
GarbageCollector: {#JMXNAME} accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX agent jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionTime"]

Preprocessing

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 10m

LLD rule Memory pool discovery

Name Description Type Key and additional info
Memory pool discovery

Memory pools metrics discovery.

JMX agent jmx.discovery["beans","java.lang:name=*,type=MemoryPool"]

Item prototypes for Memory pool discovery

Name Description Type Key and additional info
Memory pool: {#JMXNAME} committed

Current memory allocated.

JMX agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.committed"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory pool: {#JMXNAME} 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 agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory pool: {#JMXNAME} used

Current memory usage.

JMX agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"]

Trigger prototypes for Memory pool discovery

Name Description Expression Severity Dependencies and additional info
Generic Java JMX: Memory pool: {#JMXNAME} memory usage is high min(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"],{$JMX.MP.USAGE.TIME:"{#JMXNAME}"})>(last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])*{$JMX.MP.USAGE.MAX:"{#JMXNAME}"}/100) and last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])>0 Warning

Feedback

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

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums

This template is for Zabbix version: 7.2

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/generic_java_jmx?at=release/7.2

Generic Java JMX

Overview

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

Requirements

Zabbix version: 7.2 and higher.

Tested versions

This template has been tested on:

  • Java Applications

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

Refer to the vendor documentation.

Macros used

Name Description Default
{$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
{$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 threshold for a specific pool.

85
{$JMX.MP.USAGE.TIME}

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

10m
{$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.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.MEM.POOL.NAME.MATCHES}

This macro used in memory pool discovery as a filter.

Old Gen|G1|Perm Gen|Code Cache|Tenured Gen
{$JMX.USER}

JMX username.

{$JMX.PASSWORD}

JMX password.

Items

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

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

ClassLoading: Total loaded class count

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

ClassLoading: Unloaded class count

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

Compilation: Name of the current JIT compiler

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

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

Compilation: Accumulated time spent

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

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

Preprocessing

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 10m

Memory: Heap memory committed

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

JMX agent jmx["java.lang:type=Memory","HeapMemoryUsage.committed"]
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 agent jmx["java.lang:type=Memory","HeapMemoryUsage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Heap memory used

Current memory usage outside the heap.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Memory","NonHeapMemoryUsage.committed"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Non-Heap memory used

Current memory usage outside the heap

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Object pending finalization count

The approximate number of objects for which finalization is pending.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 are opening file descriptors and never closing them.

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

ProcessCpuLoad represents the CPU load in this process.

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

Preprocessing

  • Custom multiplier: 100

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

Preprocessing

  • Custom multiplier: 0.001

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

Threading: Daemon thread count

Number of daemon threads running.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Threading","PeakThreadCount"]
Threading: Thread count

The number of threads running at the current moment.

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

The number of threads started since the JVM was launched.

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

Triggers

Name Description Expression Severity Dependencies and additional info
Generic Java JMX: Compilation: {HOST.NAME} uses suboptimal JIT compiler find(/Generic Java JMX/jmx["java.lang:type=Compilation","Name"],,"like","Client")=1 Info Manual close: Yes
Generic Java JMX: Memory: Heap memory usage is high min(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.used"],{$JMX.HEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])*{$JMX.HEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])>0 Warning
Generic Java JMX: Memory: Non-Heap memory usage is high min(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.used"],{$JMX.NONHEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])*{$JMX.NONHEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])>0 Warning
Generic Java JMX: OperatingSystem: Opened file descriptor count is high min(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","OpenFileDescriptorCount"],{$JMX.FILE.DESCRIPTORS.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"])*{$JMX.FILE.DESCRIPTORS.MAX}/100) Warning
Generic Java JMX: OperatingSystem: Process CPU Load is high min(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","ProcessCpuLoad"],{$JMX.CPU.LOAD.TIME})>{$JMX.CPU.LOAD.MAX} Average
Generic Java JMX: Runtime: JVM is not reachable nodata(/Generic Java JMX/jmx["java.lang:type=Runtime","Uptime"],5m)=1 Average Manual close: Yes
Generic Java JMX: Runtime: {HOST.NAME} runs suboptimal VM type find(/Generic Java JMX/jmx["java.lang:type=Runtime","VmName"],,"like","Server")<>1 Info Manual close: Yes

LLD rule Garbage collector discovery

Name Description Type Key and additional info
Garbage collector discovery

Garbage collectors metrics discovery.

JMX agent jmx.discovery["beans","java.lang:name=*,type=GarbageCollector"]

Item prototypes for Garbage collector discovery

Name Description Type Key and additional info
GarbageCollector: {#JMXNAME} number of collections per second

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

JMX agent jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionCount"]

Preprocessing

  • Change per second
GarbageCollector: {#JMXNAME} accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX agent jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionTime"]

Preprocessing

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 10m

LLD rule Memory pool discovery

Name Description Type Key and additional info
Memory pool discovery

Memory pools metrics discovery.

JMX agent jmx.discovery["beans","java.lang:name=*,type=MemoryPool"]

Item prototypes for Memory pool discovery

Name Description Type Key and additional info
Memory pool: {#JMXNAME} committed

Current memory allocated.

JMX agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.committed"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory pool: {#JMXNAME} 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 agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory pool: {#JMXNAME} used

Current memory usage.

JMX agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"]

Trigger prototypes for Memory pool discovery

Name Description Expression Severity Dependencies and additional info
Generic Java JMX: Memory pool: {#JMXNAME} memory usage is high min(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"],{$JMX.MP.USAGE.TIME:"{#JMXNAME}"})>(last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])*{$JMX.MP.USAGE.MAX:"{#JMXNAME}"}/100) and last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])>0 Warning

Feedback

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

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums

This template is for Zabbix version: 7.0

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/generic_java_jmx?at=release/7.0

Generic Java JMX

Overview

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

Requirements

Zabbix version: 7.0 and higher.

Tested versions

This template has been tested on:

  • Java Applications

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

Refer to the vendor documentation.

Macros used

Name Description Default
{$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
{$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 threshold for a specific pool.

85
{$JMX.MP.USAGE.TIME}

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

10m
{$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.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.MEM.POOL.NAME.MATCHES}

This macro used in memory pool discovery as a filter.

Old Gen|G1|Perm Gen|Code Cache|Tenured Gen
{$JMX.USER}

JMX username.

{$JMX.PASSWORD}

JMX password.

Items

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

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

ClassLoading: Total loaded class count

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

ClassLoading: Unloaded class count

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

Compilation: Name of the current JIT compiler

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

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

Compilation: Accumulated time spent

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

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

Preprocessing

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 10m

Memory: Heap memory committed

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

JMX agent jmx["java.lang:type=Memory","HeapMemoryUsage.committed"]
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 agent jmx["java.lang:type=Memory","HeapMemoryUsage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Heap memory used

Current memory usage outside the heap.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Memory","NonHeapMemoryUsage.committed"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Non-Heap memory used

Current memory usage outside the heap

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Object pending finalization count

The approximate number of objects for which finalization is pending.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 are opening file descriptors and never closing them.

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

ProcessCpuLoad represents the CPU load in this process.

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

Preprocessing

  • Custom multiplier: 100

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

Preprocessing

  • Custom multiplier: 0.001

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

Threading: Daemon thread count

Number of daemon threads running.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Threading","PeakThreadCount"]
Threading: Thread count

The number of threads running at the current moment.

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

The number of threads started since the JVM was launched.

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

Triggers

Name Description Expression Severity Dependencies and additional info
Generic Java JMX: Compilation: {HOST.NAME} uses suboptimal JIT compiler find(/Generic Java JMX/jmx["java.lang:type=Compilation","Name"],,"like","Client")=1 Info Manual close: Yes
Generic Java JMX: Memory: Heap memory usage is high min(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.used"],{$JMX.HEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])*{$JMX.HEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])>0 Warning
Generic Java JMX: Memory: Non-Heap memory usage is high min(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.used"],{$JMX.NONHEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])*{$JMX.NONHEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])>0 Warning
Generic Java JMX: OperatingSystem: Opened file descriptor count is high min(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","OpenFileDescriptorCount"],{$JMX.FILE.DESCRIPTORS.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"])*{$JMX.FILE.DESCRIPTORS.MAX}/100) Warning
Generic Java JMX: OperatingSystem: Process CPU Load is high min(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","ProcessCpuLoad"],{$JMX.CPU.LOAD.TIME})>{$JMX.CPU.LOAD.MAX} Average
Generic Java JMX: Runtime: JVM is not reachable nodata(/Generic Java JMX/jmx["java.lang:type=Runtime","Uptime"],5m)=1 Average Manual close: Yes
Generic Java JMX: Runtime: {HOST.NAME} runs suboptimal VM type find(/Generic Java JMX/jmx["java.lang:type=Runtime","VmName"],,"like","Server")<>1 Info Manual close: Yes

LLD rule Garbage collector discovery

Name Description Type Key and additional info
Garbage collector discovery

Garbage collectors metrics discovery.

JMX agent jmx.discovery["beans","java.lang:name=*,type=GarbageCollector"]

Item prototypes for Garbage collector discovery

Name Description Type Key and additional info
GarbageCollector: {#JMXNAME} number of collections per second

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

JMX agent jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionCount"]

Preprocessing

  • Change per second
GarbageCollector: {#JMXNAME} accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX agent jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionTime"]

Preprocessing

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 10m

LLD rule Memory pool discovery

Name Description Type Key and additional info
Memory pool discovery

Memory pools metrics discovery.

JMX agent jmx.discovery["beans","java.lang:name=*,type=MemoryPool"]

Item prototypes for Memory pool discovery

Name Description Type Key and additional info
Memory pool: {#JMXNAME} committed

Current memory allocated.

JMX agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.committed"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory pool: {#JMXNAME} 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 agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory pool: {#JMXNAME} used

Current memory usage.

JMX agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"]

Trigger prototypes for Memory pool discovery

Name Description Expression Severity Dependencies and additional info
Generic Java JMX: Memory pool: {#JMXNAME} memory usage is high min(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"],{$JMX.MP.USAGE.TIME:"{#JMXNAME}"})>(last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])*{$JMX.MP.USAGE.MAX:"{#JMXNAME}"}/100) and last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])>0 Warning

Feedback

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

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums

This template is for Zabbix version: 6.4

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/generic_java_jmx?at=release/6.4

Generic Java JMX

Overview

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

Requirements

Zabbix version: 6.4 and higher.

Tested versions

This template has been tested on:

  • Java Applications

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

Refer to the vendor documentation.

Macros used

Name Description Default
{$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
{$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 threshold for a specific pool.

85
{$JMX.MP.USAGE.TIME}

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

10m
{$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.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.MEM.POOL.NAME.MATCHES}

This macro used in memory pool discovery as a filter.

Old Gen|G1|Perm Gen|Code Cache|Tenured Gen
{$JMX.USER}

JMX username.

{$JMX.PASSWORD}

JMX password.

Items

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

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

ClassLoading: Total loaded class count

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

ClassLoading: Unloaded class count

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

Compilation: Name of the current JIT compiler

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

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

Compilation: Accumulated time spent

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

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

Preprocessing

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 10m

Memory: Heap memory committed

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

JMX agent jmx["java.lang:type=Memory","HeapMemoryUsage.committed"]
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 agent jmx["java.lang:type=Memory","HeapMemoryUsage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Heap memory used

Current memory usage outside the heap.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Memory","NonHeapMemoryUsage.committed"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Non-Heap memory used

Current memory usage outside the heap

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Object pending finalization count

The approximate number of objects for which finalization is pending.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 are opening file descriptors and never closing them.

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

ProcessCpuLoad represents the CPU load in this process.

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

Preprocessing

  • Custom multiplier: 100

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

Preprocessing

  • Custom multiplier: 0.001

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

Threading: Daemon thread count

Number of daemon threads running.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Threading","PeakThreadCount"]
Threading: Thread count

The number of threads running at the current moment.

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

The number of threads started since the JVM was launched.

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

Triggers

Name Description Expression Severity Dependencies and additional info
Compilation: {HOST.NAME} uses suboptimal JIT compiler find(/Generic Java JMX/jmx["java.lang:type=Compilation","Name"],,"like","Client")=1 Info Manual close: Yes
Memory: Heap memory usage is high min(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.used"],{$JMX.HEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])*{$JMX.HEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])>0 Warning
Memory: Non-Heap memory usage is high min(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.used"],{$JMX.NONHEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])*{$JMX.NONHEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])>0 Warning
OperatingSystem: Opened file descriptor count is high min(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","OpenFileDescriptorCount"],{$JMX.FILE.DESCRIPTORS.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"])*{$JMX.FILE.DESCRIPTORS.MAX}/100) Warning
OperatingSystem: Process CPU Load is high min(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","ProcessCpuLoad"],{$JMX.CPU.LOAD.TIME})>{$JMX.CPU.LOAD.MAX} Average
Runtime: JVM is not reachable nodata(/Generic Java JMX/jmx["java.lang:type=Runtime","Uptime"],5m)=1 Average Manual close: Yes
Runtime: {HOST.NAME} runs suboptimal VM type find(/Generic Java JMX/jmx["java.lang:type=Runtime","VmName"],,"like","Server")<>1 Info Manual close: Yes

LLD rule Garbage collector discovery

Name Description Type Key and additional info
Garbage collector discovery

Garbage collectors metrics discovery.

JMX agent jmx.discovery["beans","java.lang:name=*,type=GarbageCollector"]

Item prototypes for Garbage collector discovery

Name Description Type Key and additional info
GarbageCollector: {#JMXNAME} number of collections per second

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

JMX agent jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionCount"]

Preprocessing

  • Change per second
GarbageCollector: {#JMXNAME} accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX agent jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionTime"]

Preprocessing

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 10m

LLD rule Memory pool discovery

Name Description Type Key and additional info
Memory pool discovery

Memory pools metrics discovery.

JMX agent jmx.discovery["beans","java.lang:name=*,type=MemoryPool"]

Item prototypes for Memory pool discovery

Name Description Type Key and additional info
Memory pool: {#JMXNAME} committed

Current memory allocated.

JMX agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.committed"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory pool: {#JMXNAME} 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 agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory pool: {#JMXNAME} used

Current memory usage.

JMX agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"]

Trigger prototypes for Memory pool discovery

Name Description Expression Severity Dependencies and additional info
Memory pool: {#JMXNAME} memory usage is high min(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"],{$JMX.MP.USAGE.TIME:"{#JMXNAME}"})>(last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])*{$JMX.MP.USAGE.MAX:"{#JMXNAME}"}/100) and last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])>0 Warning

Feedback

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

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums

This template is for Zabbix version: 6.2

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/generic_java_jmx?at=release/6.2

Generic Java JMX

Overview

For Zabbix version: 6.2 and higher
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.MEM.POOL.NAME.MATCHES}

This macro used in memory pool discovery as a filter.

`Old Gen
{$JMX.MP.USAGE.MAX}

A threshold in percent for memory pools utilization trigger. Use a context to change the threshold 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
{$JMX.PASSWORD}

JMX password.

``
{$JMX.USER}

JMX username.

``

Template links

There are no template links in this template.

Discovery rules

Name Description Type Key and additional info
Garbage collector discovery

Garbage collectors metrics discovery.

JMX jmx.discovery["beans","java.lang:name=*,type=GarbageCollector"]
Memory pool discovery

Memory pools metrics discovery.

JMX jmx.discovery["beans","java.lang:name=*,type=MemoryPool"]

Filter:

- {#JMXNAME} MATCHES_REGEX {$JMX.MEM.POOL.NAME.MATCHES}

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 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 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 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"]
JMX GarbageCollector: {#JMXNAME} number of collections per second

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

JMX jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionCount"]

Preprocessing:

- CHANGE_PER_SECOND

JMX GarbageCollector: {#JMXNAME} accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionTime"]

Preprocessing:

- MULTIPLIER: 0.001

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory pool: {#JMXNAME} committed

Current memory allocated.

JMX jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.committed"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory pool: {#JMXNAME} 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:name={#JMXNAME},type=MemoryPool","Usage.max"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory pool: {#JMXNAME} used

Current memory usage.

JMX jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"]

Triggers

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

-

find(/Generic Java JMX/jmx["java.lang:type=Compilation","Name"],,"like","Client")=1 INFO

Manual close: YES

Memory: Heap memory usage is high

-

min(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.used"],{$JMX.HEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])*{$JMX.HEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])>0 WARNING
Memory: Non-Heap memory usage is high

-

min(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.used"],{$JMX.NONHEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])*{$JMX.NONHEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])>0 WARNING
OperatingSystem: Opened file descriptor count is high

-

min(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","OpenFileDescriptorCount"],{$JMX.FILE.DESCRIPTORS.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"])*{$JMX.FILE.DESCRIPTORS.MAX}/100) WARNING
OperatingSystem: Process CPU Load is high

-

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

-

nodata(/Generic Java JMX/jmx["java.lang:type=Runtime","Uptime"],5m)=1 AVERAGE

Manual close: YES

Runtime: {HOST.NAME} runs suboptimal VM type

-

find(/Generic Java JMX/jmx["java.lang:type=Runtime","VmName"],,"like","Server")<>1 INFO

Manual close: YES

Memory pool: {#JMXNAME} memory usage is high

-

min(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"],{$JMX.MP.USAGE.TIME:"{#JMXNAME}"})>(last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])*{$JMX.MP.USAGE.MAX:"{#JMXNAME}"}/100) and last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])>0 WARNING

Feedback

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

This template is for Zabbix version: 6.0

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/generic_java_jmx?at=release/6.0

Generic Java JMX

Overview

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

Requirements

Zabbix version: 6.0 and higher.

Tested versions

This template has been tested on:

  • Java Applications

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

Refer to the vendor documentation.

Macros used

Name Description Default
{$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
{$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 threshold for a specific pool.

85
{$JMX.MP.USAGE.TIME}

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

10m
{$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.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.MEM.POOL.NAME.MATCHES}

This macro used in memory pool discovery as a filter.

Old Gen|G1|Perm Gen|Code Cache|Tenured Gen
{$JMX.USER}

JMX username.

{$JMX.PASSWORD}

JMX password.

Items

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

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

ClassLoading: Total loaded class count

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

ClassLoading: Unloaded class count

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

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

Compilation: Name of the current JIT compiler

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

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

Compilation: Accumulated time spent

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

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

Preprocessing

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 10m

Memory: Heap memory committed

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

JMX agent jmx["java.lang:type=Memory","HeapMemoryUsage.committed"]
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 agent jmx["java.lang:type=Memory","HeapMemoryUsage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Heap memory used

Current memory usage outside the heap.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Memory","NonHeapMemoryUsage.committed"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Non-Heap memory used

Current memory usage outside the heap

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory: Object pending finalization count

The approximate number of objects for which finalization is pending.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 are opening file descriptors and never closing them.

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

ProcessCpuLoad represents the CPU load in this process.

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

Preprocessing

  • Custom multiplier: 100

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

Preprocessing

  • Custom multiplier: 0.001

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

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

Preprocessing

  • Discard unchanged with heartbeat: 30m

Threading: Daemon thread count

Number of daemon threads running.

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

Preprocessing

  • Discard unchanged with heartbeat: 10m

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 agent jmx["java.lang:type=Threading","PeakThreadCount"]
Threading: Thread count

The number of threads running at the current moment.

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

The number of threads started since the JVM was launched.

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

Triggers

Name Description Expression Severity Dependencies and additional info
Compilation: {HOST.NAME} uses suboptimal JIT compiler find(/Generic Java JMX/jmx["java.lang:type=Compilation","Name"],,"like","Client")=1 Info Manual close: Yes
Memory: Heap memory usage is high min(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.used"],{$JMX.HEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])*{$JMX.HEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])>0 Warning
Memory: Non-Heap memory usage is high min(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.used"],{$JMX.NONHEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])*{$JMX.NONHEAP.MEM.USAGE.MAX}/100) and last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])>0 Warning
OperatingSystem: Opened file descriptor count is high min(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","OpenFileDescriptorCount"],{$JMX.FILE.DESCRIPTORS.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","MaxFileDescriptorCount"])*{$JMX.FILE.DESCRIPTORS.MAX}/100) Warning
OperatingSystem: Process CPU Load is high min(/Generic Java JMX/jmx["java.lang:type=OperatingSystem","ProcessCpuLoad"],{$JMX.CPU.LOAD.TIME})>{$JMX.CPU.LOAD.MAX} Average
Runtime: JVM is not reachable nodata(/Generic Java JMX/jmx["java.lang:type=Runtime","Uptime"],5m)=1 Average Manual close: Yes
Runtime: {HOST.NAME} runs suboptimal VM type find(/Generic Java JMX/jmx["java.lang:type=Runtime","VmName"],,"like","Server")<>1 Info Manual close: Yes

LLD rule Garbage collector discovery

Name Description Type Key and additional info
Garbage collector discovery

Garbage collectors metrics discovery.

JMX agent jmx.discovery["beans","java.lang:name=*,type=GarbageCollector"]

Item prototypes for Garbage collector discovery

Name Description Type Key and additional info
GarbageCollector: {#JMXNAME} number of collections per second

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

JMX agent jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionCount"]

Preprocessing

  • Change per second
GarbageCollector: {#JMXNAME} accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX agent jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionTime"]

Preprocessing

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 10m

LLD rule Memory pool discovery

Name Description Type Key and additional info
Memory pool discovery

Memory pools metrics discovery.

JMX agent jmx.discovery["beans","java.lang:name=*,type=MemoryPool"]

Item prototypes for Memory pool discovery

Name Description Type Key and additional info
Memory pool: {#JMXNAME} committed

Current memory allocated.

JMX agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.committed"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory pool: {#JMXNAME} 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 agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"]

Preprocessing

  • Discard unchanged with heartbeat: 10m

Memory pool: {#JMXNAME} used

Current memory usage.

JMX agent jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"]

Trigger prototypes for Memory pool discovery

Name Description Expression Severity Dependencies and additional info
Memory pool: {#JMXNAME} memory usage is high min(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"],{$JMX.MP.USAGE.TIME:"{#JMXNAME}"})>(last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])*{$JMX.MP.USAGE.MAX:"{#JMXNAME}"}/100) and last(/Generic Java JMX/jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"])>0 Warning

Feedback

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

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums

This template is for Zabbix version: 5.4

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/generic_java_jmx?at=release/5.4

Generic Java JMX

Overview

For Zabbix version: 5.4 and higher
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 threshold 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

-

find(/Generic Java JMX/jmx["java.lang:type=Compilation","Name"],,"like","Client")=1 INFO

Manual close: YES

GarbageCollector: Concurrent Mark Sweep in fire fighting mode

-

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

-

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

-

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

-

min(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.used"],{$JMX.HEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","HeapMemoryUsage.max"])*{$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}

-

min(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.used"],{$JMX.NONHEAP.MEM.USAGE.TIME})>(last(/Generic Java JMX/jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"])*{$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"}

-

min(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=CMS Old Gen","Usage.used"],{$JMX.MP.USAGE.TIME:"CMS Old Gen"})>(last(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=CMS Old Gen","Usage.max"])*{$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"}

-

min(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=CMS Perm Gen","Usage.used"],{$JMX.MP.USAGE.TIME:"CMS Perm Gen"})>(last(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=CMS Perm Gen","Usage.max"])*{$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"}

-

min(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=Code Cache","Usage.used"],{$JMX.MP.USAGE.TIME:"Code Cache"})>(last(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=Code Cache","Usage.max"])*{$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"}

-

min(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=Perm Gen","Usage.used"],{$JMX.MP.USAGE.TIME:"Perm Gen"})>(last(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=Perm Gen","Usage.max"])*{$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"}

-

min(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=PS Old Gen","Usage.used"],{$JMX.MP.USAGE.TIME:"PS Old Gen"})>(last(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=PS Old Gen","Usage.max"])*{$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"}

-

min(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=PS Perm Gen","Usage.used"],{$JMX.MP.USAGE.TIME:"PS Perm Gen"})>(last(/Generic Java JMX/jmx["java.lang:type=MemoryPool,name=PS Perm Gen","Usage.max"])*{$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"}

-

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

-

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

-

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

-

nodata(/Generic Java JMX/jmx["java.lang:type=Runtime","Uptime"],5m)=1 AVERAGE

Manual close: YES

Runtime: {HOST.NAME} runs suboptimal VM type

-

find(/Generic Java JMX/jmx["java.lang:type=Runtime","VmName"],,"like","Server")<>1 INFO

Manual close: YES

Feedback

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

This template is for Zabbix version: 5.0

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/generic_java_jmx?at=release/5.0

Template App Generic Java JMX

Overview

For Zabbix version: 5.0 and higher
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.MEM.POOL.NAME.MATCHES}

This macro used in memory pool discovery as a filter.

`Old Gen
{$JMX.MP.USAGE.MAX}

A threshold in percent for memory pools utilization trigger. Use a context to change the threshold 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
{$JMX.PASSWORD}

JMX password.

``
{$JMX.USER}

JMX username.

``

Template links

There are no template links in this template.

Discovery rules

Name Description Type Key and additional info
Garbage collector discovery

Garbage collectors metrics discovery.

JMX jmx.discovery["beans","java.lang:name=*,type=GarbageCollector"]
Memory pool discovery

Memory pools metrics discovery.

JMX jmx.discovery["beans","java.lang:name=*,type=MemoryPool"]

Filter:

- A: {#JMXNAME} MATCHES_REGEX {$JMX.MEM.POOL.NAME.MATCHES}

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 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 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 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"]
JMX GarbageCollector {#JMXNAME}: number of collections per second

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

JMX jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionCount"]

Preprocessing:

- CHANGE_PER_SECOND

JMX GarbageCollector {#JMXNAME}: accumulated time spent in collection

Displays the approximate accumulated collection elapsed time, in seconds.

JMX jmx["java.lang:name={#JMXNAME},type=GarbageCollector","CollectionTime"]

Preprocessing:

- MULTIPLIER: 0.001

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory pool {#JMXNAME}: committed

Current memory allocated.

JMX jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.committed"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory pool {#JMXNAME}: 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:name={#JMXNAME},type=MemoryPool","Usage.max"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

JMX Memory pool {#JMXNAME}: used

Current memory usage.

JMX jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"]

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

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_NAME:jmx["java.lang:type=Memory","HeapMemoryUsage.max"].last()}*{$JMX.HEAP.MEM.USAGE.MAX}/100) and {TEMPLATE_NAME:jmx["java.lang:type=Memory","HeapMemoryUsage.max"].last()}>0 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_NAME:jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"].last()}*{$JMX.NONHEAP.MEM.USAGE.MAX}/100) and {TEMPLATE_NAME:jmx["java.lang:type=Memory","NonHeapMemoryUsage.max"].last()}>0 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_NAME: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

Memory pool {#JMXNAME}: {#JMXNAME} memory usage more than {$JMX.MP.USAGE.MAX:"{#JMXNAME}"}% for {$JMX.MP.USAGE.TIME:"{#JMXNAME}"}

-

{TEMPLATE_NAME:jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.used"].min({$JMX.MP.USAGE.TIME:"{#JMXNAME}"})}>({TEMPLATE_NAME:jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"].last()}*{$JMX.MP.USAGE.MAX:"{#JMXNAME}"}/100) and {TEMPLATE_NAME:jmx["java.lang:name={#JMXNAME},type=MemoryPool","Usage.max"].last()}>0 WARNING

Feedback

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

This template is for Zabbix version: 4.0

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/generic_java_jmx?at=release/4.0

Template App Generic Java JMX

Overview

For Zabbix version: 4.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

Media

πŸ‘ Zabbix Java Gateway Installation With Tomcat Monitoring
Zabbix Java Gateway Installation With Tomcat Monitoring
πŸ‘ Image

Request custom integration

Zabbix integration team will develop custom integration based on your requirements and Zabbix best practices.

Request
πŸ‘ Image

Propose integration

Have you already developed high quality integration and want to submit to Zabbix integration repository?

Propose