JMX Exporter

Metrics

  • java_lang_Runtime_Uptime: This JMX metric represents the uptime of the Java Virtual Machine (JVM) in milliseconds since it started. It indicates the duration for which the JVM has been running continuously without being restarted.

  • java_lang_Runtime_StartTime: This JMX metric represents the start time of the Java Virtual Machine (JVM) in milliseconds. It indicates the timestamp when the JVM instance was started or initialized. This metric is useful for tracking the exact time when the JVM began its current session or runtime.

  • java_lang_OperatingSystem_AvailableProcessors: This JMX metric indicates the number of processors available to the Java Virtual Machine (JVM) on the system. It reflects the current count of CPU cores or processors that the JVM can utilize for executing tasks.

  • java_lang_OperatingSystem_TotalPhysicalMemorySize: This JMX metric represents the total physical memory (RAM) available to the operating system in bytes. It reflects the entire memory capacity installed on the system that the JVM can potentially utilize.

  • java_lang_OperatingSystem_TotalSwapSpaceSize: This JMX metric represents the total swap space size available to the operating system in bytes. Swap space is a portion of a hard disk that is used as virtual memory when the physical RAM is full. This metric indicates the total capacity of the swap space that the operating system can use for memory management.

  • java_lang_OperatingSystem_OpenFileDescriptorCount: This JMX metric indicates the current number of open file descriptors in use by the operating system. File descriptors are used by the operating system to represent files, sockets, pipes, and other resources that are open or in use by processes.

  • java_lang_OperatingSystem_ProcessCpuTime: This JMX metric represents the total CPU time used by the current Java process since it started. It indicates the cumulative amount of CPU time consumed by the Java process across all threads.

  • java_lang_Threading_CurrentThreadCpuTime: This JMX metric represents the CPU time used by the current thread within the Java Virtual Machine (JVM). It measures the amount of CPU time consumed exclusively by the executing thread.

  • process_cpu_seconds_total: This metric tracks the total amount of CPU time consumed by the process in seconds since the process started. It includes user-mode and system-mode CPU time across all threads of the process.

  • java_lang_OperatingSystem_SystemCpuLoad: This JMX metric indicates the recent system-wide CPU load. It reflects the average CPU usage across all cores or processors available to the operating system

  • java_lang_OperatingSystem_ProcessCpuLoad: This JMX metric represents the recent CPU load for the Java process. It indicates the proportion of CPU resources being used by the Java process relative to the total available CPU resources on the system.

  • java_lang_OperatingSystem_FreePhysicalMemorySize: This JMX metric indicates the amount of free physical memory (RAM) available to the operating system in bytes. It reflects the memory capacity that is currently not in use by applications or cached by the operating system.

  • java_lang_OperatingSystem_FreeSwapSpaceSize: This JMX metric indicates the amount of free swap space available to the operating system in bytes. Swap space is a portion of the disk that is used as virtual memory when the physical RAM is full.

  • java_lang_OperatingSystem_CommittedVirtualMemorySize: This JMX metric represents the amount of virtual memory that is guaranteed to be available for the operating system and its processes in bytes. It includes both physical RAM and swap space.

  • process_resident_memory_bytes: This metric typically indicates the amount of physical memory (RAM) currently used by a process in bytes. It reflects the portion of memory that is actively being used by the process and is resident in physical RAM.

  • process_virtual_memory_bytes: This metric typically represents the total amount of virtual memory allocated for a process in bytes. Virtual memory includes both physical RAM and swap space. It reflects the total memory commitment of the process, including memory that may be swapped out to disk.

  • jvm_memory_used_bytes: This metric typically indicates the current amount of memory used by the Java Virtual Machine (JVM) in bytes. It reflects the total memory allocated by the JVM for various purposes, including heap memory, non-heap memory, and other JVM components.

  • jvm_memory_committed_bytes: This metric represents the total amount of memory that has been committed for use by the Java Virtual Machine (JVM) in bytes. It includes both the initial and maximum heap sizes allocated to the JVM, as well as other memory areas such as non-heap memory.

  • jvm_memory_pool_max_bytes: The jvm_memory_pool_max_bytes metric reflects the maximum allowable memory capacity for specific memory pools within the Java Virtual Machine (JVM). These memory pools are segmented into heap and non-heap areas, each serving distinct purposes to optimize memory management.

  • jvm_gc_collection_seconds_count: This metric indicates the total number of garbage collection (GC) events that have occurred within the Java Virtual Machine (JVM). Each GC event involves reclaiming memory occupied by objects that are no longer in use, helping to free up resources and maintain efficient memory usage.

  • jvm_gc_collection_seconds_sum: This metric represents the cumulative time spent on garbage collection (GC) in seconds since the JVM started. It aggregates the durations of all GC events, reflecting the total time spent by the JVM in reclaiming and managing memory through garbage collection.

  • java_lang_Threading_ThreadCount: This metric indicates the current number of live threads in the Java Virtual Machine (JVM). It includes all threads created by the application, including daemon threads.

  • java_lang_Threading_DaemonThreadCount: This metric indicates the current number of daemon threads running in the JVM. Daemon threads are typically used for background tasks and do not prevent the JVM from exiting when all non-daemon threads have finished.

  • java_lang_Threading_PeakThreadCount: This metric represents the peak number of threads that have been active simultaneously since the JVM started. It provides insights into the maximum thread usage reached during the JVM’s lifetime.

  • java_lang_Threading_TotalStartedThreadCount: This metric indicates the total number of threads that have been started and not yet terminated since the JVM started. It includes all threads, regardless of whether they are still running or have completed.

  • jvm_threads_current: Indicates the current number of live threads in the Java Virtual Machine (JVM).

  • jvm_threads_daemon: Represents the current number of daemon threads running in the JVM. Daemon threads are typically used for background tasks and do not prevent the JVM from exiting when all non-daemon threads have finished.

  • jvm_threads_deadlocked: Shows the number of threads that are currently deadlocked in the JVM. Deadlock occurs when two or more threads are blocked forever, waiting on each other to release resources.

  • jvm_threads_deadlocked_monitor: Indicates the number of threads that are deadlocked due to waiting to acquire an object monitor in the JVM.

  • jvm_threads_peak: Represents the peak number of threads that have been active simultaneously since the JVM started. It provides information of the maximum thread usage reached during the JVM’s lifetime.

  • jvm_threads_started_total: Indicates the total number of threads that have been started and not yet terminated since the JVM started. It includes all threads, regardless of whether they are still running or have completed their execution.

  • java_lang_ClassLoading_LoadedClassCount: This metric indicates the current number of classes that have been loaded into the Java Virtual Machine (JVM) since the JVM started. It includes both application classes and internal JVM classes.

  • java_lang_ClassLoading_UnloadedClassCount: This metric represents the total number of classes that have been unloaded from the JVM since it started. Classes can be unloaded by the JVM’s garbage collector when they are no longer needed, freeing up memory.

  • jvm_classes_currently_loaded: Indicates the current number of classes that are actively loaded and resident in the Java Virtual Machine (JVM) at a given time. This metric reflects the number of classes currently in use by running applications.

  • jvm_classes_loaded_total: Represents the total number of classes that have been loaded into the JVM since it started. This metric includes all classes loaded, whether they are currently in use or not.


