Skip to main content
Version: NG-2.14

JVM Monitor

Introduction

The JVM Monitor O11ysource tracks and analyzes the performance and health of the Java Virtual Machine (JVM). It collects metrics such as memory usage, garbage collection activity, thread management, and CPU consumption, providing insights into application performance and resource utilization.

Getting Started

Compatibility

vuSmartMaps supports monitoring of your JVM or Java Virtual Machine, the core engine that executes Java applications.

Data Collection Method

vuSmartMaps collects health and performance data for JVM Monitor using VuNet's vuAppAgent. This data collector collects data based on the source configuration.

Prerequisites

Dependent Configuration

To configure this O11ySource, create a 'credential' of type 'user' under the 'Definition' tab.

Inputs for Configuring Data Source

  • JVM Server: The IP Address/FQDN of the JVM server. This field is the key to identify each server you add here.
  • Period [in seconds]: How frequently data is gathered. Period should be between 60 seconds - 3000 seconds.
  • JVM Instance Details: Include all instances of the JVMs associated with the specific host.
  • Listening IP(JMX): The IP address on which JVM application's JMX listens. Eg: localhost
  • JMX Port: The JMX port number on which JVM send metrics.
  • JVM Name: The name of the JVM instance.
  • Credential: These are the access credentials for the database. You should define these credentials on the 'Definitions' page, and then use the specified name here. Select 'None' if not enabled the authentication.

Firewall Requirement

To collect data from this O11ySource, ensure the following ports are opened:

Source IPDestination IPDestination PortProtocolDirection
IP address of the JVM serverData Collector End Point9092*TCPInbound

*Before providing the firewall requirements, please update the port based on the customer environment.

Configuring the Target

  • Health and Performance metrics of JVM server is collected using vuAppAgent. In some customer environments, customers may have to create a 'vunet' user and install and run vuAppAgent with 'vunet' user. Please refer to 'Agent' section for more details on how to download and install vuAppAgent Agent.
  • The vuAppAgent collects JVM metrics by establishing a connection to the JMX module. To enable JMX on the Java application or JVM for monitoring purposes, JMX configuration should be added to the JVM options when starting the Java application. For instance, the following JVM parameters can be added to enable JMX:
-Dcom.sun.management.jmxremote


-Dcom.sun.management.jmxremote.port=PORT_NUMBER:


-Dcom.sun.management.jmxremote.ssl=false:


-Dcom.sun.management.jmxremote.authenticate=false:
  • JVM Options Overview:

  • *-Dcom.sun.management.jmxremote: Enables JMX remote monitoring.

  • *-Dcom.sun.management.jmxremote.port=PORT_NUMBER: Specifies the JMX port for remote connections.

  • *-Dcom.sun.management.jmxremote.ssl=false: Disables SSL for JMX connections.

  • *-Dcom.sun.management.jmxremote.authenticate=false: Disables authentication for JMX connections. You can set this to true to enable authentication.

  • Replace PORT_NUMBER with the desired JMX port.

Configuration Steps

  • Enable the JVM Monitor O11ySource.
  • Select the Sources tab and press the + button to add a new JVM host to be monitored.
  • Set up metrics configurations. Afterwards, select Save and Continue to proceed with downloading the agents.
  • The following packages will be available for download based on the OS:Download <OS> vuAppAgent Installation Binary - Downloads the full vuAppAgent package with required configurations for a fresh installationDownload <OS> vuAppAgent Update Configuration Binary - Downloads the agent configuration package to update an existing vuAppAgent installation
  • Download the agent installation or update package, then click Finish to close the data source window.

Metrics Collected

