You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by mm...@apache.org on 2021/02/25 00:29:21 UTC

[ignite] branch master updated: IGNITE-14166 Fix javadocs related to the metrics registry API (#8796)

This is an automated email from the ASF dual-hosted git repository.

mmuzaf pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 92e213b  IGNITE-14166 Fix javadocs related to the metrics registry API (#8796)
92e213b is described below

commit 92e213bb429a14a827dc5e2af970aadc4079012c
Author: Maxim Muzafarov <mm...@apache.org>
AuthorDate: Thu Feb 25 03:29:02 2021 +0300

    IGNITE-14166 Fix javadocs related to the metrics registry API (#8796)
---
 .../java/org/apache/ignite/DataRegionMetrics.java  | 12 +++-
 .../apache/ignite/DataRegionMetricsAdapter.java    | 12 +++-
 .../java/org/apache/ignite/DataStorageMetrics.java | 12 +++-
 .../apache/ignite/DataStorageMetricsAdapter.java   | 12 +++-
 .../src/main/java/org/apache/ignite/Ignite.java    |  9 ++-
 .../org/apache/ignite/IgniteSystemProperties.java  |  4 +-
 .../main/java/org/apache/ignite/MemoryMetrics.java |  3 +-
 .../java/org/apache/ignite/PersistenceMetrics.java |  3 +-
 .../internal/TransactionMetricsMxBeanImpl.java     | 13 +++-
 .../cache/CacheGroupMetricsMXBeanImpl.java         | 12 +++-
 .../cache/CacheLocalMetricsMXBeanImpl.java         | 12 +++-
 .../persistence/DataRegionMetricsMXBeanImpl.java   | 12 +++-
 .../persistence/DataStorageMetricsSnapshot.java    | 12 +++-
 .../processors/jobmetrics/GridJobMetrics.java      | 12 +++-
 .../jobmetrics/GridJobMetricsProcessor.java        | 12 +++-
 .../jobmetrics/GridJobMetricsSnapshot.java         | 12 +++-
 .../ignite/mxbean/CacheGroupMetricsMXBean.java     | 10 ++-
 .../apache/ignite/mxbean/CacheMetricsMXBean.java   | 12 +++-
 .../ignite/mxbean/DataRegionMetricsMXBean.java     | 12 +++-
 .../ignite/mxbean/DataStorageMetricsMXBean.java    | 12 +++-
 .../org/apache/ignite/mxbean/IgniteMXBean.java     | 74 +++++++++++-----------
 .../org/apache/ignite/mxbean/ThreadPoolMXBean.java | 12 +++-
 .../ignite/mxbean/TransactionMetricsMxBean.java    | 12 +++-
 .../org/apache/ignite/spi/IgniteSpiContext.java    |  9 +--
 .../ignite/spi/metric/MetricExporterSpi.java       | 11 +++-
 .../ignite/spi/metric/ReadOnlyMetricRegistry.java  | 32 ++++++++++
 .../spi/metric/jmx/JmxMetricExporterSpi.java       | 55 +++++++++++++++-
 27 files changed, 324 insertions(+), 91 deletions(-)

diff --git a/modules/core/src/main/java/org/apache/ignite/DataRegionMetrics.java b/modules/core/src/main/java/org/apache/ignite/DataRegionMetrics.java
index 40ffbde..58fd536 100644
--- a/modules/core/src/main/java/org/apache/ignite/DataRegionMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/DataRegionMetrics.java
@@ -19,8 +19,11 @@ package org.apache.ignite;
 
 import org.apache.ignite.configuration.DataRegionConfiguration;
 import org.apache.ignite.configuration.DataStorageConfiguration;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.mxbean.DataRegionMetricsMXBean;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * This interface provides page memory related metrics of a specific Apache Ignite node. The overall page memory
@@ -47,7 +50,12 @@ import org.apache.ignite.mxbean.DataRegionMetricsMXBean;
  * {@link DataRegionConfiguration#setMetricsEnabled(boolean)} configuration property or
  * {@link DataRegionMetricsMXBean#enableMetrics()} method of a respective JMX bean.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.dataregion.{data_region_name}" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public interface DataRegionMetrics {
diff --git a/modules/core/src/main/java/org/apache/ignite/DataRegionMetricsAdapter.java b/modules/core/src/main/java/org/apache/ignite/DataRegionMetricsAdapter.java
index 85f32c5..2e6536f 100644
--- a/modules/core/src/main/java/org/apache/ignite/DataRegionMetricsAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/DataRegionMetricsAdapter.java
@@ -18,12 +18,20 @@ package org.apache.ignite;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * Converter class from {@link DataRegionMetrics} to legacy {@link MemoryMetrics}.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.dataregion.{data_region_name}" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public class DataRegionMetricsAdapter implements MemoryMetrics {
diff --git a/modules/core/src/main/java/org/apache/ignite/DataStorageMetrics.java b/modules/core/src/main/java/org/apache/ignite/DataStorageMetrics.java
index e90d255..b54d2b3 100644
--- a/modules/core/src/main/java/org/apache/ignite/DataStorageMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/DataStorageMetrics.java
@@ -17,12 +17,20 @@
 package org.apache.ignite;
 
 import org.apache.ignite.configuration.DataStorageConfiguration;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * Data storage metrics are used to obtain statistics on persistent store and whole data storage.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.datastorage" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public interface DataStorageMetrics {
diff --git a/modules/core/src/main/java/org/apache/ignite/DataStorageMetricsAdapter.java b/modules/core/src/main/java/org/apache/ignite/DataStorageMetricsAdapter.java
index 09c25f1..a70d275 100644
--- a/modules/core/src/main/java/org/apache/ignite/DataStorageMetricsAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/DataStorageMetricsAdapter.java
@@ -16,12 +16,20 @@
 */
 package org.apache.ignite;
 
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * Converter class from {@link DataStorageMetrics} to legacy {@link PersistenceMetrics}.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.datastorage" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public class DataStorageMetricsAdapter implements PersistenceMetrics {
diff --git a/modules/core/src/main/java/org/apache/ignite/Ignite.java b/modules/core/src/main/java/org/apache/ignite/Ignite.java
index 62586e8..32c88d0 100644
--- a/modules/core/src/main/java/org/apache/ignite/Ignite.java
+++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java
@@ -36,6 +36,7 @@ import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.lang.IgniteProductVersion;
 import org.apache.ignite.plugin.IgnitePlugin;
 import org.apache.ignite.plugin.PluginNotFoundException;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
 import org.apache.ignite.spi.tracing.TracingConfigurationManager;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -682,21 +683,21 @@ public interface Ignite extends AutoCloseable {
 
     /**
      * @return Collection of {@link MemoryMetrics} snapshots.
-     * @deprecated Use {@link #dataRegionMetrics()} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.dataregion.{data_region_name}" instead.
      */
     @Deprecated
     public Collection<MemoryMetrics> memoryMetrics();
 
     /**
      * @return {@link MemoryMetrics} snapshot or {@code null} if no memory region is configured under specified name.
-     * @deprecated Use {@link #dataRegionMetrics(String)} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.dataregion.{data_region_name}" instead.
      */
     @Deprecated
     @Nullable public MemoryMetrics memoryMetrics(String memPlcName);
 
     /**
      * @return {@link PersistenceMetrics} snapshot.
-     * @deprecated Use {@link #dataStorageMetrics()} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.dataregion.{data_region_name}" instead.
      */
     @Deprecated
     public PersistenceMetrics persistentStoreMetrics();
@@ -708,6 +709,7 @@ public interface Ignite extends AutoCloseable {
      * configured with {@link DataRegionConfiguration configuration} on this Ignite node instance.
      *
      * @return Collection of {@link DataRegionMetrics} snapshots.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.dataregion.{data_region_name}" instead.
      */
     public Collection<DataRegionMetrics> dataRegionMetrics();
 
@@ -725,6 +727,7 @@ public interface Ignite extends AutoCloseable {
 
     /**
      * @return {@link DataStorageMetrics} snapshot.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.datastorage" instead.
      */
     public DataStorageMetrics dataStorageMetrics();
 
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 6daca67..780269e 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -36,13 +36,13 @@ import org.apache.ignite.internal.client.GridClient;
 import org.apache.ignite.internal.marshaller.optimized.OptimizedMarshaller;
 import org.apache.ignite.internal.processors.cache.persistence.checkpoint.CheckpointEntry;
 import org.apache.ignite.internal.processors.metastorage.DistributedMetaStorage;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.internal.processors.performancestatistics.FilePerformanceStatisticsWriter;
 import org.apache.ignite.internal.processors.rest.GridRestCommand;
 import org.apache.ignite.internal.util.GridLogThrottle;
 import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.mxbean.MetricsMxBean;
 import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
 import org.apache.ignite.stream.StreamTransformer;
 import org.jetbrains.annotations.Nullable;
 
@@ -493,7 +493,7 @@ public final class IgniteSystemProperties {
      * concurrency level for structure holding job metrics snapshots.
      * Default value is {@code 64}.
      *
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=compute.jobs" instead.
      */
     @Deprecated
     @SystemProperty(value = "Job metrics processor property defining concurrency level " +
diff --git a/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java b/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java
index e0c22ed..775cf8c 100644
--- a/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java
@@ -20,6 +20,7 @@ package org.apache.ignite;
 import org.apache.ignite.configuration.MemoryConfiguration;
 import org.apache.ignite.configuration.MemoryPolicyConfiguration;
 import org.apache.ignite.mxbean.DataRegionMetricsMXBean;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
 
 /**
  * This interface provides page memory related metrics of a specific Apache Ignite node. The overall page memory
@@ -46,7 +47,7 @@ import org.apache.ignite.mxbean.DataRegionMetricsMXBean;
  * {@link MemoryPolicyConfiguration#setMetricsEnabled(boolean)} configuration property or
  * {@link DataRegionMetricsMXBean#enableMetrics()} method of a respective JMX bean.
  *
- * @deprecated Use {@link DataRegionMetrics} instead.
+ * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.dataregion.{data_region_name}" instead.
  */
 @Deprecated
 public interface MemoryMetrics {
diff --git a/modules/core/src/main/java/org/apache/ignite/PersistenceMetrics.java b/modules/core/src/main/java/org/apache/ignite/PersistenceMetrics.java
index 3b96b11..d01f42e 100644
--- a/modules/core/src/main/java/org/apache/ignite/PersistenceMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/PersistenceMetrics.java
@@ -17,11 +17,12 @@
 package org.apache.ignite;
 
 import org.apache.ignite.configuration.PersistentStoreConfiguration;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
 
 /**
  * Persistence metrics used to obtain statistics on persistence.
  *
- * @deprecated Use {@link DataStorageMetrics} instead.
+ * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.datastorage" instead.
  */
 @Deprecated
 public interface PersistenceMetrics {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/TransactionMetricsMxBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/TransactionMetricsMxBeanImpl.java
index e1deb50..f7b3f7e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/TransactionMetricsMxBeanImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/TransactionMetricsMxBeanImpl.java
@@ -18,14 +18,22 @@
 package org.apache.ignite.internal;
 
 import java.util.Map;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.mxbean.TransactionMetricsMxBean;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.apache.ignite.transactions.TransactionMetrics;
 
 /**
  * Transactions MXBean implementation.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link JmxMetricExporterSpi} with "name=\"tx\"" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public class TransactionMetricsMxBeanImpl implements TransactionMetricsMxBean {
@@ -105,4 +113,3 @@ public class TransactionMetricsMxBeanImpl implements TransactionMetricsMxBean {
     }
 }
 
-
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsMXBeanImpl.java
index efb32d4..a25f25a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsMXBeanImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheGroupMetricsMXBeanImpl.java
@@ -23,13 +23,21 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.apache.ignite.cache.CacheMode;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.mxbean.CacheGroupMetricsMXBean;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * Management bean that provides access to {@link CacheGroupContext}.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link JmxMetricExporterSpi} with "name=cacheGroups.{cache_group_name}" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public class CacheGroupMetricsMXBeanImpl implements CacheGroupMetricsMXBean {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
index ea2f81b..f9e525e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
@@ -20,13 +20,21 @@ package org.apache.ignite.internal.processors.cache;
 import java.util.Collections;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.mxbean.CacheMetricsMXBean;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * Management bean that provides access to {@link IgniteCache IgniteCache}.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link JmxMetricExporterSpi} with "name=cache.{cache_name}" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public class CacheLocalMetricsMXBeanImpl implements CacheMetricsMXBean {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsMXBeanImpl.java
index 2559a7b..e470a88 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsMXBeanImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsMXBeanImpl.java
@@ -18,13 +18,21 @@ package org.apache.ignite.internal.processors.cache.persistence;
 
 import org.apache.ignite.DataRegionMetrics;
 import org.apache.ignite.configuration.DataRegionConfiguration;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.mxbean.DataRegionMetricsMXBean;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * MBean to expose {@link DataRegionMetrics} through JMX interface.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link JmxMetricExporterSpi} with "name=io.dataregion.{data_region_name}" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 class DataRegionMetricsMXBeanImpl implements DataRegionMetricsMXBean {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsSnapshot.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsSnapshot.java
index ddb5705..a698508 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsSnapshot.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsSnapshot.java
@@ -17,11 +17,19 @@
 package org.apache.ignite.internal.processors.cache.persistence;
 
 import org.apache.ignite.DataStorageMetrics;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=io.datastorage" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public class DataStorageMetricsSnapshot implements DataStorageMetrics {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetrics.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetrics.java
index ac8df4c..0978cf0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetrics.java
@@ -17,13 +17,21 @@
 
 package org.apache.ignite.internal.processors.jobmetrics;
 
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * Job metrics.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=compute.jobs" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public class GridJobMetrics {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetricsProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetricsProcessor.java
index e2ed9e6..6ef44b9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetricsProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetricsProcessor.java
@@ -23,17 +23,25 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.internal.GridKernalContext;
 import org.apache.ignite.internal.processors.GridProcessorAdapter;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.internal.util.typedef.X;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteReducer;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 import static org.apache.ignite.IgniteSystemProperties.IGNITE_JOBS_METRICS_CONCURRENCY_LEVEL;
 
 /**
  * Processes job metrics.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=compute.jobs" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public class GridJobMetricsProcessor extends GridProcessorAdapter {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetricsSnapshot.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetricsSnapshot.java
index 3747ffa..cba64c4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetricsSnapshot.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/jobmetrics/GridJobMetricsSnapshot.java
@@ -17,14 +17,22 @@
 
 package org.apache.ignite.internal.processors.jobmetrics;
 
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * Job metrics snapshot.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=compute.jobs" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public class GridJobMetricsSnapshot {
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/CacheGroupMetricsMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/CacheGroupMetricsMXBean.java
index 2e78129..1275083 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/CacheGroupMetricsMXBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/CacheGroupMetricsMXBean.java
@@ -21,12 +21,18 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import org.apache.ignite.internal.processors.cache.CacheGroupContext;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * This interface defines JMX view on {@link CacheGroupContext}.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link JmxMetricExporterSpi} with "name=cacheGroups.{cache_group_name}" instead.
+ *
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 @MXBeanDescription("MBean that provides access to cache group descriptor.")
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
index 1db959f..bfcf38a 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
@@ -21,12 +21,20 @@ import javax.cache.management.CacheMXBean;
 import javax.cache.management.CacheStatisticsMXBean;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.cache.CacheMetrics;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * This interface defines JMX view on {@link IgniteCache}.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link JmxMetricExporterSpi} with "name=cache.{cache_name}" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 @MXBeanDescription("MBean that provides access to cache descriptor.")
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/DataRegionMetricsMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/DataRegionMetricsMXBean.java
index fe5f386..57b706b 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/DataRegionMetricsMXBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/DataRegionMetricsMXBean.java
@@ -18,12 +18,20 @@ package org.apache.ignite.mxbean;
 
 import org.apache.ignite.DataRegionMetrics;
 import org.apache.ignite.configuration.DataRegionConfiguration;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * This interface defines a JMX view on {@link DataRegionMetrics}.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link JmxMetricExporterSpi} with "name=io.dataregion.{data_region_name}" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 @MXBeanDescription("MBean that provides access to DataRegionMetrics of a local Apache Ignite node.")
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/DataStorageMetricsMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/DataStorageMetricsMXBean.java
index be79ec8..3b44828 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/DataStorageMetricsMXBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/DataStorageMetricsMXBean.java
@@ -19,12 +19,20 @@ package org.apache.ignite.mxbean;
 
 import org.apache.ignite.DataStorageMetrics;
 import org.apache.ignite.configuration.DataStorageConfiguration;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * An MX bean allowing to monitor and tune persistence metrics.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link JmxMetricExporterSpi} with "name=io.datastorage" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 public interface DataStorageMetricsMXBean extends DataStorageMetrics {
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/IgniteMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/IgniteMXBean.java
index 412c8e5..7f001ae 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/IgniteMXBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/IgniteMXBean.java
@@ -22,7 +22,7 @@ import java.util.Map;
 import java.util.UUID;
 import javax.management.JMException;
 import org.apache.ignite.cluster.ClusterState;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
 
 /**
  * This interface defines JMX view on kernal.
@@ -152,7 +152,7 @@ public interface IgniteMXBean {
      * Gets string presentation of the version.
      *
      * @return String presentation of the version.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.fullVersion" instead.
      */
     @Deprecated
     @MXBeanDescription(FULL_VER_DESC)
@@ -162,7 +162,7 @@ public interface IgniteMXBean {
      * Gets copyright statement for Ignite product.
      *
      * @return Copyright statement for Ignite product.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.copyright" instead.
      */
     @Deprecated
     @MXBeanDescription(COPYRIGHT_DESC)
@@ -172,7 +172,7 @@ public interface IgniteMXBean {
      * Gets string presentation of the kernal start timestamp.
      *
      * @return String presentation of the kernal start timestamp.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.startTimestampFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(START_TIMESTAMP_DESC)
@@ -182,7 +182,7 @@ public interface IgniteMXBean {
      * Gets rebalance enabled flag.
      *
      * @return Rebalance enabled flag.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.isRebalanceEnabled" instead.
      */
     @Deprecated
     @MXBeanDescription(IS_REBALANCE_ENABLED_DESC)
@@ -205,7 +205,7 @@ public interface IgniteMXBean {
      * Gets string presentation of up-time for the kernal.
      *
      * @return String presentation of up-time for the kernal.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.uptimeFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(UPTIME_FORMATTED_DESC)
@@ -215,7 +215,7 @@ public interface IgniteMXBean {
      * Get start timestamp of the kernal.
      *
      * @return Start timestamp of the kernal.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.startTimestamp" instead.
      */
     @Deprecated
     @MXBeanDescription(START_TIMESTAMP_DESC)
@@ -225,7 +225,7 @@ public interface IgniteMXBean {
      * Gets up-time of the kernal.
      *
      * @return Up-time of the kernal.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.upTime" instead.
      */
     @Deprecated
     @MXBeanDescription(UPTIME_DESC)
@@ -235,7 +235,7 @@ public interface IgniteMXBean {
      * Gets long JVM pauses count.
      *
      * @return Long JVM pauses count.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.longJVMPausesCount" instead.
      */
     @Deprecated
     @MXBeanDescription(LONG_JVM_PAUSES_CNT_DESC)
@@ -245,7 +245,7 @@ public interface IgniteMXBean {
      * Gets long JVM pauses total duration.
      *
      * @return Long JVM pauses total duration.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.longJVMPausesTotalDuration" instead.
      */
     @Deprecated
     @MXBeanDescription(LONG_JVM_PAUSES_TOTAL_DURATION_DESC)
@@ -255,7 +255,7 @@ public interface IgniteMXBean {
      * Gets long JVM pause last events.
      *
      * @return Long JVM pause last events.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.longJVMPauseLastEvents" instead.
      */
     @Deprecated
     @MXBeanDescription(LONG_JVM_PAUSE_LAST_EVENTS_DESC)
@@ -269,7 +269,7 @@ public interface IgniteMXBean {
      * used for SPI implementation.
      *
      * @return User defined attributes for this node.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.userAttributesFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(USER_ATTRS_FORMATTED_DESC)
@@ -279,7 +279,7 @@ public interface IgniteMXBean {
      * Gets a formatted instance of logger that is in grid.
      *
      * @return Logger that is used in grid.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.gridLoggerFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(GRID_LOG_FORMATTED_DESC)
@@ -289,7 +289,7 @@ public interface IgniteMXBean {
      * Gets a formatted instance of fully configured thread pool that is used in grid.
      *
      * @return Thread pool implementation that is used in grid.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.executorServiceFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(EXECUTOR_SRVC_FORMATTED_DESC)
@@ -299,7 +299,7 @@ public interface IgniteMXBean {
      * Gets Ignite installation home folder.
      *
      * @return Ignite installation home.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.igniteHome" instead.
      */
     @Deprecated
     @MXBeanDescription(IGNITE_HOME_DESC)
@@ -309,7 +309,7 @@ public interface IgniteMXBean {
      * Gets a formatted instance of MBean server instance.
      *
      * @return MBean server instance.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.mBeanServerFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(MBEAN_SERVER_FORMATTED_DESC)
@@ -319,7 +319,7 @@ public interface IgniteMXBean {
      * Unique identifier for this node within grid.
      *
      * @return Unique identifier for this node within grid.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.localNodeId" instead.
      */
     @Deprecated
     @MXBeanDescription(LOC_NODE_ID_DESC)
@@ -336,7 +336,7 @@ public interface IgniteMXBean {
      *
      * @return {@code true} if peer class loading is enabled, {@code false}
      *      otherwise.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.isPeerClassLoadingEnabled" instead.
      */
     @Deprecated
     @MXBeanDescription(IS_PEER_CLS_LOADING_ENABLED_DESC)
@@ -348,7 +348,7 @@ public interface IgniteMXBean {
      *
      * @return {@code toString()} representation of all lifecycle beans configured
      *      with Ignite.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.lifecycleBeansFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(LIFECYCLE_BEANS_FORMATTED_DESC)
@@ -401,7 +401,7 @@ public interface IgniteMXBean {
      * Checks if Ignite grid is active. If Ignite grid is not active return {@code False}.
      *
      * @return {@code True} if grid is active. {@code False} If grid is not active.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.active" instead.
      */
     @Deprecated
     @MXBeanDescription(ACTIVE_DESC)
@@ -458,7 +458,7 @@ public interface IgniteMXBean {
      * Gets a formatted instance of configured discovery SPI implementation.
      *
      * @return Grid discovery SPI implementation.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.discoverySpiFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(DISCOVERY_SPI_FORMATTED_DESC)
@@ -468,7 +468,7 @@ public interface IgniteMXBean {
      * Gets a formatted instance of fully configured SPI communication implementation.
      *
      * @return Grid communication SPI implementation.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.communicationSpiFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(COMMUNICATION_SPI_FORMATTED_DESC)
@@ -478,7 +478,7 @@ public interface IgniteMXBean {
      * Gets a formatted instance of fully configured deployment SPI implementation.
      *
      * @return Grid deployment SPI implementation.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.deploymentSpiFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(DEPLOYMENT_SPI_FORMATTED_DESC)
@@ -488,7 +488,7 @@ public interface IgniteMXBean {
      * Gets a formatted instance of configured checkpoint SPI implementation.
      *
      * @return Grid checkpoint SPI implementation.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.checkpointSpiFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(CHECKPOINT_SPI_FORMATTED_DESC)
@@ -498,7 +498,7 @@ public interface IgniteMXBean {
      * Gets a formatted instance of configured collision SPI implementations.
      *
      * @return Grid collision SPI implementations.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.collisionSpiFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(COLLISION_SPI_FORMATTED_DESC)
@@ -508,7 +508,7 @@ public interface IgniteMXBean {
      * Gets a formatted instance of fully configured event SPI implementation.
      *
      * @return Grid event SPI implementation.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.eventStorageSpiFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(EVT_STORAGE_SPI_FORMATTED_DESC)
@@ -518,7 +518,7 @@ public interface IgniteMXBean {
      * Gets a formatted instance of fully configured failover SPI implementations.
      *
      * @return Grid failover SPI implementations.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.failoverSpiFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(FAILOVER_SPI_FORMATTED_DESC)
@@ -528,7 +528,7 @@ public interface IgniteMXBean {
      * Gets a formatted instance of fully configured load balancing SPI implementations.
      *
      * @return Grid load balancing SPI implementations.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.loadBalancingSpiFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(LOAD_BALANCING_SPI_FORMATTED_DESC)
@@ -538,7 +538,7 @@ public interface IgniteMXBean {
      * Gets OS information.
      *
      * @return OS information.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.osInformation" instead.
      */
     @Deprecated
     @MXBeanDescription(OS_INFO_DESC)
@@ -548,7 +548,7 @@ public interface IgniteMXBean {
      * Gets JDK information.
      *
      * @return JDK information.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.jdkInformation" instead.
      */
     @Deprecated
     @MXBeanDescription(JDK_INFO_DESC)
@@ -558,7 +558,7 @@ public interface IgniteMXBean {
      * Gets OS user.
      *
      * @return OS user name.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.osUser" instead.
      */
     @Deprecated
     @MXBeanDescription(OS_USER_DESC)
@@ -568,7 +568,7 @@ public interface IgniteMXBean {
      * Gets VM name.
      *
      * @return VM name.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.VmName" instead.
      */
     @Deprecated
     @MXBeanDescription(VM_NAME_DESC)
@@ -578,7 +578,7 @@ public interface IgniteMXBean {
      * Gets optional kernal instance name. It can be {@code null}.
      *
      * @return Optional kernal instance name.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.InstanceName" instead.
      */
     @Deprecated
     @MXBeanDescription(INSTANCE_NAME_DESC)
@@ -599,7 +599,7 @@ public interface IgniteMXBean {
     /**
      * Gets a formatted properties of current coordinator.
      * @return String representation of current coordinator node.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.currentCoordinatorFormatted" instead.
      */
     @Deprecated
     @MXBeanDescription(CUR_COORDINATOR_FORMATTED_DESC)
@@ -609,7 +609,7 @@ public interface IgniteMXBean {
      * Gets a flag whether local node is in baseline. Returns false if baseline topology is not established.
      *
      * @return Return a baseline flag.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.isNodeInBaseline" instead.
      */
     @Deprecated
     @MXBeanDescription(IS_NODE_BASELINE_DESC)
@@ -655,7 +655,7 @@ public interface IgniteMXBean {
      *
      * @return String representation of current cluster state.
      * See {@link ClusterState}.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.clusterState" instead.
      */
     @Deprecated
     @MXBeanDescription(CLUSTER_STATE_DESC)
@@ -678,7 +678,7 @@ public interface IgniteMXBean {
      * Gets last cluster state change operation.
      *
      * @return Unix time of last cluster state change operation.
-     * @deprecated Use {@link GridMetricManager} instead.
+     * @deprecated Check the {@link ReadOnlyMetricRegistry} with "name=ignite.lastClusterStateChangeTime" instead.
      */
     @Deprecated
     @MXBeanDescription(LAST_CLUSTER_STATE_CHANGE_TIME_DESC)
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/ThreadPoolMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/ThreadPoolMXBean.java
index daeaa4f..ef6b7e66 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/ThreadPoolMXBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/ThreadPoolMXBean.java
@@ -17,12 +17,20 @@
 
 package org.apache.ignite.mxbean;
 
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * MBean that provides access to information about executor service.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link JmxMetricExporterSpi} with "name=threadPools.{thread_pool_name}" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @MXBeanDescription("MBean that provides access to information about executor service.")
 @Deprecated
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/TransactionMetricsMxBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/TransactionMetricsMxBean.java
index ce16aed..d2b677b 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/TransactionMetricsMxBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/TransactionMetricsMxBean.java
@@ -18,13 +18,21 @@
 package org.apache.ignite.mxbean;
 
 import java.util.Map;
-import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.spi.metric.MetricExporterSpi;
+import org.apache.ignite.spi.metric.ReadOnlyMetricManager;
+import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.apache.ignite.transactions.TransactionMetrics;
 
 /**
  * Transactions MXBean interface.
  *
- * @deprecated Use {@link GridMetricManager} instead.
+ * @deprecated Check the {@link JmxMetricExporterSpi} with "name=\"tx\"" instead.
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
  */
 @Deprecated
 @MXBeanDescription("MBean that provides access to Ignite transactions.")
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiContext.java b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiContext.java
index 9c08aca..e835b10 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/IgniteSpiContext.java
@@ -29,7 +29,6 @@ import org.apache.ignite.events.Event;
 import org.apache.ignite.internal.managers.communication.GridMessageListener;
 import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
 import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.plugin.extensions.communication.MessageFactory;
 import org.apache.ignite.plugin.extensions.communication.MessageFormatter;
 import org.apache.ignite.plugin.security.SecuritySubject;
@@ -381,12 +380,11 @@ public interface IgniteSpiContext {
     public void resolveCommunicationFailure(ClusterNode node, Exception err);
 
     /**
-     * Returns exisiting or newly created instance of metric registry with given name.
+     * Returns existing or newly created instance of metric registry with given name.
      *
      * @param name Metric registry name.
-     * @return Exisiting or newly created instance of metric registry.
+     * @return Existing or newly created instance of metric registry.
      */
-    @IgniteExperimental
     public ReadOnlyMetricRegistry getOrCreateMetricRegistry(String name);
 
     /**
@@ -394,7 +392,6 @@ public interface IgniteSpiContext {
      *
      * @param name Metric registry name.
      */
-    @IgniteExperimental
     public void removeMetricRegistry(String name);
 
     /**
@@ -402,7 +399,6 @@ public interface IgniteSpiContext {
      *
      * @return All registered metric registries.
      */
-    @IgniteExperimental
     public Iterable<ReadOnlyMetricRegistry> metricRegistries();
 
     /**
@@ -410,6 +406,5 @@ public interface IgniteSpiContext {
      *
      * @param lsnr Listener.
      */
-    @IgniteExperimental
     public void addMetricRegistryCreationListener(Consumer<ReadOnlyMetricRegistry> lsnr);
 }
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/metric/MetricExporterSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/metric/MetricExporterSpi.java
index edd4ff3..21be6c5 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/metric/MetricExporterSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/metric/MetricExporterSpi.java
@@ -19,7 +19,6 @@ package org.apache.ignite.spi.metric;
 
 import java.util.function.Predicate;
 import org.apache.ignite.spi.IgniteSpi;
-import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 
 /**
  * Exporter of metric information to the external recipient.
@@ -29,6 +28,15 @@ import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
  * So after start SPI should respond to some incoming request.
  * HTTP servlet or JMX bean are good examples of expected implementations.
  *
+ * <p>
+ * Ignite provides the following {@code MetricExporterSpi} implementation:
+ * <ul>
+ * <li>{@link org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi}</li>
+ * <li>{@link org.apache.ignite.spi.metric.log.LogExporterSpi}</li>
+ * <li>{@code org.apache.ignite.internal.processors.metric.sql.SqlViewMetricExporterSpi}</li>
+ * <li>{@code org.apache.ignite.spi.metric.opencensus.OpenCensusMetricExporterSpi}</li>
+ * </ul>
+ *
  * @see ReadOnlyMetricManager
  * @see ReadOnlyMetricRegistry
  * @see Metric
@@ -37,7 +45,6 @@ import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
  * @see IntMetric
  * @see LongMetric
  * @see ObjectMetric
- * @see JmxMetricExporterSpi
  */
 public interface MetricExporterSpi extends IgniteSpi {
     /**
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/metric/ReadOnlyMetricRegistry.java b/modules/core/src/main/java/org/apache/ignite/spi/metric/ReadOnlyMetricRegistry.java
index 377f0c9..9965965 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/metric/ReadOnlyMetricRegistry.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/metric/ReadOnlyMetricRegistry.java
@@ -17,10 +17,42 @@
 
 package org.apache.ignite.spi.metric;
 
+import org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi;
 import org.jetbrains.annotations.Nullable;
 
 /**
  * Read only metric registry.
+ * <p>
+ *
+ * <h2>Java example</h2>
+ * See the example below of how the internal metrics can be obtained through your application
+ * using {@link ReadOnlyMetricRegistry}.
+ *
+ * <pre>
+ * JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
+ *
+ * Ignite ignite = Ignition.start(new IgniteConfiguration()
+ *     .setDataStorageConfiguration(new DataStorageConfiguration()
+ *         .setDefaultDataRegionConfiguration(
+ *             new DataRegionConfiguration()
+ *                 .setMaxSize(12_000_000)))
+ *     .setIgniteInstanceName("jmxExampleInstanceName")
+ *     .setMetricExporterSpi(jmxSpi));
+ *
+ *
+ * ReadOnlyMetricRegistry ioReg = jmxSpi.getSpiContext().getOrCreateMetricRegistry("io.dataregion.default");
+ *
+ * Set<String> listOfMetrics = StreamSupport.stream(ioReg.spliterator(), false)
+ *     .map(Metric::name)
+ *     .collect(toSet());
+ *
+ * System.out.println("The list of available data region metrics: " + listOfMetrics);
+ * System.out.println("The 'default' data region MaxSize: " + ioReg.findMetric("MaxSize"));
+ * </pre>
+ *
+ * @see JmxMetricExporterSpi
+ * @see MetricExporterSpi
+ *
  */
 public interface ReadOnlyMetricRegistry extends Iterable<Metric> {
     /** @return Registry name. */
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/metric/jmx/JmxMetricExporterSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/metric/jmx/JmxMetricExporterSpi.java
index fe56007..d0a48da 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/metric/jmx/JmxMetricExporterSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/metric/jmx/JmxMetricExporterSpi.java
@@ -37,7 +37,60 @@ import org.jetbrains.annotations.Nullable;
 import static org.apache.ignite.internal.util.IgniteUtils.makeMBeanName;
 
 /**
- * This SPI implementation exports metrics as JMX beans.
+ * <h2>Overview</h2>
+ *
+ * Ignite provides this built-in implementation of {@link MetricExporterSpi} it exports metrics as JMX beans. This
+ * implementation works by `pull` architecture which means that after the Ignite node start it should respond to
+ * incoming user request.
+ *
+ * <h2>Java Example</h2>
+ * See the example below of how the internal metrics can be obtained through your application by
+ * constructing MBean names.
+ *
+ * <p>
+ * <pre>
+ * Ignite ignite = Ignition.start(new IgniteConfiguration()
+ *      .setDataStorageConfiguration(new DataStorageConfiguration()
+ *          .setDefaultDataRegionConfiguration(
+ *              new DataRegionConfiguration()
+ *                  .setMaxSize(12_000_000)))
+ *      .setIgniteInstanceName("jmxExampleInstanceName")
+ *      .setMetricExporterSpi(new JmxMetricExporterSpi()));
+ *
+ *  String igniteInstanceName = ignite.name();
+ *  String metricGroup = "io";
+ *
+ *  // NOTE: The special characters of metric name must be escaped.
+ *  String metricName = "\"dataregion.default\"";
+ *
+ *  SB sb = new SB("org.apache:");
+ *
+ *  if (IgniteSystemProperties.getBoolean("IGNITE_MBEAN_APPEND_CLASS_LOADER_ID", true))
+ *      sb.a("clsLdr=").a(Integer.toHexString(Ignite.class.getClassLoader().hashCode())).a(',');
+ *
+ *  if (IgniteSystemProperties.getBoolean("IGNITE_MBEAN_APPEND_JVM_ID"))
+ *      sb.a("jvmId=").a(ManagementFactory.getRuntimeMXBean().getName()).a(',');
+ *
+ *  sb.a("igniteInstanceName=").a(igniteInstanceName).a(',')
+ *      .a("group=").a(metricGroup).a(',')
+ *      .a("name=").a(metricName);
+ *
+ *  DynamicMBean dataRegionMBean = MBeanServerInvocationHandler.newProxyInstance(
+ *      ignite.configuration().getMBeanServer(),
+ *      new ObjectName(sb.toString()),
+ *      DynamicMBean.class,
+ *      false);
+ *
+ *  Set<String> listOfMetrics = Arrays.stream(dataRegionMBean.getMBeanInfo().getAttributes())
+ *      .map(MBeanFeatureInfo::getName)
+ *      .collect(toSet());
+ *
+ *  System.out.println("The list of available data region metrics: " + listOfMetrics);
+ *  System.out.println("The 'default' data region MaxSize: " + dataRegionMBean.getAttribute("MaxSize"));
+ * </pre>
+ *
+ * @see ReadOnlyMetricManager
+ * @see ReadOnlyMetricRegistry
  */
 public class JmxMetricExporterSpi extends IgniteSpiAdapter implements MetricExporterSpi {
     /** Metric registry. */