Grafana Dashboard Panels

System Row

JDK Panel

This panel provides information about the Java Development Kit (JDK) in use. It includes details about the vendor (Oracle Corporation), the environment (OpenJDK Runtime Environment), and the version. This helps in understanding the Java environment and its compatibility with applications.

Status Panel

The status panel shows whether the Java process is currently running (“UP”) and provides its uptime, start time, and overall state. This information is crucial for monitoring the availability and stability of the application.

Uptime Panel

This panel indicates the duration for which the Java application or service has been continuously running without interruption. It provides a real-time measure of how long the application has been operational since its last start or restart.

  • Metrics Used: java_lang_Runtime_Uptime

Start time Panel

This panel displays the specific date and time when the Java application or service was initially started or last restarted. It provides a timestamp that indicates the exact moment the application began its current operational session

  • Metrics Used: java_lang_Runtime_StartTime

CPU Cores Panel

This panel indicates the number of CPU cores available to the system. More cores can handle more parallel processing, which impacts the performance of applications.

  • Metrics Used: java_lang_OperatingSystem_AvailableProcessors

Total RAM Panel

This panel displays the total amount of RAM available in the system, which affects the system’s capacity to handle processes and data.

  • Metrics Used: java_lang_OperatingSystem_TotalPhysicalMemorySize