NameDescriptionData Type
@timestampTimestamp when the metric collected in string format.String
HostThe host ip address of the machine from the metrics collected.String
KeyPropertyListTypeType of metrics.String
OwnerOwner of the server.String
TimeThe time when the metric collected in String format.String
application_nameThe application name.String
bu_idBU IDLowCardinality(String)
hostThe host ip address of the machine from the metrics collected.String
source_idThe host ip address of the machine from the metrics collected.String
targetThe host ip address of the machine from the metrics collected.String
tenant_idTenant IDLowCardinality(String)
timestampThe time when the metric collected in Date format.DateTime64
KeyPropertyListNameName of the Garbage CollectorString
NameName of the Garbage CollectorString
ObjectNameMBean Name.String
BlockedCountThe blocked thread Count.UInt64
BlockedTimeThread block time.Int64
CollectionCountThe total number of collections that have occurred. This method returns -1 if the collection count is undefined for this collector.UInt64
CollectionTimeThe approximate accumulated collection elapsed time in milliseconds. This method returns -1 if the collection elapsed time is undefined for this collector.UInt64
CommittedVirtualMemorySizeThe amount of virtual memory that is guaranteed to be available to the running process in bytes, or -1 if this operation is not supported.UInt64
CompilationTimeMonitoringSupportedThis typically indicates whether the application or system supports the monitoring of compilation times during execution.UInt8
ErrorMessageReason for the status is DOWNString
FreePhysicalMemorySizeThe amount of free physical memory in bytes.UInt64
FreeSwapSpaceSizeThe amount of free swap space in bytes.UInt64
HeapMemoryUsage_committedCommitted heap memory after GC.UInt64
HeapMemoryUsage_initInitial heap memory after GC.UInt64
HeapMemoryUsage_maxMaximum heap memory after GC.UInt64
HeapMemoryUsage_usedUsed heap memory after GC.UInt64
InNativeRefers to a state of a thread that indicates it is currently executing in native codeUInt8
LastGcInfo_GcThreadCountThe number of threads involved in the last garbage collection event.UInt64
LastGcInfo_durationThe total time taken (in milliseconds) for the last garbage collection event.UInt64
LastGcInfo_endTimeThe end time (timestamp) of the last garbage collection event.UInt64
LastGcInfo_gcEndTimestampThe timestamp indicating when the last garbage collection event completed.String
LastGcInfo_gcStartTimestampThe timestamp indicating when the last garbage collection event started.String
LastGcInfo_idA unique identifier for the last garbage collection event.UInt64
LastGcInfo_startTimeThe start time (timestamp) of the last garbage collection event.UInt64
LoadedClassCountThe number of classes that are currently loaded in the Java virtualmachine.UInt64
LockOwnerIDAn identifier for the owner of a lock in a concurrent environment, used to track which thread or process holds the lock.Int64
MaxFileDescriptorCountThe maximum number of open file descriptors allowed by the operatingsystem.UInt64
MemoryPoolNameThe name of a specific memory pool in the JVM used for managing memory allocation.String
MonitorInfoA metric that provides information about the monitoring state of JVM threads, including details on thread synchronization, locks held, and thread contention.String
NonHeapMemoryUsage_committedCommitted non heap memory before GC.UInt64
NonHeapMemoryUsage_initInitial non heap memory before GC.UInt64
NonHeapMemoryUsage_maxMaximum non heap memory before GC.Int64
NonHeapMemoryUsage_usedUsed non heap memory before GC.UInt64
OpenFileDescriptorCountThe current number of open file descriptors.UInt64
PeakThreadCountThe highest number of active threads that were alive during the lifetime of the JVM.UInt64
PeakUsage_committedThe amount of memory that has been committed for use by the memory pool.UInt64
PeakUsage_initThe initial amount of memory allocated for the memory pool.UInt64
PeakUsage_maxThe maximum amount of memory that can be allocated for the memory pool.Int64
PeakUsage_usedThe amount of memory currently in use within the memory pool.UInt64
ProcessCpuLoadThe CPU load percentage used by the process running the JVM.Float64
ProcessCpuTimeThe total CPU time used by the JVM process, typically measured in nanoseconds.UInt64
StackTraceThe current stack trace of a thread, showing the method call hierarchy.String
StartTimeThe timestamp indicating when the JVM started.UInt64
StatusThe status of JVM.String
SuspendedA boolean indicating whether the thread is currently suspended.Bool
SystemCpuLoadThe overall CPU load percentage of the entire system.Float64
SystemLoadAverageThe system load average over a specific period (1 minutes).Float64
ThreadCountThe current number of active threads in the JVM.UInt64
ThreadIDThe unique identifier for the thread.UInt64
ThreadNameThe name of the thread.String
ThreadStateThe current state of the thread (e.g., NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED).String
TotalCompilationTimeThe total time spent in compiling methods by the JVM.Int64
TotalLoadedClassCountThe total number of classes that have been loaded by the JVM since it started.UInt64
TotalPhysicalMemorySizeThe total amount of physical memory available on the system.UInt64
TotalStartedThreadCountThe total number of threads that have been started by the JVM since it began execution.UInt64
TotalSwapSpaceSizeThe total amount of swap space available on the system.UInt64
TypeThe type of memorypool.String
UnloadedClassCountThe total number of classes that have been unloaded by the JVM since it started, indicating memory management and class lifecycle handling.UInt64
UptimeThe uptime of JVM.UInt64
Usage_committedThe amount of memory (in bytes) that is guaranteed to be available for use by the Java virtual machine. The amount of committed memory may change over time (increase or decrease). The Java virtual machine may release memory to the system and committed could be less than init. committed will always be greater than or equal to used.UInt64
Usage_initThe initial amount of memory (in bytes) that the Java virtual machine requests from the operating system for memory management during startup. The Java virtual machine may request additional memory from the operating system and may also release memory to the system over time. The value of init may be undefined.UInt64
Usage_maxThe maximum amount of memory (in bytes) that can be used for memory management. Its value may be undefined. The maximum amount of memory may change over time if defined. The amount of used and committed memory will always be less than or equal to max if max is defined. A memory allocation may fail if it attempts to increase the used memory such that used > committed even if used <= max would still be true (for example, when the system is low on virtual memory).Int64
Usage_usedThe amount of memory currently used (in bytes).UInt64
WaitedCountThe total number of times a thread has been blocked waiting for a resource or event.UInt64
WaitedTimeThe total time (in milliseconds) that threads have spent waiting for resources or events.Int64
acceptCountThe total number of connections accepted by a server or application.UInt64
acceptorThreadPriorityThe priority level of the thread responsible for accepting incoming connections.UInt64
alpnSupportedA boolean indicating whether Application-Layer Protocol Negotiation (ALPN) is supported, often used in secure communications.Bool
bindOnInitA boolean indicating whether the service or application binds to a specific address or port upon initialization.Bool
bytesReceivedThe total number of bytes received by the JVM for processing incoming requests.UInt64
bytesSentThe total number of bytes sent by the JVM as a response to outgoing requests.UInt64
connectionCountThe total number of active connections managed by the JVM, typically for network communication.UInt64
connectionLingerThe duration (in seconds) that a connection is retained in the JVM after it is closed to allow for potential reuse.Int64
connectionTimeoutThe duration (in milliseconds) after which an inactive connection will be terminated by the JVM.UInt64
currentThreadCountThe current number of threads in use by the JVM for executing tasks.UInt64
currentThreadsBusyThe number of threads currently busy in the JVM processing requests or performing tasks.UInt64
errorCountThe total number of errors encountered by the JVM during execution, including exceptions and failures in processing tasks or requests.UInt64
executorTerminationTimeoutMillisThe duration (in milliseconds) that the JVM will wait for an executor service to terminate before forcibly shutting it down. This setting helps manage the graceful shutdown of threads in a multi-threaded environment.UInt64
gcEndTimestampThe timestamp indicating when the last garbage collection (GC) event completed.DateTime
gcStartTimestampThe timestamp indicating when the last garbage collection (GC) event started.DateTime
keepAliveCountThe total number of threads that have been kept alive and are ready for reuse in the JVM.UInt64
keepAliveTimeoutThe duration (in milliseconds) that threads can remain idle before being terminated by the JVM to free resources.UInt64
locksThe current number of locks held by threads in the JVM, indicating synchronization state.String
maxConnectionsThe maximum number of connections that the JVM can handle simultaneously.UInt64
maxKeepAliveRequestsThe maximum number of requests that can be served using a single persistent connection in the JVM.UInt64
maxThreadsThe maximum number of threads that the JVM can create for handling requests.UInt64
maxTimeThe maximum duration (in milliseconds) that the JVM will allow a request to process before timing out.UInt64
minSpareThreadsThe minimum number of idle threads the JVM will maintain to handle incoming requests efficiently.UInt64