Package org.apache.ignite.mxbean

## Interface ClusterMetricsMXBean

- All Superinterfaces:
    `ClusterMetrics`

      @MXBeanDescription("MBean that provides access to aggregated cluster metrics.")
      public interface ClusterMetricsMXBean
      extends ClusterMetrics

  Cluster metrics MBean.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Set<String>` | `attributeNames()` |
    `Set<String>` | `attributeValues​(String attrName)` |
    `int` | `getActiveBaselineNodes()` | Get count of active baseline nodes.
    `float` | `getAverageActiveJobs()` | Gets average number of active jobs concurrently executing on the node.
    `float` | `getAverageCancelledJobs()` | Gets average number of cancelled jobs this node ever had running concurrently.
    `double` | `getAverageCpuLoad()` | Gets average of CPU load values over all metrics kept in the history.
    `double` | `getAverageJobExecuteTime()` | Gets average time a job takes to execute on the node.
    `double` | `getAverageJobWaitTime()` | Gets average time jobs spend waiting in the queue to be executed.
    `float` | `getAverageRejectedJobs()` | Gets average number of jobs this node rejects during collision resolution operations.
    `float` | `getAverageWaitingJobs()` | Gets average number of waiting jobs this node had queued.
    `float` | `getBusyTimePercentage()` | Gets percentage of time this node is busy executing jobs vs. idling.
    `int` | `getCurrentActiveJobs()` | Gets number of currently active jobs concurrently executing on the node.
    `int` | `getCurrentCancelledJobs()` | Gets number of cancelled jobs that are still running.
    `double` | `getCurrentCpuLoad()` | Returns the CPU usage in `[0, 1]` range.
    `int` | `getCurrentDaemonThreadCount()` | Returns the current number of live daemon threads.
    `double` | `getCurrentGcCpuLoad()` | Returns average time spent in CG since the last update.
    `long` | `getCurrentIdleTime()` | Gets time this node spend idling since executing last job.
    `long` | `getCurrentJobExecuteTime()` | Gets longest time a current job has been executing for.
    `long` | `getCurrentJobWaitTime()` | Gets current time an oldest jobs has spent waiting to be executed.
    `long` | `getCurrentPmeDuration()` | Gets execution duration for current partition map exchange in milliseconds.
    `int` | `getCurrentRejectedJobs()` | Gets number of jobs rejected after more recent collision resolution operation.
    `int` | `getCurrentThreadCount()` | Returns the current number of live threads including both daemon and non-daemon threads.
    `int` | `getCurrentWaitingJobs()` | Gets number of queued jobs currently waiting to be executed.
    `long` | `getHeapMemoryCommitted()` | Returns the amount of heap memory in bytes that is committed for the JVM to use.
    `long` | `getHeapMemoryInitialized()` | Returns the amount of heap memory in bytes that the JVM initially requests from the operating system for memory management.
    `long` | `getHeapMemoryMaximum()` | Returns the maximum amount of heap memory in bytes that can be used for memory management.
    `long` | `getHeapMemoryTotal()` | Returns the total amount of heap memory in bytes.
    `long` | `getHeapMemoryUsed()` | Returns the current heap size that is used for object allocation.
    `float` | `getIdleTimePercentage()` | Gets percentage of time this node is idling vs. executing jobs.
    `long` | `getLastDataVersion()` | In-Memory Data Grid assigns incremental versions to all cache operations.
    `long` | `getLastUpdateTime()` | Gets last update time of this node metrics.
    `int` | `getMaximumActiveJobs()` | Gets maximum number of jobs that ever ran concurrently on this node.
    `int` | `getMaximumCancelledJobs()` | Gets maximum number of cancelled jobs this node ever had running concurrently.
    `long` | `getMaximumJobExecuteTime()` | Gets time it took to execute the longest job on the node.
    `long` | `getMaximumJobWaitTime()` | Gets maximum time a job ever spent waiting in a queue to be executed.
    `int` | `getMaximumRejectedJobs()` | Gets maximum number of jobs rejected at once during a single collision resolution operation.
    `int` | `getMaximumThreadCount()` | Returns the maximum live thread count since the JVM started or peak was reset.
    `int` | `getMaximumWaitingJobs()` | Gets maximum number of waiting jobs this node had.
    `long` | `getNodeStartTime()` | Returns the start time of grid node in milliseconds.
    `long` | `getNonHeapMemoryCommitted()` | Returns the amount of non-heap memory in bytes that is committed for the JVM to use.
    `long` | `getNonHeapMemoryInitialized()` | Returns the amount of non-heap memory in bytes that the JVM initially requests from the operating system for memory management.
    `long` | `getNonHeapMemoryMaximum()` | Returns the maximum amount of non-heap memory in bytes that can be used for memory management.
    `long` | `getNonHeapMemoryTotal()` | Returns the total amount of non-heap memory in bytes that can be used for memory management.
    `long` | `getNonHeapMemoryUsed()` | Returns the current non-heap memory size that is used by Java VM.
    `int` | `getOutboundMessagesQueueSize()` | Gets outbound messages queue size.
    `long` | `getReceivedBytesCount()` | Gets received bytes count.
    `int` | `getReceivedMessagesCount()` | Gets received messages count.
    `long` | `getSentBytesCount()` | Gets sent bytes count.
    `int` | `getSentMessagesCount()` | Gets sent messages count.
    `long` | `getStartTime()` | Returns the start time of the JVM in milliseconds.
    `long` | `getTopologyVersion()` | Get current topology version.
    `int` | `getTotalBaselineNodes()` | Get count of total baseline nodes.
    `long` | `getTotalBusyTime()` | Gets total time this node spent executing jobs.
    `int` | `getTotalCancelledJobs()` | Gets number of cancelled jobs since node startup.
    `int` | `getTotalClientNodes()` | Get count of client nodes.
    `int` | `getTotalCpus()` | Returns the number of CPUs available to the Java Virtual Machine.
    `int` | `getTotalExecutedJobs()` | Gets total number of jobs handled by the node since node startup.
    `int` | `getTotalExecutedTasks()` | Gets total number of tasks handled by the node.
    `long` | `getTotalIdleTime()` | Gets total time this node spent idling (not executing any jobs).
    `long` | `getTotalJobsExecutionTime()` | Gets total time all finished jobs takes to execute on the node since node startup.
    `int` | `getTotalNodes()` | Gets total number of nodes.
    `int` | `getTotalRejectedJobs()` | Gets total number of jobs this node rejects during collision resolution operations since node startup.
    `int` | `getTotalServerNodes()` | Get count of server nodes.
    `long` | `getTotalStartedThreadCount()` | Returns the total number of threads created and also started since the JVM started.
    `long` | `getUpTime()` | Returns the uptime of the JVM in milliseconds.
    `Set<UUID>` | `nodeIdsForAttribute​(String attrName, String attrVal, boolean includeSrvs, boolean includeClients)` |

- - ### Method Detail

    - #### getLastUpdateTime

          @MXBeanDescription("Last update time of this node metrics.")
          long getLastUpdateTime()

      Gets last update time of this node metrics.
      Specified by:
        `getLastUpdateTime` in interface `ClusterMetrics`
      Returns:
        Last update time.

    - #### getMaximumActiveJobs

          @MXBeanDescription("Maximum number of jobs that ever ran concurrently on this node.")
          int getMaximumActiveJobs()

      Gets maximum number of jobs that ever ran concurrently on this node. Note that this different from `ClusterMetrics.getTotalExecutedJobs()` metric and only reflects maximum number of jobs that ran at the same time.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getMaximumActiveJobs` in interface `ClusterMetrics`
      Returns:
        Maximum number of jobs that ever ran concurrently on this node.

    - #### getCurrentActiveJobs

          @MXBeanDescription("Number of currently active jobs concurrently executing on the node.")
          int getCurrentActiveJobs()

      Gets number of currently active jobs concurrently executing on the node.
      Specified by:
        `getCurrentActiveJobs` in interface `ClusterMetrics`
      Returns:
        Number of currently active jobs concurrently executing on the node.

    - #### getAverageActiveJobs

          @MXBeanDescription("Average number of active jobs concurrently executing on the node.")
          float getAverageActiveJobs()

      Gets average number of active jobs concurrently executing on the node.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getAverageActiveJobs` in interface `ClusterMetrics`
      Returns:
        Average number of active jobs.

    - #### getMaximumWaitingJobs

          @MXBeanDescription("Maximum number of waiting jobs this node had.")
          int getMaximumWaitingJobs()

      Gets maximum number of waiting jobs this node had.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getMaximumWaitingJobs` in interface `ClusterMetrics`
      Returns:
        Maximum number of waiting jobs.

    - #### getCurrentWaitingJobs

          @MXBeanDescription("Number of queued jobs currently waiting to be executed.")
          int getCurrentWaitingJobs()

      Gets number of queued jobs currently waiting to be executed.
      Specified by:
        `getCurrentWaitingJobs` in interface `ClusterMetrics`
      Returns:
        Number of queued jobs currently waiting to be executed.

    - #### getAverageWaitingJobs

          @MXBeanDescription("Average number of waiting jobs this node had queued.")
          float getAverageWaitingJobs()

      Gets average number of waiting jobs this node had queued.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getAverageWaitingJobs` in interface `ClusterMetrics`
      Returns:
        Average number of waiting jobs.

    - #### getMaximumRejectedJobs

          @MXBeanDescription("Maximum number of jobs rejected at once during a single collision resolution operation.")
          int getMaximumRejectedJobs()

      Gets maximum number of jobs rejected at once during a single collision resolution operation.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getMaximumRejectedJobs` in interface `ClusterMetrics`
      Returns:
        Maximum number of jobs rejected at once.

    - #### getCurrentRejectedJobs

          @MXBeanDescription("Number of jobs rejected after more recent collision resolution operation.")
          int getCurrentRejectedJobs()

      Gets number of jobs rejected after more recent collision resolution operation.
      Specified by:
        `getCurrentRejectedJobs` in interface `ClusterMetrics`
      Returns:
        Number of jobs rejected after more recent collision resolution operation.

    - #### getAverageRejectedJobs

          @MXBeanDescription("Average number of jobs this node rejects during collision resolution operations.")
          float getAverageRejectedJobs()

      Gets average number of jobs this node rejects during collision resolution operations.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of grid configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getAverageRejectedJobs` in interface `ClusterMetrics`
      Returns:
        Average number of jobs this node rejects during collision resolution operations.

    - #### getTotalRejectedJobs

          @MXBeanDescription("Total number of jobs this node rejects during collision resolution operations since node startup.")
          int getTotalRejectedJobs()

      Gets total number of jobs this node rejects during collision resolution operations since node startup.

      Note: Unlike most of other aggregation metrics this metric is not calculated over history but over the entire node life.

      Specified by:
        `getTotalRejectedJobs` in interface `ClusterMetrics`
      Returns:
        Total number of jobs this node rejects during collision resolution operations since node startup.

    - #### getMaximumCancelledJobs

          @MXBeanDescription("Maximum number of cancelled jobs this node ever had running concurrently.")
          int getMaximumCancelledJobs()

      Gets maximum number of cancelled jobs this node ever had running concurrently.
      Specified by:
        `getMaximumCancelledJobs` in interface `ClusterMetrics`
      Returns:
        Maximum number of cancelled jobs.

    - #### getCurrentCancelledJobs

          @MXBeanDescription("Number of cancelled jobs that are still running.")
          int getCurrentCancelledJobs()

      Gets number of cancelled jobs that are still running. Just like regular java threads, jobs will receive cancel notification, but it's ultimately up to the job itself to gracefully exit.
      Specified by:
        `getCurrentCancelledJobs` in interface `ClusterMetrics`
      Returns:
        Number of cancelled jobs that are still running.

    - #### getAverageCancelledJobs

          @MXBeanDescription("Average number of cancelled jobs this node ever had running concurrently.")
          float getAverageCancelledJobs()

      Gets average number of cancelled jobs this node ever had running concurrently.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getAverageCancelledJobs` in interface `ClusterMetrics`
      Returns:
        Average number of cancelled jobs.

    - #### getTotalCancelledJobs

          @MXBeanDescription("Total number of cancelled jobs since node startup.")
          int getTotalCancelledJobs()

      Gets number of cancelled jobs since node startup.

      Note: Unlike most of other aggregation metrics this metric is not calculated over history but over the entire node life.

      Specified by:
        `getTotalCancelledJobs` in interface `ClusterMetrics`
      Returns:
        Total number of cancelled jobs since node startup.

    - #### getTotalExecutedJobs

          @MXBeanDescription("Total number of jobs handled by the node.")
          int getTotalExecutedJobs()

      Gets total number of jobs handled by the node since node startup.

      Note: Unlike most of other aggregation metrics this metric is not calculated over history but over the entire node life.

      Specified by:
        `getTotalExecutedJobs` in interface `ClusterMetrics`
      Returns:
        Total number of jobs handled by the node since node startup.

    - #### getTotalJobsExecutionTime

          @MXBeanDescription("Total time all finished jobs takes to execute on the node.")
          long getTotalJobsExecutionTime()

      Gets total time all finished jobs takes to execute on the node since node startup.

      Note: Unlike most of other aggregation metrics this metric is not calculated over history but over the entire node life.

      Specified by:
        `getTotalJobsExecutionTime` in interface `ClusterMetrics`
      Returns:
        Total jobs execution time.

    - #### getMaximumJobWaitTime

          @MXBeanDescription("Maximum time a job ever spent waiting in a queue to be executed.")
          long getMaximumJobWaitTime()

      Gets maximum time a job ever spent waiting in a queue to be executed.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getMaximumJobWaitTime` in interface `ClusterMetrics`
      Returns:
        Maximum waiting time.

    - #### getCurrentJobWaitTime

          @MXBeanDescription("Current wait time of oldest job.")
          long getCurrentJobWaitTime()

      Gets current time an oldest jobs has spent waiting to be executed.
      Specified by:
        `getCurrentJobWaitTime` in interface `ClusterMetrics`
      Returns:
        Current wait time of oldest job.

    - #### getAverageJobWaitTime

          @MXBeanDescription("Average time jobs spend waiting in the queue to be executed.")
          double getAverageJobWaitTime()

      Gets average time jobs spend waiting in the queue to be executed.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getAverageJobWaitTime` in interface `ClusterMetrics`
      Returns:
        Average job wait time.

    - #### getMaximumJobExecuteTime

          @MXBeanDescription("Time it took to execute the longest job on the node.")
          long getMaximumJobExecuteTime()

      Gets time it took to execute the longest job on the node.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getMaximumJobExecuteTime` in interface `ClusterMetrics`
      Returns:
        Time it took to execute the longest job on the node.

    - #### getCurrentJobExecuteTime

          @MXBeanDescription("Longest time a current job has been executing for.")
          long getCurrentJobExecuteTime()

      Gets longest time a current job has been executing for.
      Specified by:
        `getCurrentJobExecuteTime` in interface `ClusterMetrics`
      Returns:
        Longest time a current job has been executing for.

    - #### getAverageJobExecuteTime

          @MXBeanDescription("Average time a job takes to execute on the node.")
          double getAverageJobExecuteTime()

      Gets average time a job takes to execute on the node.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getAverageJobExecuteTime` in interface `ClusterMetrics`
      Returns:
        Average job execution time.

    - #### getTotalExecutedTasks

          @MXBeanDescription("Total number of tasks handled by the node.")
          int getTotalExecutedTasks()

      Gets total number of tasks handled by the node.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getTotalExecutedTasks` in interface `ClusterMetrics`
      Returns:
        Total number of jobs handled by the node.

    - #### getTotalBusyTime

          @MXBeanDescription("Total time this node spent executing jobs.")
          long getTotalBusyTime()

      Gets total time this node spent executing jobs.
      Specified by:
        `getTotalBusyTime` in interface `ClusterMetrics`
      Returns:
        Total time this node spent executing jobs.

    - #### getTotalIdleTime

          @MXBeanDescription("Total time this node spent idling (not executing any jobs).")
          long getTotalIdleTime()

      Gets total time this node spent idling (not executing any jobs).
      Specified by:
        `getTotalIdleTime` in interface `ClusterMetrics`
      Returns:
        Gets total time this node spent idling.

    - #### getCurrentIdleTime

          @MXBeanDescription("Time this node spend idling since executing last job.")
          long getCurrentIdleTime()

      Gets time this node spend idling since executing last job.
      Specified by:
        `getCurrentIdleTime` in interface `ClusterMetrics`
      Returns:
        Time this node spend idling since executing last job.

    - #### getBusyTimePercentage

          @MXBeanDescription("Percentage of time this node is busy executing jobs vs. idling.")
          float getBusyTimePercentage()

      Gets percentage of time this node is busy executing jobs vs. idling.
      Specified by:
        `getBusyTimePercentage` in interface `ClusterMetrics`
      Returns:
        Percentage of time this node is busy (value is less than or equal to `1` and greater than or equal to `0`)

    - #### getIdleTimePercentage

          @MXBeanDescription("Percentage of time this node is idling vs. executing jobs.")
          float getIdleTimePercentage()

      Gets percentage of time this node is idling vs. executing jobs.
      Specified by:
        `getIdleTimePercentage` in interface `ClusterMetrics`
      Returns:
        Percentage of time this node is idle (value is less than or equal to `1` and greater than or equal to `0`)

    - #### getTotalCpus

          @MXBeanDescription("The number of CPUs available to the Java Virtual Machine.")
          int getTotalCpus()

      Returns the number of CPUs available to the Java Virtual Machine. This method is equivalent to the `Runtime.availableProcessors()` method.

      Note that this value may change during successive invocations of the virtual machine.

      Specified by:
        `getTotalCpus` in interface `ClusterMetrics`
      Returns:
        The number of processors available to the virtual machine, never smaller than one.

    - #### getCurrentCpuLoad

          @MXBeanDescription("The system load average; or a negative value if not available.")
          double getCurrentCpuLoad()

      Returns the CPU usage in `[0, 1]` range. The exact way how this number is calculated depends on SPI implementation.

      If the CPU usage is not available, a negative value is returned.

      This method is designed to provide a hint about the system load and may be queried frequently. The load average may be unavailable on some platform where it is expensive to implement this method.

      Specified by:
        `getCurrentCpuLoad` in interface `ClusterMetrics`
      Returns:
        The estimated CPU usage in `[0, 1]` range. Negative value if not available.

    - #### getAverageCpuLoad

          @MXBeanDescription("Average of CPU load values over all metrics kept in the history.")
          double getAverageCpuLoad()

      Gets average of CPU load values over all metrics kept in the history.

      Note: all aggregated metrics like average, minimum, maximum, total, count are calculated over all the metrics kept in history. The history size is set via either one or both of configuration settings:

      - `IgniteConfiguration.getMetricsExpireTime()`
      - `IgniteConfiguration.getMetricsHistorySize()`
      Specified by:
        `getAverageCpuLoad` in interface `ClusterMetrics`
      Returns:
        Average of CPU load value in `[0, 1]` range over all metrics kept in the history.

    - #### getCurrentGcCpuLoad

          @MXBeanDescription("Average time spent in GC since the last update.")
          double getCurrentGcCpuLoad()

      Returns average time spent in CG since the last update.
      Specified by:
        `getCurrentGcCpuLoad` in interface `ClusterMetrics`
      Returns:
        Average time spent in CG since the last update.

    - #### getHeapMemoryInitialized

          @MXBeanDescription("The initial size of memory in bytes; -1 if undefined.")
          long getHeapMemoryInitialized()

      Returns the amount of heap memory in bytes that the JVM initially requests from the operating system for memory management. This method returns `-1` if the initial memory size is undefined.

      This value represents a setting of the heap memory for Java VM and is not a sum of all initial heap values for all memory pools.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getHeapMemoryInitialized` in interface `ClusterMetrics`
      Returns:
        The initial size of memory in bytes; `-1` if undefined.

    - #### getHeapMemoryUsed

          @MXBeanDescription("Current heap size that is used for object allocation.")
          long getHeapMemoryUsed()

      Returns the current heap size that is used for object allocation. The heap consists of one or more memory pools. This value is the sum of `used` heap memory values of all heap memory pools.

      The amount of used memory in the returned is the amount of memory occupied by both live objects and garbage objects that have not been collected, if any.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getHeapMemoryUsed` in interface `ClusterMetrics`
      Returns:
        Amount of heap memory used.

    - #### getHeapMemoryCommitted

          @MXBeanDescription("The amount of committed memory in bytes.")
          long getHeapMemoryCommitted()

      Returns the amount of heap memory in bytes that is committed for the JVM to use. This amount of memory is guaranteed for the JVM to use. The heap consists of one or more memory pools. This value is the sum of `committed` heap memory values of all heap memory pools.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getHeapMemoryCommitted` in interface `ClusterMetrics`
      Returns:
        The amount of committed memory in bytes.

    - #### getHeapMemoryMaximum

          @MXBeanDescription("The maximum amount of memory in bytes; -1 if undefined.")
          long getHeapMemoryMaximum()

      Returns the maximum amount of heap memory in bytes that can be used for memory management. This method returns `-1` if the maximum memory size is undefined.

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

      This value represents a setting of the heap memory for Java VM and is not a sum of all initial heap values for all memory pools.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getHeapMemoryMaximum` in interface `ClusterMetrics`
      Returns:
        The maximum amount of memory in bytes; `-1` if undefined.

    - #### getHeapMemoryTotal

          @MXBeanDescription("The total amount of memory in bytes; -1 if undefined.")
          long getHeapMemoryTotal()

      Returns the total amount of heap memory in bytes. This method returns `-1` if the total memory size is undefined.

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

      This value represents a setting of the heap memory for Java VM and is not a sum of all initial heap values for all memory pools.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getHeapMemoryTotal` in interface `ClusterMetrics`
      Returns:
        The total amount of memory in bytes; `-1` if undefined.

    - #### getNonHeapMemoryInitialized

          @MXBeanDescription("The initial size of memory in bytes; -1 if undefined.")
          long getNonHeapMemoryInitialized()

      Returns the amount of non-heap memory in bytes that the JVM initially requests from the operating system for memory management. This method returns `-1` if the initial memory size is undefined.

      This value represents a setting of non-heap memory for Java VM and is not a sum of all initial heap values for all memory pools.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getNonHeapMemoryInitialized` in interface `ClusterMetrics`
      Returns:
        The initial size of memory in bytes; `-1` if undefined.

    - #### getNonHeapMemoryUsed

          @MXBeanDescription("Current non-heap memory size that is used by Java VM.")
          long getNonHeapMemoryUsed()

      Returns the current non-heap memory size that is used by Java VM. The non-heap memory consists of one or more memory pools. This value is the sum of `used` non-heap memory values of all non-heap memory pools.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getNonHeapMemoryUsed` in interface `ClusterMetrics`
      Returns:
        Amount of none-heap memory used.

    - #### getNonHeapMemoryCommitted

          @MXBeanDescription("Amount of non-heap memory in bytes that is committed for the JVM to use.")
          long getNonHeapMemoryCommitted()

      Returns the amount of non-heap memory in bytes that is committed for the JVM to use. This amount of memory is guaranteed for the JVM to use. The non-heap memory consists of one or more memory pools. This value is the sum of `committed` non-heap memory values of all non-heap memory pools.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getNonHeapMemoryCommitted` in interface `ClusterMetrics`
      Returns:
        The amount of committed memory in bytes.

    - #### getNonHeapMemoryMaximum

          @MXBeanDescription("Maximum amount of non-heap memory in bytes that can be used for memory management. -1 if undefined.")
          long getNonHeapMemoryMaximum()

      Returns the maximum amount of non-heap memory in bytes that can be used for memory management. This method returns `-1` if the maximum memory size is undefined.

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

      This value represents a setting of the non-heap memory for Java VM and is not a sum of all initial non-heap values for all memory pools.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getNonHeapMemoryMaximum` in interface `ClusterMetrics`
      Returns:
        The maximum amount of memory in bytes; `-1` if undefined.

    - #### getNonHeapMemoryTotal

          @MXBeanDescription("Total amount of non-heap memory in bytes that can be used for memory management. -1 if undefined.")
          long getNonHeapMemoryTotal()

      Returns the total amount of non-heap memory in bytes that can be used for memory management. This method returns `-1` if the total memory size is undefined.

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

      This value represents a setting of the non-heap memory for Java VM and is not a sum of all initial non-heap values for all memory pools.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getNonHeapMemoryTotal` in interface `ClusterMetrics`
      Returns:
        The total amount of memory in bytes; `-1` if undefined.

    - #### getUpTime

          @MXBeanDescription("Uptime of the JVM in milliseconds.")
          long getUpTime()

      Returns the uptime of the JVM in milliseconds.
      Specified by:
        `getUpTime` in interface `ClusterMetrics`
      Returns:
        Uptime of the JVM in milliseconds.

    - #### getStartTime

          @MXBeanDescription("Start time of the JVM in milliseconds.")
          long getStartTime()

      Returns the start time of the JVM in milliseconds. This method returns the approximate time when the Java virtual machine started.
      Specified by:
        `getStartTime` in interface `ClusterMetrics`
      Returns:
        Start time of the JVM in milliseconds.

    - #### getCurrentThreadCount

          @MXBeanDescription("Current number of live threads.")
          int getCurrentThreadCount()

      Returns the current number of live threads including both daemon and non-daemon threads.
      Specified by:
        `getCurrentThreadCount` in interface `ClusterMetrics`
      Returns:
        Current number of live threads.

    - #### getMaximumThreadCount

          @MXBeanDescription("The peak live thread count.")
          int getMaximumThreadCount()

      Returns the maximum live thread count since the JVM started or peak was reset.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getMaximumThreadCount` in interface `ClusterMetrics`
      Returns:
        The peak live thread count.

    - #### getTotalStartedThreadCount

          @MXBeanDescription("The total number of threads started.")
          long getTotalStartedThreadCount()

      Returns the total number of threads created and also started since the JVM started.

      Note: this is not an aggregated metric and it's calculated from the time of the node's startup.

      Specified by:
        `getTotalStartedThreadCount` in interface `ClusterMetrics`
      Returns:
        The total number of threads started.

    - #### getCurrentDaemonThreadCount

          @MXBeanDescription("Current number of live daemon threads.")
          int getCurrentDaemonThreadCount()

      Returns the current number of live daemon threads.
      Specified by:
        `getCurrentDaemonThreadCount` in interface `ClusterMetrics`
      Returns:
        Current number of live daemon threads.

    - #### getLastDataVersion

          @MXBeanDescription("Last data version.")
          long getLastDataVersion()

      In-Memory Data Grid assigns incremental versions to all cache operations. This method provides the latest data version on the node.
      Specified by:
        `getLastDataVersion` in interface `ClusterMetrics`
      Returns:
        Last data version.

    - #### getSentMessagesCount

          @MXBeanDescription("Sent messages count.")
          int getSentMessagesCount()

      Gets sent messages count.
      Specified by:
        `getSentMessagesCount` in interface `ClusterMetrics`
      Returns:
        Sent messages count.

    - #### getSentBytesCount

          @MXBeanDescription("Sent bytes count.")
          long getSentBytesCount()

      Gets sent bytes count.
      Specified by:
        `getSentBytesCount` in interface `ClusterMetrics`
      Returns:
        Sent bytes count.

    - #### getReceivedMessagesCount

          @MXBeanDescription("Received messages count.")
          int getReceivedMessagesCount()

      Gets received messages count.
      Specified by:
        `getReceivedMessagesCount` in interface `ClusterMetrics`
      Returns:
        Received messages count.

    - #### getReceivedBytesCount

          @MXBeanDescription("Received bytes count.")
          long getReceivedBytesCount()

      Gets received bytes count.
      Specified by:
        `getReceivedBytesCount` in interface `ClusterMetrics`
      Returns:
        Received bytes count.

    - #### getOutboundMessagesQueueSize

          @MXBeanDescription("Outbound messages queue size.")
          int getOutboundMessagesQueueSize()

      Gets outbound messages queue size.
      Specified by:
        `getOutboundMessagesQueueSize` in interface `ClusterMetrics`
      Returns:
        Outbound messages queue size.

    - #### getNodeStartTime

          @MXBeanDescription("Start time of the grid node in milliseconds.")
          long getNodeStartTime()

      Returns the start time of grid node in milliseconds. There can be several grid nodes started in one JVM, so JVM start time will be the same for all of them, but node start time will be different.
      Specified by:
        `getNodeStartTime` in interface `ClusterMetrics`
      Returns:
        Start time of the grid node in milliseconds.

    - #### getTotalNodes

          @MXBeanDescription("Total number of nodes.")
          int getTotalNodes()

      Gets total number of nodes.
      Specified by:
        `getTotalNodes` in interface `ClusterMetrics`
      Returns:
        Total number of nodes.

    - #### getCurrentPmeDuration

          @MXBeanDescription("Current PME duration in milliseconds.")
          long getCurrentPmeDuration()

      Gets execution duration for current partition map exchange in milliseconds.
      Specified by:
        `getCurrentPmeDuration` in interface `ClusterMetrics`
      Returns:
        Gets execution duration for current partition map exchange in milliseconds. `0` if there is no running PME.

    - #### getTotalBaselineNodes

          @MXBeanDescription("Total baseline nodes count.")
          int getTotalBaselineNodes()

      Get count of total baseline nodes.
      Returns:
        Count of total baseline nodes.

    - #### getActiveBaselineNodes

          @MXBeanDescription("Active baseline nodes count.")
          int getActiveBaselineNodes()

      Get count of active baseline nodes.
      Returns:
        Count of active baseline nodes.

    - #### getTotalServerNodes

          @MXBeanDescription("Server nodes count.")
          int getTotalServerNodes()

      Get count of server nodes.
      Returns:
        Count of server nodes.

    - #### getTotalClientNodes

          @MXBeanDescription("Client nodes count.")
          int getTotalClientNodes()

      Get count of client nodes.
      Returns:
        Count of client nodes.

    - #### getTopologyVersion

          @MXBeanDescription("Current topology version.")
          long getTopologyVersion()

      Get current topology version.
      Returns:
        Current topology version.

    - #### attributeNames

          @MXBeanDescription("Distinct attribute names for given nodes projection.")
          Set<String> attributeNames()

      Returns:
        Distinct attribute names for given nodes projection.

    - #### attributeValues

          @MXBeanDescription("Distinct attribute values for given nodes projection.")
          Set<String> attributeValues​(@MXBeanParameter(name="attrName",description="Attribute name.")
                                      String attrName)

      Parameters:
        `attrName` - Attribute name.
      Returns:
        Distinct attribute values for given nodes projection.

    - #### nodeIdsForAttribute

          @MXBeanDescription("Get node IDs with the given attribute value.")
          Set<UUID> nodeIdsForAttribute​(@MXBeanParameter(name="attrName",description="Attribute name.")
                                        String attrName,
                                        @MXBeanParameter(name="attrValue",description="Attribute value.")
                                        String attrVal,
                                        @MXBeanParameter(name="includeSrvs",description="Include server nodes.")
                                        boolean includeSrvs,
                                        @MXBeanParameter(name="includeClients",description="Include client nodes.")
                                        boolean includeClients)

      Parameters:
        `attrName` - Attribute name.
        `attrVal` - Attribute value.
        `includeSrvs` - Include server nodes.
        `includeClients` - Include client nodes.
      Returns:
        Node IDs with the given attribute value.