Total SWAP Panel

This panel shows the total swap space available. Swap space is used when the physical RAM is full, allowing the system to continue operating by using disk space for additional memory needs.

  • Metrics Used: java_lang_OperatingSystem_TotalSwapSpaceSize

Open File Descriptors Panel

This panel tracks the number of file descriptors currently open. File descriptors represent open files, sockets, etc., and monitoring their number helps ensure the system does not exceed its limits, which could lead to failures.

  • Metrics Used: java_lang_OperatingSystem_OpenFileDescriptorCount

CPU Time Panel

This panel tracks the total CPU time consumed by the process and the current thread. It provides insights into the processing time utilized by Java applications, helping in performance analysis.

  • Metrics Used: java_lang_OperatingSystem_ProcessCpuTime, java_lang_Threading_CurrentThreadCpuTime, process_cpu_seconds_total

CPU System Load Average Panel

This panel shows the average system load over a specified period. High system load indicates that the system is busy, which can affect the performance of applications.

  • Metrics Used: java_lang_OperatingSystem_SystemCpuLoad

CPU Process Load (1m avg) Panel

This panel displays the average CPU load specifically for the Java process over the last minute, helping identify the Java application’s immediate resource demands.

  • Metrics Used: java_lang_OperatingSystem_ProcessCpuLoad

CPU System Load (1m avg) Panel

This panel indicates the overall CPU load on the system over the last minute, useful for understanding overall system performance.

  • Metrics Used: java_lang_OperatingSystem_SystemCpuLoad

Memory Utilization Panel

This panel shows the percentage of RAM currently in use, providing insights into how much memory is being consumed by the system and applications.

  • Metrics Used: java_lang_OperatingSystem_FreePhysicalMemorySize

SWAP Utilization Panel This panel indicates the percentage of swap space being used, showing if the system is relying on swap due to insufficient RAM.

  • Metrics Used: java_lang_OperatingSystem_FreeSwapSpaceSize

Memory Row

Physical Memory Panel

The Physical Memory panel in the JMX dashboard provides details about the system’s RAM. It includes Free, which shows the amount of unused RAM available for new processes, and Total, indicating the total physical memory installed, crucial for capacity planning. Additionally, the Committed VM tracks the amount of virtual memory the system has guaranteed for use, combining RAM and swap space.

  • Metrics Used: java_lang_OperatingSystem_FreePhysicalMemorySize, java_lang_OperatingSystem_TotalPhysicalMemorySize, java_lang_OperatingSystem_CommittedVirtualMemorySize

Process Memory Panel

The Process Memory section in the JMX dashboard provides insights into the memory usage of the monitored Java process. The Resident panel, displays the physical memory currently used by the process (resident set size). The Virtual panel,shows the total amount of virtual memory allocated to the process, including both RAM and swap space.

  • Metrics Used: process_resident_memory_bytes, process_virtual_memory_bytes

Memory JVM Row

JVM Memory Used [heap] Panel

This panel tracks the amount of heap memory currently in use by the JVM. Heap memory is where Java objects are allocated.

  • Metrics Used: jvm_memory_used_bytes

JVM Memory Used [nonheap] Panel

This panel shows the amount of non-heap memory in use by the JVM. Non-heap memory includes areas such as the method area, where class structures (like metadata, method data, and constant pool) are stored.

  • Metrics Used: jvm_memory_used_bytes

JVM Memory Usage [heap] Panel

This panel displays the percentage of heap memory usage relative to the total heap memory available. It provides a quick view of how much of the heap is being utilized.

  • Metrics Used: jvm_memory_used_bytes

JVM Memory Usage [nonheap] Panel

This panel shows the percentage of non-heap memory usage. Monitoring this helps in understanding the proportion of non-heap memory being used relative to its total allocation.

  • Metrics Used: jvm_memory_used_bytes

JVM Memory Committed Panel

This panel indicates the amount of memory that the JVM has committed for use, split into heap and non-heap categories. The committed memory is the amount of memory that the JVM has reserved from the operating system for its operations.

  • Metrics Used: jvm_memory_committed_bytes

Memory JVM Pool Row

Memory pool [CodeHeap ’non-nmethods’] Panel

The “Memory pool [CodeHeap ’non-nmethods’]” panel in the JMX dashboard shows the maximum memory allocated for non-method code like JVM internal code and runtime services.Max: Indicates the limit of memory allocated to the ’non-nmethods’ code heap, ensuring sufficient space for JVM internal tasks

  • Metrics Used: jvm_memory_pool_max_bytes pool= CodeHeap | non-nmethods

Memory pool [CodeHeap ’non-profiled nmethods’] Panel

This panel displays the maximum memory allocated to the ’non-profiled nmethods’ code heap, used for storing non-profiled compiled methods.Max: Shows the maximum memory limit for the ’non-profiled nmethods’ code heap, ensuring sufficient space for storing non-profiled compiled methods.

  • Metrics Used: jvm_memory_pool_max_bytes pool= CodeHeap | non-profiled nmethods

Memory pool [CodeHeap ‘profiled nmethods’] Panel

This panel indicates the maximum memory allocated to the ‘profiled nmethods’ code heap, used for storing profiled compiled methods.Max: Displays the memory limit for the ‘profiled nmethods’ code heap, ensuring enough space for storing profiled compiled methods.

  • Metrics Used: jvm_memory_pool_max_bytes pool= CodeHeap | profiled nmethods

Memory pool [Compressed Class Space] Panel

This panel shows the maximum memory allocated to the Compressed Class Space, used for storing class metadata. Max: Indicates the limit of memory allocated to the Compressed Class Space, supporting efficient class metadata storage.

  • Metrics Used: jvm_memory_pool_max_bytes pool= Compressed Class Space

Memory pool [Metaspace] Panel

This panel provides information on the maximum memory allocated to the Metaspace, used for storing class metadata and other reflective data. Ensuring sufficient memory here is crucial for JVM performance.Max: Shows the maximum memory allocated to the Metaspace, which supports the storage of class metadata.

  • Metrics Used: jvm_memory_pool_max_bytes pool= Metaspace

Memory pool [PS Eden Space] Panel

This panel indicates the maximum memory allocated to the PS Eden Space, a part of the Young Generation in the JVM heap. Max: Displays the maximum memory limit for the PS Eden Space, ensuring efficient management of new object allocation.

  • Metrics Used: jvm_memory_pool_max_bytes pool= PS Eden Space

Memory pool [PS Old Gen] Panel

This panel shows the maximum memory allocated to the PS Old Gen, which is part of the Tenured Generation in the JVM heap.Max: Indicates the memory limit for the PS Old Gen, supporting the storage of long-lived objects.

  • Metrics Used: jvm_memory_pool_max_bytes pool= PS Old Gen

Memory pool [PS Survivor Space] Panel

This panel displays the maximum memory allocated to the PS Survivor Space, which is used to store objects that have survived one.Max: Shows the maximum memory limit for the PS Survivor Space, aiding in the efficient management of objects that survive garbage collection cycles.

  • Metrics Used: jvm_memory_pool_max_bytes pool= PS Survivor Space

Garbage Collector Row

GC count increase Panel

GC count increase shows how many times garbage collections have occurred.PS MarkSweep counts collections by the Parallel Old (MarkSweep) collector.PS Scavenge counts collections by the Parallel Young (Scavenge) collector.

  • Metrics Used: jvm_gc_collection_seconds_count

GC count rate Panel

GC count rate monitors how frequently garbage collections happen.PS MarkSweep tracks the rate of collections by the Parallel Old (MarkSweep) collector.PS Scavenge measures the rate of collections by the Parallel Young (Scavenge) collector.

  • Metrics Used: jvm_gc_collection_seconds_count

GC Time increase Panel

GC Time increase displays the increase in time taken for garbage collections.PS MarkSweep records the time spent on collections by the Parallel Old (MarkSweep) collector.PS Scavenge shows the time spent on collections by the Parallel Young (Scavenge) collector.

  • Metrics Used: jvm_gc_collection_seconds_sum

GC Time rate Panel

GC Time rate indicates how quickly GC time accumulates.PS MarkSweep shows the rate of time taken per collection by the Parallel Old (MarkSweep) collector.PS Scavenge measures the rate of time taken per collection by the Parallel Young (Scavenge) collector.

  • Metrics Used: jvm_gc_collection_seconds_sum

Threading Row

JVM Threading Threads Panel

This panel provides insights into the threading activity within the Java Virtual Machine (JVM). It tracks metrics such as current thread count, daemon threads (background tasks), peak thread count observed, and total threads started since JVM inception.

  • Metrics Used: java_lang_Threading_ThreadCount, java_lang_Threading_DaemonThreadCount, java_lang_Threading_PeakThreadCount, java_lang_Threading_TotalStartedThreadCount

JVM Threading Threads increase Panel

This panel monitors the increase in threading metrics over time, including current threads, daemon threads, peak threads, and total threads started. It shows the rate at which these thread counts are growing, which helps in detecting trends and potential issues related to thread utilization.

  • Metrics Used: java_lang_Threading_ThreadCount, java_lang_Threading_DaemonThreadCount, java_lang_Threading_PeakThreadCount, java_lang_Threading_TotalStartedThreadCount

JVM Threading Threads rate Panel

Here, the dashboard displays the rate of change for threading metrics, indicating how quickly the counts of current threads, daemon threads, peak threads, and total threads started are changing.

  • Metrics Used: java_lang_Threading_ThreadCount, java_lang_Threading_DaemonThreadCount, java_lang_Threading_PeakThreadCount, java_lang_Threading_TotalStartedThreadCount

JVM Threads current Panel

This panel focuses on the current state of threading metrics, including current threads, daemon threads, deadlocked threads, deadlocked monitor threads, peak thread count observed, and total threads started. It provides a snapshot of the current threading environment within the JVM.

  • Metrics Used: jvm_threads_current, jvm_threads_daemon, jvm_threads_deadlocked, jvm_threads_deadlocked_monitor, jvm_threads_peak, jvm_threads_started_total

JVM Threads current increase Panel

This panel tracks the increase in threading metrics over time, specifically current threads, daemon threads, deadlocked threads, deadlocked monitor threads, peak threads, and total threads started. It shows how these metrics are changing over time.

  • Metrics Used: jvm_threads_current, jvm_threads_daemon, jvm_threads_deadlocked, jvm_threads_deadlocked_monitor, jvm_threads_peak, jvm_threads_started_total

JVM Threads current rate Panel

This panel displays the rate of change for threading metrics, including current threads, daemon threads, deadlocked threads, deadlocked monitor threads, peak threads, and total threads started.

  • Metrics Used: jvm_threads_current, jvm_threads_daemon, jvm_threads_deadlocked, jvm_threads_deadlocked_monitor, jvm_threads_peak, jvm_threads_started_total

Classes Row

Class Loading count Panel

This panel tracks the overall count of classes loaded and unloaded by the Java Virtual Machine (JVM). It provides metrics such as the total number of classes currently loaded and those that have been unloaded since JVM startup.

  • Metrics Used: java_lang_ClassLoading_LoadedClassCount, java_lang_ClassLoading_UnloadedClassCount

Class Loading count increase Panel

This panel shows the change in class loading metrics over time, specifically focusing on the increase in loaded and unloaded classes. It indicates how the counts of loaded and unloaded classes are changing.

  • Metrics Used:java_lang_ClassLoading_LoadedClassCount, java_lang_ClassLoading_UnloadedClassCount

Class Loading count rate Panel

The dashboard displays the rate of change for class loading metrics, including the rate of loaded and unloaded classes. It measures how quickly the JVM is loading or unloading classes.

  • Metrics Used: java_lang_ClassLoading_LoadedClassCount, java_lang_ClassLoading_UnloadedClassCount

Classes Loaded Panel

These panels track the current and total counts of classes loaded by the Java Virtual Machine (JVM). “Currently” shows the number of classes currently loaded in memory, reflecting the immediate state of loaded classes. “Total” indicates the cumulative count of classes loaded since the JVM started.

  • Metrics Used: jvm_classes_currently_loaded, jvm_classes_loaded_total

Classes Loaded increase Panel

These panels display the change in class loading metrics over time, focusing on the increase in currently loaded and total loaded classes. They indicate how the counts of currently loaded and total loaded classes are changing.

  • Metrics Used: jvm_classes_currently_loaded, jvm_classes_loaded_total

Classes Loaded rate Panel

The dashboard shows the rate of change for class loading metrics, including the rate of currently loaded and total loaded classes. It measures how quickly the JVM is loading classes into memory.

  • Metrics Used: jvm_classes_currently_loaded, jvm_classes_loaded_total