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

nizhikov 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 b54943a48f5 IGNITE-18232 Remove of CacheMetricsMXBean legacy JMX bean 
(#10485)
b54943a48f5 is described below

commit b54943a48f536daa2f923b360098937e44ea60bc
Author: Vladimir Steshin <[email protected]>
AuthorDate: Mon Jan 23 15:39:57 2023 +0300

    IGNITE-18232 Remove of CacheMetricsMXBean legacy JMX bean (#10485)
---
 .../monitoring-metrics/configuring-metrics.adoc    |  18 -
 docs/_docs/monitoring-metrics/metrics.adoc         |  44 +-
 docs/_docs/monitoring-metrics/system-views.adoc    |   2 +-
 .../rest/RestBinaryProtocolSelfTest.java           |   4 +-
 .../rest/RestMemcacheProtocolSelfTest.java         |   4 +-
 .../main/java/org/apache/ignite/IgniteCache.java   |  15 -
 .../java/org/apache/ignite/cache/CacheManager.java |   5 +-
 .../cache/CacheClusterMetricsMXBeanImpl.java       | 444 +----------------
 .../cache/CacheLocalMetricsMXBeanImpl.java         | 539 ---------------------
 .../cache/GatewayProtectedCacheProxy.java          |  25 -
 .../processors/cache/GridCacheAdapter.java         |  20 -
 .../processors/cache/GridCacheProcessor.java       |  14 +-
 .../processors/cache/GridCacheProxyImpl.java       |  25 -
 .../processors/cache/IgniteCacheProxyImpl.java     |  15 -
 .../processors/cache/IgniteInternalCache.java      |  15 -
 .../apache/ignite/mxbean/CacheMetricsMXBean.java   | 419 ----------------
 .../cache/CacheMetricsForClusterGroupSelfTest.java |  16 +-
 .../processors/cache/CacheMetricsManageTest.java   |  96 ++--
 .../cache/GridCacheAbstractMetricsSelfTest.java    |   4 +-
 .../IgniteAbstractDynamicCacheStartFailTest.java   |  24 +-
 ...OffheapCacheMetricsForClusterGroupSelfTest.java |  15 +-
 ...achePartitionedNearDisabledMetricsSelfTest.java |   4 +-
 .../near/GridCacheNearMetricsSelfTest.java         |   4 +-
 .../junits/multijvm/IgniteCacheProcessProxy.java   |  11 -
 .../processors/cache/index/IndexMetricsTest.java   |  57 +--
 25 files changed, 122 insertions(+), 1717 deletions(-)

diff --git a/docs/_docs/monitoring-metrics/configuring-metrics.adoc 
b/docs/_docs/monitoring-metrics/configuring-metrics.adoc
index 7d784b5511b..929e4ec8d3a 100644
--- a/docs/_docs/monitoring-metrics/configuring-metrics.adoc
+++ b/docs/_docs/monitoring-metrics/configuring-metrics.adoc
@@ -49,24 +49,6 @@ include::{dotnetFile}[tag=cache-metrics,indent=0]
 tab:C++[unsupported]
 --
 
-For each cache on a node, Ignite creates two JMX Beans: one with cache 
information specific to the node, and one with global (cluster-wide) 
information about the cache.
-
-*Local cache information MBean:*::
-+
-....
-group=<Cache_Name>,name="org.apache.ignite.internal.processors.cache.CacheLocalMetricsMXBeanImpl"
-....
-
-
-*Global cache information MBean:*::
-+
-----
-group=<Cache_Name>,name="org.apache.ignite.internal.processors.cache.CacheClusterMetricsMXBeanImpl"
-----
-
-//See link:monitoring-metrics/monitoring-with-jconsole[Monitoring with 
JConsole] for the information on how to access JMX beans.
-
-
 == Enabling Data Region Metrics
 Data region metrics expose information about data regions, including memory 
and storage size of the region.
 Enable data region metrics for every region you want to collect the metrics 
for.
diff --git a/docs/_docs/monitoring-metrics/metrics.adoc 
b/docs/_docs/monitoring-metrics/metrics.adoc
index 3637b43ba22..5511e3f593c 100644
--- a/docs/_docs/monitoring-metrics/metrics.adoc
+++ b/docs/_docs/monitoring-metrics/metrics.adoc
@@ -233,12 +233,7 @@ link:data-rebalancing[Rebalancing] is the process of 
moving partitions between t
 If you have multiple caches, they will be rebalanced sequentially.
 There are several metrics that you can use to monitor the progress of the 
rebalancing process for a specific cache.
 
-Mbean's Object Name: ::
-+
---
-----
-group=<cache 
name>,name=org.apache.ignite.internal.processors.cache.CacheLocalMetricsMXBeanImpl
-----
+In the new metric system, link:monitoring-metrics/new-metrics#caches[Cache 
metrics]:
 [{table_opts}]
 |===
 | Attribute | Type | Description | Scope
@@ -297,36 +292,7 @@ ver=8.7.5#20190520-sha1:d159cd7a, isClient=false]
 
 == Monitoring Caches
 
-Cache-related metrics. For each cache, Ignite will create two JMX MBeans that 
will expose the metrics specific to the cache. One MBean shows cluster-wide 
information about the cache, such as the total number of entries in the cache. 
The other MBean shows local information about the cache, such as the number of 
entries of the cache that are located on the local node.
-
-
-Global Cache Mbean's Object Name: ::
-+
---
-....
-group=<Cache_Name>,name="org.apache.ignite.internal.processors.cache.CacheClusterMetricsMXBeanImpl"`
-....
-
-[{table_opts}]
-|===
-| Attribute | Type | Description | Scope
-| CacheSize | long | The total number of entries in the cache across all 
nodes. | Global
-|===
---
-
-Local Cache Mbean's Object Name: ::
-+
---
-----
-group=<Cache 
Name>,name="org.apache.ignite.internal.processors.cache.CacheLocalMetricsMXBeanImpl"
-----
-
-[{table_opts}]
-|===
-| Attribute | Type | Description | Scope
-| CacheSize | long | The number of entries of the cache that are stored on the 
local node. | Node
-|===
---
+See the new metric system, link:monitoring-metrics/new-metrics#caches[Cache 
metrics].
 
 === Monitoring Build and Rebuild Indexes
 
@@ -338,11 +304,9 @@ To get an estimate on how long it takes to rebuild cache 
indexes, you can use on
 Note that the `IndexBuildCountPartitionsLeft` metric allows to estimate only 
an approximate number of indexes left to rebuild.
 For a more accurate estimate, use the `IndexRebuildKeyProcessed` cache metric:
 
-* Use `org.apache.ignite.mxbean.CacheMetricsMXBean#isIndexRebuildInProgress` 
to know whether the indexes are being rebuilt for the cache.
-Note that presently only the 
`org.apache.ignite.internal.processors.cache.CacheLocalMetricsMXBeanImpl#isIndexRebuildInProgress`
 local metric is available.
+* Use `isIndexRebuildInProgress` to know whether the indexes are being rebuilt 
for the cache.
 
-* Use 
`org.apache.ignite.mxbean.CacheMetricsMXBean#getIndexRebuildKeysProcessed` to 
know the number of keys with rebuilt indexes. If the rebuilding is in progress, 
it gives a number of keys with indexes being rebuilt at the current moment. 
Otherwise, it gives a total number of the of keys with rebuilt indexes. The 
values are reset before the start of each rebuilding.
-Note that presently only the 
`org.apache.ignite.internal.processors.cache.CacheLocalMetricsMXBeanImpl#getIndexRebuildKeysProcessed`
 local metric is available.
+* Use `IndexRebuildKeysProcessed` to know the number of keys with rebuilt 
indexes. If the rebuilding is in progress, it gives a number of keys with 
indexes being rebuilt at the current moment. Otherwise, it gives a total number 
of the of keys with rebuilt indexes. The values are reset before the start of 
each rebuilding.
 
 == Monitoring Transactions
 Note that if a transaction spans multiple nodes (i.e., if the keys that are 
changed as a result of the transaction execution are located on multiple 
nodes), the counters will increase on each node. For example, the 
'TransactionsCommittedNumber' counter will increase on each node where the keys 
affected by the transaction are stored.
diff --git a/docs/_docs/monitoring-metrics/system-views.adoc 
b/docs/_docs/monitoring-metrics/system-views.adoc
index 2ca760a7932..cd9a667c73b 100644
--- a/docs/_docs/monitoring-metrics/system-views.adoc
+++ b/docs/_docs/monitoring-metrics/system-views.adoc
@@ -475,7 +475,7 @@ This view exposes information about currently running SQL 
queries.
 |SUBJECT_ID | UUID | The subject ID of the entity that initiated the query
 |===
 
-== SQL_QUERY_HISTORY
+== SQL_QUERIES_HISTORY
 
 [{table_opts}]
 |===
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/RestBinaryProtocolSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/RestBinaryProtocolSelfTest.java
index 6dbbaa8843a..95ded66cb3f 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/RestBinaryProtocolSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/RestBinaryProtocolSelfTest.java
@@ -396,9 +396,9 @@ public class RestBinaryProtocolSelfTest extends 
GridCommonAbstractTest {
         IgniteCache<Object, Object> jcacheDft = 
grid().cache(DEFAULT_CACHE_NAME);
         IgniteCache<Object, Object> jcacheName = grid().cache(CACHE_NAME);
 
-        jcacheDft.localMxBean().clear();
+        jcacheDft.clearStatistics();
 
-        jcacheName.localMxBean().clear();
+        jcacheName.clearStatistics();
 
         jcacheDft.put("key1", "val");
         jcacheDft.put("key2", "val");
diff --git 
a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/RestMemcacheProtocolSelfTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/RestMemcacheProtocolSelfTest.java
index 12cfa0cb236..151db372028 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/RestMemcacheProtocolSelfTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/internal/processors/rest/RestMemcacheProtocolSelfTest.java
@@ -185,8 +185,8 @@ public class RestMemcacheProtocolSelfTest extends 
GridCommonAbstractTest {
      */
     @Test
     public void testMetrics() throws Exception {
-        grid().cache(DEFAULT_CACHE_NAME).localMxBean().clear();
-        grid().cache(CACHE_NAME).localMxBean().clear();
+        grid().cache(DEFAULT_CACHE_NAME).clearStatistics();
+        grid().cache(CACHE_NAME).clearStatistics();
 
         grid().cache(DEFAULT_CACHE_NAME).put("key1", "val");
         grid().cache(DEFAULT_CACHE_NAME).put("key2", "val");
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java 
b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java
index 7aa36e98b13..e06bcd693a1 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteCache.java
@@ -67,7 +67,6 @@ import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.lang.IgniteClosure;
 import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.lang.IgniteFuture;
-import org.apache.ignite.mxbean.CacheMetricsMXBean;
 import org.apache.ignite.transactions.TransactionConcurrency;
 import org.apache.ignite.transactions.TransactionException;
 import org.apache.ignite.transactions.TransactionHeuristicException;
@@ -1617,20 +1616,6 @@ public interface IgniteCache<K, V> extends 
javax.cache.Cache<K, V>, IgniteAsyncS
      */
     public CacheMetrics localMetrics();
 
-    /**
-     * Gets whole cluster MxBean for this cache.
-     *
-     * @return MxBean.
-     */
-    public CacheMetricsMXBean mxBean();
-
-    /**
-     * Gets local MxBean for this cache.
-     *
-     * @return MxBean.
-     */
-    public CacheMetricsMXBean localMxBean();
-
     /**
      * Gets a collection of lost partition IDs.
      *
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/CacheManager.java 
b/modules/core/src/main/java/org/apache/ignite/cache/CacheManager.java
index be7a51d53a1..17d40726f10 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/CacheManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/CacheManager.java
@@ -44,6 +44,7 @@ import org.apache.ignite.internal.GridKernalState;
 import org.apache.ignite.internal.IgniteKernal;
 import org.apache.ignite.internal.IgnitionEx;
 import org.apache.ignite.internal.mxbean.IgniteStandardMXBean;
+import 
org.apache.ignite.internal.processors.cache.CacheClusterMetricsMXBeanImpl;
 import org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.apache.ignite.internal.util.typedef.internal.CU;
@@ -319,7 +320,7 @@ public class CacheManager implements 
javax.cache.CacheManager {
                 throw new CacheException("Cache not found: " + cacheName);
 
             if (enabled)
-                registerCacheObject(cache.mxBean(), cacheName, 
CACHE_CONFIGURATION);
+                registerCacheObject(new CacheClusterMetricsMXBeanImpl(cache), 
cacheName, CACHE_CONFIGURATION);
             else
                 unregisterCacheObject(cacheName, CACHE_CONFIGURATION);
 
@@ -344,7 +345,7 @@ public class CacheManager implements 
javax.cache.CacheManager {
                 throw new CacheException("Cache not found: " + cacheName);
 
             if (enabled)
-                registerCacheObject(cache.mxBean(), cacheName, 
CACHE_STATISTICS);
+                registerCacheObject(new CacheClusterMetricsMXBeanImpl(cache), 
cacheName, CACHE_STATISTICS);
             else
                 unregisterCacheObject(cacheName, CACHE_STATISTICS);
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
index 32031ec35a7..1206f88ac52 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
@@ -17,515 +17,121 @@
 
 package org.apache.ignite.internal.processors.cache;
 
-import java.util.Collections;
+import javax.cache.management.CacheMXBean;
+import javax.cache.management.CacheStatisticsMXBean;
 import org.apache.ignite.IgniteCache;
-import org.apache.ignite.mxbean.CacheMetricsMXBean;
 
 /**
- * Management bean that provides access to {@link IgniteCache IgniteCache}.
+ * MX bean that keeps support of JCache specification.
  */
-public class CacheClusterMetricsMXBeanImpl implements CacheMetricsMXBean {
+public class CacheClusterMetricsMXBeanImpl implements CacheStatisticsMXBean, 
CacheMXBean {
     /** Cache. */
-    private GridCacheAdapter<?, ?> cache;
+    private IgniteCache<?, ?> cache;
 
     /**
      * Creates MBean;
      *
      * @param cache Cache.
      */
-    CacheClusterMetricsMXBeanImpl(GridCacheAdapter<?, ?> cache) {
+    public CacheClusterMetricsMXBeanImpl(IgniteCache<?, ?> cache) {
         assert cache != null;
 
         this.cache = cache;
     }
 
-    /** {@inheritDoc} */
-    @Override public String name() {
-        return cache.clusterMetrics().name();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapGets() {
-        return cache.clusterMetrics().getOffHeapGets();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapPuts() {
-        return cache.clusterMetrics().getOffHeapPuts();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapRemovals() {
-        return cache.clusterMetrics().getOffHeapRemovals();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapEvictions() {
-        return cache.clusterMetrics().getOffHeapEvictions();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapHits() {
-        return cache.clusterMetrics().getOffHeapHits();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getOffHeapHitPercentage() {
-        return cache.clusterMetrics().getOffHeapHitPercentage();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapMisses() {
-        return cache.clusterMetrics().getOffHeapMisses();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getOffHeapMissPercentage() {
-        return cache.clusterMetrics().getOffHeapMissPercentage();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapEntriesCount() {
-        return cache.clusterMetrics().getOffHeapEntriesCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getHeapEntriesCount() {
-        return cache.clusterMetrics().getHeapEntriesCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapPrimaryEntriesCount() {
-        return cache.clusterMetrics().getOffHeapPrimaryEntriesCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapBackupEntriesCount() {
-        return cache.clusterMetrics().getOffHeapBackupEntriesCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapAllocatedSize() {
-        return cache.clusterMetrics().getOffHeapAllocatedSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getSize() {
-        return cache.clusterMetrics().getSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCacheSize() {
-        return cache.clusterMetrics().getCacheSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getKeySize() {
-        return cache.clusterMetrics().getKeySize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isEmpty() {
-        return cache.clusterMetrics().isEmpty();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getDhtEvictQueueCurrentSize() {
-        return cache.clusterMetrics().getDhtEvictQueueCurrentSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxCommitQueueSize() {
-        return cache.clusterMetrics().getTxCommitQueueSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxThreadMapSize() {
-        return cache.clusterMetrics().getTxThreadMapSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxXidMapSize() {
-        return cache.clusterMetrics().getTxXidMapSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxPrepareQueueSize() {
-        return cache.clusterMetrics().getTxPrepareQueueSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxStartVersionCountsSize() {
-        return cache.clusterMetrics().getTxStartVersionCountsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxCommittedVersionsSize() {
-        return cache.clusterMetrics().getTxCommittedVersionsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxRolledbackVersionsSize() {
-        return cache.clusterMetrics().getTxRolledbackVersionsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtThreadMapSize() {
-        return cache.clusterMetrics().getTxDhtThreadMapSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtXidMapSize() {
-        return cache.clusterMetrics().getTxDhtXidMapSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtCommitQueueSize() {
-        return cache.clusterMetrics().getTxDhtCommitQueueSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtPrepareQueueSize() {
-        return cache.clusterMetrics().getTxDhtPrepareQueueSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtStartVersionCountsSize() {
-        return cache.clusterMetrics().getTxDhtStartVersionCountsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtCommittedVersionsSize() {
-        return cache.clusterMetrics().getTxDhtCommittedVersionsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtRolledbackVersionsSize() {
-        return cache.clusterMetrics().getTxDhtRolledbackVersionsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isWriteBehindEnabled() {
-        return cache.clusterMetrics().isWriteBehindEnabled();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindFlushSize() {
-        return cache.clusterMetrics().getWriteBehindFlushSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindFlushThreadCount() {
-        return cache.clusterMetrics().getWriteBehindFlushThreadCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getWriteBehindFlushFrequency() {
-        return cache.clusterMetrics().getWriteBehindFlushFrequency();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindStoreBatchSize() {
-        return cache.clusterMetrics().getWriteBehindStoreBatchSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindTotalCriticalOverflowCount() {
-        return 
cache.clusterMetrics().getWriteBehindTotalCriticalOverflowCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindCriticalOverflowCount() {
-        return cache.clusterMetrics().getWriteBehindCriticalOverflowCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindErrorRetryCount() {
-        return cache.clusterMetrics().getWriteBehindErrorRetryCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindBufferSize() {
-        return cache.clusterMetrics().getWriteBehindBufferSize();
-    }
 
     /** {@inheritDoc} */
     @Override public void clear() {
-        try {
-            
cache.context().shared().cache().clearStatistics(Collections.singleton(cache.name()));
-        }
-        catch (Exception e) {
-            throw new RuntimeException(e.getMessage());
-        }
+        cache.clearStatistics();
     }
 
     /** {@inheritDoc} */
     @Override public long getCacheHits() {
-        return cache.clusterMetrics().getCacheHits();
+        return cache.metrics().getCacheHits();
     }
 
     /** {@inheritDoc} */
     @Override public float getCacheHitPercentage() {
-        return cache.clusterMetrics().getCacheHitPercentage();
+        return cache.metrics().getCacheHitPercentage();
     }
 
     /** {@inheritDoc} */
     @Override public long getCacheMisses() {
-        return cache.clusterMetrics().getCacheMisses();
+        return cache.metrics().getCacheMisses();
     }
 
     /** {@inheritDoc} */
     @Override public float getCacheMissPercentage() {
-        return cache.clusterMetrics().getCacheMissPercentage();
+        return cache.metrics().getCacheMissPercentage();
     }
 
     /** {@inheritDoc} */
     @Override public long getCacheGets() {
-        return cache.clusterMetrics().getCacheGets();
+        return cache.metrics().getCacheGets();
     }
 
     /** {@inheritDoc} */
     @Override public long getCachePuts() {
-        return cache.clusterMetrics().getCachePuts();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorPuts() {
-        return cache.clusterMetrics().getEntryProcessorPuts();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorRemovals() {
-        return cache.clusterMetrics().getEntryProcessorRemovals();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorReadOnlyInvocations() {
-        return cache.clusterMetrics().getEntryProcessorReadOnlyInvocations();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorInvocations() {
-        return cache.clusterMetrics().getEntryProcessorInvocations();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorHits() {
-        return cache.clusterMetrics().getEntryProcessorHits();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getEntryProcessorHitPercentage() {
-        return cache.clusterMetrics().getEntryProcessorHitPercentage();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getEntryProcessorMissPercentage() {
-        return cache.clusterMetrics().getEntryProcessorMissPercentage();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorMisses() {
-        return cache.clusterMetrics().getEntryProcessorMisses();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getEntryProcessorAverageInvocationTime() {
-        return cache.clusterMetrics().getEntryProcessorAverageInvocationTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getEntryProcessorMinInvocationTime() {
-        return cache.clusterMetrics().getEntryProcessorMinInvocationTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getEntryProcessorMaxInvocationTime() {
-        return cache.clusterMetrics().getEntryProcessorMaxInvocationTime();
+        return cache.metrics().getCachePuts();
     }
 
     /** {@inheritDoc} */
     @Override public long getCacheRemovals() {
-        return cache.clusterMetrics().getCacheRemovals();
+        return cache.metrics().getCacheRemovals();
     }
 
     /** {@inheritDoc} */
     @Override public long getCacheEvictions() {
-        return cache.clusterMetrics().getCacheEvictions();
+        return cache.metrics().getCacheEvictions();
     }
 
     /** {@inheritDoc} */
     @Override public float getAverageGetTime() {
-        return cache.clusterMetrics().getAverageGetTime();
+        return cache.metrics().getAverageGetTime();
     }
 
     /** {@inheritDoc} */
     @Override public float getAveragePutTime() {
-        return cache.clusterMetrics().getAveragePutTime();
+        return cache.metrics().getAveragePutTime();
     }
 
     /** {@inheritDoc} */
     @Override public float getAverageRemoveTime() {
-        return cache.clusterMetrics().getAverageRemoveTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getAverageTxCommitTime() {
-        return cache.clusterMetrics().getAverageTxCommitTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getAverageTxRollbackTime() {
-        return cache.clusterMetrics().getAverageTxRollbackTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCacheTxCommits() {
-        return cache.clusterMetrics().getCacheTxCommits();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCacheTxRollbacks() {
-        return cache.clusterMetrics().getCacheTxRollbacks();
+        return cache.metrics().getAverageRemoveTime();
     }
 
     /** {@inheritDoc} */
     @Override public String getKeyType() {
-        return cache.clusterMetrics().getKeyType();
+        return cache.metrics().getKeyType();
     }
 
     /** {@inheritDoc} */
     @Override public String getValueType() {
-        return cache.clusterMetrics().getValueType();
+        return cache.metrics().getValueType();
     }
 
     /** {@inheritDoc} */
     @Override public boolean isStoreByValue() {
-        return cache.clusterMetrics().isStoreByValue();
+        return cache.metrics().isStoreByValue();
     }
 
     /** {@inheritDoc} */
     @Override public boolean isStatisticsEnabled() {
-        return cache.clusterMetrics().isStatisticsEnabled();
+        return cache.metrics().isStatisticsEnabled();
     }
 
     /** {@inheritDoc} */
     @Override public boolean isManagementEnabled() {
-        return cache.clusterMetrics().isManagementEnabled();
+        return cache.metrics().isManagementEnabled();
     }
 
     /** {@inheritDoc} */
     @Override public boolean isReadThrough() {
-        return cache.clusterMetrics().isReadThrough();
+        return cache.metrics().isReadThrough();
     }
 
     /** {@inheritDoc} */
     @Override public boolean isWriteThrough() {
-        return cache.clusterMetrics().isWriteThrough();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTotalPartitionsCount() {
-        return cache.clusterMetrics().getTotalPartitionsCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getRebalancedKeys() {
-        return cache.clusterMetrics().getRebalancedKeys();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEstimatedRebalancingKeys() {
-        return cache.clusterMetrics().getEstimatedRebalancingKeys();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getRebalancingPartitionsCount() {
-        return cache.clusterMetrics().getRebalancingPartitionsCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getKeysToRebalanceLeft() {
-        return cache.clusterMetrics().getKeysToRebalanceLeft();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getRebalancingKeysRate() {
-        return cache.clusterMetrics().getRebalancingKeysRate();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getRebalancingBytesRate() {
-        return cache.clusterMetrics().getRebalancingBytesRate();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long estimateRebalancingFinishTime() {
-        return cache.clusterMetrics().estimateRebalancingFinishTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long rebalancingStartTime() {
-        return cache.clusterMetrics().rebalancingStartTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEstimatedRebalancingFinishTime() {
-        return cache.clusterMetrics().getEstimatedRebalancingFinishTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getRebalancingStartTime() {
-        return cache.clusterMetrics().getRebalancingStartTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getRebalanceClearingPartitionsLeft() {
-        return cache.clusterMetrics().getRebalanceClearingPartitionsLeft();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isValidForReading() {
-        return cache.clusterMetrics().isValidForReading();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isValidForWriting() {
-        return cache.clusterMetrics().isValidForWriting();
-    }
-
-    /** {@inheritDoc} */
-    @Override public String getTxKeyCollisions() {
-        return cache.clusterMetrics().getTxKeyCollisions();
-    }
-
-    /** {@inheritDoc} */
-    @Override public void enableStatistics() {
-        try {
-            
cache.context().shared().cache().enableStatistics(Collections.singleton(cache.name()),
 true);
-        }
-        catch (Exception e) {
-            throw new RuntimeException(e.getMessage());
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public void disableStatistics() {
-        try {
-            
cache.context().shared().cache().enableStatistics(Collections.singleton(cache.name()),
 false);
-        }
-        catch (Exception e) {
-            throw new RuntimeException(e.getMessage());
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isIndexRebuildInProgress() {
-        return cache.clusterMetrics().isIndexRebuildInProgress();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getIndexRebuildKeysProcessed() {
-        return cache.clusterMetrics().getIndexRebuildKeysProcessed();
+        return cache.metrics().isWriteThrough();
     }
 }
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
deleted file mode 100644
index 64a8a77ca81..00000000000
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
+++ /dev/null
@@ -1,539 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-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.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 Check the {@link JmxMetricExporterSpi} with 
"name=cache.{cache_name}" instead.
- *
- * @see ReadOnlyMetricManager
- * @see ReadOnlyMetricRegistry
- * @see JmxMetricExporterSpi
- * @see MetricExporterSpi
- */
-@Deprecated
-public class CacheLocalMetricsMXBeanImpl implements CacheMetricsMXBean {
-    /** Cache. */
-    private GridCacheAdapter<?, ?> cache;
-
-    /**
-     * Creates MBean;
-     *
-     * @param cache Cache.
-     */
-    CacheLocalMetricsMXBeanImpl(GridCacheAdapter<?, ?> cache) {
-        assert cache != null;
-
-        this.cache = cache;
-    }
-
-    /** {@inheritDoc} */
-    @Override public String name() {
-        return cache.metrics0().name();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapGets() {
-        return cache.metrics0().getOffHeapGets();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapPuts() {
-        return cache.metrics0().getOffHeapPuts();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapRemovals() {
-        return cache.metrics0().getOffHeapRemovals();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapEvictions() {
-        return cache.metrics0().getOffHeapEvictions();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapHits() {
-        return cache.metrics0().getOffHeapHits();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getOffHeapHitPercentage() {
-        return cache.metrics0().getOffHeapHitPercentage();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapMisses() {
-        return cache.metrics0().getOffHeapMisses();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getOffHeapMissPercentage() {
-        return cache.metrics0().getOffHeapMissPercentage();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapEntriesCount() {
-        return cache.metrics0().getOffHeapEntriesCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getHeapEntriesCount() {
-        return cache.metrics0().getHeapEntriesCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapPrimaryEntriesCount() {
-        return cache.metrics0().getOffHeapPrimaryEntriesCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapBackupEntriesCount() {
-        return cache.metrics0().getOffHeapBackupEntriesCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getOffHeapAllocatedSize() {
-        return cache.metrics0().getOffHeapAllocatedSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getSize() {
-        return cache.metrics0().getSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCacheSize() {
-        return cache.metrics0().getCacheSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getKeySize() {
-        return cache.metrics0().getKeySize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isEmpty() {
-        return cache.metrics0().isEmpty();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getDhtEvictQueueCurrentSize() {
-        return cache.metrics0().getDhtEvictQueueCurrentSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxCommitQueueSize() {
-        return cache.metrics0().getTxCommitQueueSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxThreadMapSize() {
-        return cache.metrics0().getTxThreadMapSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxXidMapSize() {
-        return cache.metrics0().getTxXidMapSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxPrepareQueueSize() {
-        return cache.metrics0().getTxPrepareQueueSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxStartVersionCountsSize() {
-        return cache.metrics0().getTxStartVersionCountsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxCommittedVersionsSize() {
-        return cache.metrics0().getTxCommittedVersionsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxRolledbackVersionsSize() {
-        return cache.metrics0().getTxRolledbackVersionsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtThreadMapSize() {
-        return cache.metrics0().getTxDhtThreadMapSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtXidMapSize() {
-        return cache.metrics0().getTxDhtXidMapSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtCommitQueueSize() {
-        return cache.metrics0().getTxDhtCommitQueueSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtPrepareQueueSize() {
-        return cache.metrics0().getTxDhtPrepareQueueSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtStartVersionCountsSize() {
-        return cache.metrics0().getTxDhtStartVersionCountsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtCommittedVersionsSize() {
-        return cache.metrics0().getTxDhtCommittedVersionsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTxDhtRolledbackVersionsSize() {
-        return cache.metrics0().getTxDhtRolledbackVersionsSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isWriteBehindEnabled() {
-        return cache.metrics0().isWriteBehindEnabled();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindFlushSize() {
-        return cache.metrics0().getWriteBehindFlushSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindFlushThreadCount() {
-        return cache.metrics0().getWriteBehindFlushThreadCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getWriteBehindFlushFrequency() {
-        return cache.metrics0().getWriteBehindFlushFrequency();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindStoreBatchSize() {
-        return cache.metrics0().getWriteBehindStoreBatchSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindTotalCriticalOverflowCount() {
-        return cache.metrics0().getWriteBehindTotalCriticalOverflowCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindCriticalOverflowCount() {
-        return cache.metrics0().getWriteBehindCriticalOverflowCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindErrorRetryCount() {
-        return cache.metrics0().getWriteBehindErrorRetryCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getWriteBehindBufferSize() {
-        return cache.metrics0().getWriteBehindBufferSize();
-    }
-
-    /** {@inheritDoc} */
-    @Override public void clear() {
-        cache.metrics0().clear();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCacheHits() {
-        return cache.metrics0().getCacheHits();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getCacheHitPercentage() {
-        return cache.metrics0().getCacheHitPercentage();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCacheMisses() {
-        return cache.metrics0().getCacheMisses();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getCacheMissPercentage() {
-        return cache.metrics0().getCacheMissPercentage();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCacheGets() {
-        return cache.metrics0().getCacheGets();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCachePuts() {
-        return cache.metrics0().getCachePuts();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorPuts() {
-        return cache.metrics0().getEntryProcessorPuts();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorRemovals() {
-        return cache.metrics0().getEntryProcessorRemovals();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorReadOnlyInvocations() {
-        return cache.metrics0().getEntryProcessorReadOnlyInvocations();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorInvocations() {
-        return cache.metrics0().getEntryProcessorInvocations();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorHits() {
-        return cache.metrics0().getEntryProcessorHits();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getEntryProcessorHitPercentage() {
-        return cache.metrics0().getEntryProcessorHitPercentage();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getEntryProcessorMissPercentage() {
-        return cache.metrics0().getEntryProcessorMissPercentage();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEntryProcessorMisses() {
-        return cache.metrics0().getEntryProcessorMisses();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getEntryProcessorAverageInvocationTime() {
-        return cache.metrics0().getEntryProcessorAverageInvocationTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getEntryProcessorMinInvocationTime() {
-        return cache.metrics0().getEntryProcessorMinInvocationTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getEntryProcessorMaxInvocationTime() {
-        return cache.metrics0().getEntryProcessorMaxInvocationTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCacheRemovals() {
-        return cache.metrics0().getCacheRemovals();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCacheEvictions() {
-        return cache.metrics0().getCacheEvictions();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getAverageGetTime() {
-        return cache.metrics0().getAverageGetTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getAveragePutTime() {
-        return cache.metrics0().getAveragePutTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getAverageRemoveTime() {
-        return cache.metrics0().getAverageRemoveTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getAverageTxCommitTime() {
-        return cache.metrics0().getAverageTxCommitTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public float getAverageTxRollbackTime() {
-        return cache.metrics0().getAverageTxRollbackTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCacheTxCommits() {
-        return cache.metrics0().getCacheTxCommits();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getCacheTxRollbacks() {
-        return cache.metrics0().getCacheTxRollbacks();
-    }
-
-    /** {@inheritDoc} */
-    @Override public String getKeyType() {
-        return cache.metrics0().getKeyType();
-    }
-
-    /** {@inheritDoc} */
-    @Override public String getValueType() {
-        return cache.metrics0().getValueType();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isStoreByValue() {
-        return cache.metrics0().isStoreByValue();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isStatisticsEnabled() {
-        return cache.metrics0().isStatisticsEnabled();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isManagementEnabled() {
-        return cache.metrics0().isManagementEnabled();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isReadThrough() {
-        return cache.metrics0().isReadThrough();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isWriteThrough() {
-        return cache.metrics0().isWriteThrough();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getTotalPartitionsCount() {
-        return cache.metrics0().getTotalPartitionsCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getRebalancedKeys() {
-        return cache.metrics0().getRebalancedKeys();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEstimatedRebalancingKeys() {
-        return cache.metrics0().getEstimatedRebalancingKeys();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int getRebalancingPartitionsCount() {
-        return cache.metrics0().getRebalancingPartitionsCount();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getKeysToRebalanceLeft() {
-        return cache.metrics0().getKeysToRebalanceLeft();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getRebalancingKeysRate() {
-        return cache.metrics0().getRebalancingKeysRate();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getRebalancingBytesRate() {
-        return cache.metrics0().getRebalancingBytesRate();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long estimateRebalancingFinishTime() {
-        return cache.metrics0().estimateRebalancingFinishTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long rebalancingStartTime() {
-        return cache.metrics0().rebalancingStartTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getEstimatedRebalancingFinishTime() {
-        return cache.metrics0().getEstimatedRebalancingFinishTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getRebalancingStartTime() {
-        return cache.metrics0().getRebalancingStartTime();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getRebalanceClearingPartitionsLeft() {
-        return cache.metrics0().getRebalanceClearingPartitionsLeft();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isValidForReading() {
-        return cache.metrics0().isValidForReading();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isValidForWriting() {
-        return cache.metrics0().isValidForWriting();
-    }
-
-    /** {@inheritDoc} */
-    @Override public void enableStatistics() {
-        try {
-            
cache.context().shared().cache().enableStatistics(Collections.singleton(cache.name()),
 true);
-        }
-        catch (IgniteCheckedException e) {
-            throw new RuntimeException(e.getMessage());
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public void disableStatistics() {
-        try {
-            
cache.context().shared().cache().enableStatistics(Collections.singleton(cache.name()),
 false);
-        }
-        catch (IgniteCheckedException e) {
-            throw new RuntimeException(e.getMessage());
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public String getTxKeyCollisions() {
-        return cache.metrics0().getTxKeyCollisions();
-    }
-
-    /** {@inheritDoc} */
-    @Override public boolean isIndexRebuildInProgress() {
-        return cache.metrics0().isIndexRebuildInProgress();
-    }
-
-    /** {@inheritDoc} */
-    @Override public long getIndexRebuildKeysProcessed() {
-        return cache.metrics0().getIndexRebuildKeysProcessed();
-    }
-}
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java
index bf945a19a8e..09cec58727e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java
@@ -57,7 +57,6 @@ import org.apache.ignite.internal.util.typedef.internal.A;
 import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.lang.IgniteClosure;
 import org.apache.ignite.lang.IgniteFuture;
-import org.apache.ignite.mxbean.CacheMetricsMXBean;
 import org.apache.ignite.transactions.TransactionException;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -1505,30 +1504,6 @@ public class GatewayProtectedCacheProxy<K, V> extends 
AsyncSupportAdapter<Ignite
         }
     }
 
-    /** {@inheritDoc} */
-    @Override public CacheMetricsMXBean mxBean() {
-        CacheOperationGate opGate = onEnter();
-
-        try {
-            return delegate.mxBean();
-        }
-        finally {
-            onLeave(opGate);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public CacheMetricsMXBean localMxBean() {
-        CacheOperationGate opGate = onEnter();
-
-        try {
-            return delegate.localMxBean();
-        }
-        finally {
-            onLeave(opGate);
-        }
-    }
-
     /** {@inheritDoc} */
     @Override public Collection<Integer> lostPartitions() {
         CacheOperationGate opGate = onEnter();
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index 9eb04c8b208..9a5e378ced9 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -154,7 +154,6 @@ import org.apache.ignite.lang.IgniteOutClosure;
 import org.apache.ignite.lang.IgnitePredicate;
 import org.apache.ignite.lang.IgniteProductVersion;
 import org.apache.ignite.lang.IgniteRunnable;
-import org.apache.ignite.mxbean.CacheMetricsMXBean;
 import org.apache.ignite.plugin.security.SecurityPermission;
 import org.apache.ignite.resources.IgniteInstanceResource;
 import org.apache.ignite.resources.JobContextResource;
@@ -289,12 +288,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
     /** Cache metrics. */
     protected CacheMetricsImpl metrics;
 
-    /** Cache localMxBean. */
-    private CacheMetricsMXBean locMxBean;
-
-    /** Cache mxBean. */
-    private CacheMetricsMXBean clusterMxBean;
-
     /** Logger. */
     protected IgniteLogger log;
 
@@ -354,9 +347,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
 
         metrics = new CacheMetricsImpl(ctx, isNear());
 
-        locMxBean = new CacheLocalMetricsMXBeanImpl(this);
-        clusterMxBean = new CacheClusterMetricsMXBeanImpl(this);
-
         if (ctx.config().getMaxConcurrentAsyncOperations() > 0)
             asyncOpsSem = new 
Semaphore(ctx.config().getMaxConcurrentAsyncOperations());
 
@@ -3474,16 +3464,6 @@ public abstract class GridCacheAdapter<K, V> implements 
IgniteInternalCache<K, V
         return IgniteFeatures.allNodesSupports(nodes, 
IgniteFeatures.CACHE_METRICS_V2);
     }
 
-    /** {@inheritDoc} */
-    @Override public CacheMetricsMXBean localMxBean() {
-        return locMxBean;
-    }
-
-    /** {@inheritDoc} */
-    @Override public CacheMetricsMXBean clusterMxBean() {
-        return clusterMxBean;
-    }
-
     /**
      * @return Metrics.
      */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 0ff4fda1727..53b29937c6f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -539,11 +539,6 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
         cleanup(cfg, cfg.getInterceptor(), false);
         cleanup(cfg, cctx.store().configuredStore(), false);
 
-        if (!CU.isUtilityCache(cfg.getName()) && 
!CU.isSystemCache(cfg.getName())) {
-            unregisterMbean(cctx.cache().localMxBean(), cfg.getName(), false);
-            unregisterMbean(cctx.cache().clusterMxBean(), cfg.getName(), 
false);
-        }
-
         cctx.cleanup();
     }
 
@@ -1490,11 +1485,6 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
             cacheCtx.cache(dht);
         }
 
-        if (!CU.isUtilityCache(cache.name()) && 
!CU.isSystemCache(cache.name())) {
-            registerMbean(cache.localMxBean(), cache.name(), false);
-            registerMbean(cache.clusterMxBean(), cache.name(), false);
-        }
-
         return ret;
     }
 
@@ -3221,10 +3211,10 @@ public class GridCacheProcessor extends 
GridProcessorAdapter {
             }
 
             for (String cacheName : msg.caches()) {
-                IgniteInternalCache<?, ?> cache = ctx.cache().cache(cacheName);
+                GridCacheAdapter<?, ?> cache = 
ctx.cache().internalCache(cacheName);
 
                 if (cache != null)
-                    cache.localMxBean().clear();
+                    cache.metrics0().clear();
                 else
                     log.warning("Failed to clear cache statistics, cache not 
found [cacheName="
                         + cacheName + ']');
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
index 7a2f59c2cab..aad485c72eb 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
@@ -45,7 +45,6 @@ import 
org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
 import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.mxbean.CacheMetricsMXBean;
 import org.apache.ignite.transactions.Transaction;
 import org.apache.ignite.transactions.TransactionConcurrency;
 import org.apache.ignite.transactions.TransactionIsolation;
@@ -192,30 +191,6 @@ public class GridCacheProxyImpl<K, V> implements 
IgniteInternalCache<K, V>, Exte
         }
     }
 
-    /** {@inheritDoc} */
-    @Override public CacheMetricsMXBean clusterMxBean() {
-        CacheOperationContext prev = gate.enter(opCtx);
-
-        try {
-            return delegate.clusterMxBean();
-        }
-        finally {
-            gate.leave(prev);
-        }
-    }
-
-    /** {@inheritDoc} */
-    @Override public CacheMetricsMXBean localMxBean() {
-        CacheOperationContext prev = gate.enter(opCtx);
-
-        try {
-            return delegate.localMxBean();
-        }
-        finally {
-            gate.leave(prev);
-        }
-    }
-
     /** {@inheritDoc} */
     @Override public void localLoadCache(IgniteBiPredicate<K, V> p,
         @Nullable Object[] args) throws IgniteCheckedException {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
index 06fd7bab341..274f476042d 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
@@ -107,7 +107,6 @@ import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.lang.IgniteClosure;
 import org.apache.ignite.lang.IgniteFuture;
 import org.apache.ignite.lang.IgniteProductVersion;
-import org.apache.ignite.mxbean.CacheMetricsMXBean;
 import org.apache.ignite.plugin.security.SecurityPermission;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -318,20 +317,6 @@ public class IgniteCacheProxyImpl<K, V> extends 
AsyncSupportAdapter<IgniteCache<
         return ctx.cache().localMetrics();
     }
 
-    /** {@inheritDoc} */
-    @Override public CacheMetricsMXBean mxBean() {
-        GridCacheContext<K, V> ctx = getContextSafe();
-
-        return ctx.cache().clusterMxBean();
-    }
-
-    /** {@inheritDoc} */
-    @Override public CacheMetricsMXBean localMxBean() {
-        GridCacheContext<K, V> ctx = getContextSafe();
-
-        return ctx.cache().localMxBean();
-    }
-
     /** {@inheritDoc} */
     @Override public <C extends Configuration<K, V>> C 
getConfiguration(Class<C> clazz) {
         GridCacheContext<K, V> ctx = getContextSafe();
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
index 4ab8963cfb2..5d072bbf2b1 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
@@ -49,7 +49,6 @@ import 
org.apache.ignite.internal.processors.cache.dr.GridCacheDrInfo;
 import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
 import org.apache.ignite.lang.IgniteBiInClosure;
 import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.mxbean.CacheMetricsMXBean;
 import org.apache.ignite.transactions.Transaction;
 import org.apache.ignite.transactions.TransactionConcurrency;
 import org.apache.ignite.transactions.TransactionIsolation;
@@ -1509,20 +1508,6 @@ public interface IgniteInternalCache<K, V> extends 
Iterable<Cache.Entry<K, V>> {
      */
     public CacheMetrics localMetrics();
 
-    /**
-     * Gets whole cluster metrics (statistics) for this cache.
-     *
-     * @return Cache metrics.
-     */
-    public CacheMetricsMXBean clusterMxBean();
-
-    /**
-     * Gets local metrics (statistics) for this cache.
-     *
-     * @return Cache metrics.
-     */
-    public CacheMetricsMXBean localMxBean();
-
     /**
      * Gets number of cache entries stored in off-heap memory.
      *
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
deleted file mode 100644
index 63f71e23d33..00000000000
--- 
a/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.mxbean;
-
-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.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 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.")
-public interface CacheMetricsMXBean extends CacheStatisticsMXBean, 
CacheMXBean, CacheMetrics {
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Clear statistics.")
-    public void clear();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of hits.")
-    public long getCacheHits();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Percentage of successful hits.")
-    public float getCacheHitPercentage();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of misses.")
-    public long getCacheMisses();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Percentage of accesses that failed to find 
anything.")
-    public float getCacheMissPercentage();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of gets.")
-    public long getCacheGets();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of puts.")
-    public long getCachePuts();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of removals.")
-    public long getCacheRemovals();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of eviction entries.")
-    public long getCacheEvictions();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Average time to execute get.")
-    public float getAverageGetTime();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Average time to execute put.")
-    public float getAveragePutTime();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Average time to execute remove.")
-    public float getAverageRemoveTime();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Average time to commit transaction.")
-    public float getAverageTxCommitTime();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Average time to rollback transaction.")
-    public float getAverageTxRollbackTime();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of transaction commits.")
-    public long getCacheTxCommits();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of transaction rollback.")
-    public long getCacheTxRollbacks();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Cache name.")
-    public String name();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of gets from off-heap memory.")
-    public long getOffHeapGets();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of puts to off-heap memory.")
-    public long getOffHeapPuts();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of removed entries from off-heap 
memory.")
-    public long getOffHeapRemovals();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of evictions from off-heap memory.")
-    public long getOffHeapEvictions();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of hits on off-heap memory.")
-    public long getOffHeapHits();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Percentage of hits on off-heap memory.")
-    public float getOffHeapHitPercentage();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of misses on off-heap memory.")
-    public long getOffHeapMisses();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Percentage of misses on off-heap memory.")
-    public float getOffHeapMissPercentage();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of entries stored in off-heap 
memory.")
-    public long getOffHeapEntriesCount();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of entries in heap memory.")
-    public long getHeapEntriesCount();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of primary entries stored in off-heap 
memory.")
-    public long getOffHeapPrimaryEntriesCount();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of backup stored in off-heap memory.")
-    public long getOffHeapBackupEntriesCount();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Memory size allocated in off-heap.")
-    public long getOffHeapAllocatedSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Cache size.")
-    public int getSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of non-null values in the cache as a 
long value.")
-    public long getCacheSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of keys in the cache (possibly with 
null values).")
-    public int getKeySize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("True if cache is empty.")
-    public boolean isEmpty();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Current size of evict queue.")
-    public int getDhtEvictQueueCurrentSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction per-thread map size.")
-    public int getTxThreadMapSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction per-Xid map size.")
-    public int getTxXidMapSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction committed queue size.")
-    public int getTxCommitQueueSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction prepared queue size.")
-    public int getTxPrepareQueueSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction start version counts map size.")
-    public int getTxStartVersionCountsSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction committed ID map size.")
-    public int getTxCommittedVersionsSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction rolled back ID map size.")
-    public int getTxRolledbackVersionsSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction DHT per-thread map size.")
-    public int getTxDhtThreadMapSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction DHT per-Xid map size.")
-    public int getTxDhtXidMapSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction DHT committed queue size.")
-    public int getTxDhtCommitQueueSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction DHT prepared queue size.")
-    public int getTxDhtPrepareQueueSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction DHT start version counts map 
size.")
-    public int getTxDhtStartVersionCountsSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction DHT committed ID map size.")
-    public int getTxDhtCommittedVersionsSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Transaction DHT rolled back ID map size.")
-    public int getTxDhtRolledbackVersionsSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("True if write-behind is enabled for this 
cache.")
-    public boolean isWriteBehindEnabled();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Size of internal buffer that triggers flush 
procedure.")
-    public int getWriteBehindFlushSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Count of flush threads.")
-    public int getWriteBehindFlushThreadCount();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Flush frequency interval in milliseconds.")
-    public long getWriteBehindFlushFrequency();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Maximum size of batch for similar 
operations.")
-    public int getWriteBehindStoreBatchSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Count of cache overflow events since 
write-behind cache has started.")
-    public int getWriteBehindTotalCriticalOverflowCount();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Count of cache overflow events since 
write-behind cache has started.")
-    public int getWriteBehindCriticalOverflowCount();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Count of cache cache entries that are 
currently in retry state.")
-    public int getWriteBehindErrorRetryCount();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Count of cache entries that are waiting to 
be flushed.")
-    public int getWriteBehindBufferSize();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Key type.")
-    public String getKeyType();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Value type.")
-    public String getValueType();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("True if the cache is store by value.")
-    public boolean isStoreByValue();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Estimated number of keys to be rebalanced on 
current node.")
-    public long getKeysToRebalanceLeft();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Estimated rebalancing speed in bytes.")
-    public long getRebalancingBytesRate();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Estimated rebalancing speed in keys.")
-    public long getRebalancingKeysRate();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Number of currently rebalancing partitions 
on current node.")
-    public int getRebalancingPartitionsCount();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Rebalancing start time.")
-    public long getRebalancingStartTime();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Total number of partitions on current node.")
-    public int getTotalPartitionsCount();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Estimated rebalancing finish time.")
-    public long getEstimatedRebalancingFinishTime();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("True if statistics collection is enabled.")
-    public boolean isStatisticsEnabled();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("Checks whether management is enabled on this 
cache.")
-    public boolean isManagementEnabled();
-
-    /** {@inheritDoc} */
-    @Override @MXBeanDescription("True when a cache is in read-through mode.")
-    public boolean isReadThrough();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("True when a cache is in write-through mode.")
-    @Override public boolean isWriteThrough();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("True when a cache topology is valid for read 
operations.")
-    @Override public boolean isValidForReading();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("True when a cache topology is valid for write 
operations.")
-    @Override public boolean isValidForWriting();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("Tx key collisions. Show key and appropriate collisions 
queue size for the last " +
-        "IGNITE_DUMP_TX_COLLISIONS_INTERVAL.")
-    @Override public String getTxKeyCollisions();
-
-    /**
-     * Enable statistic collection for the cache.
-     */
-    @MXBeanDescription("Enable statistic collection for the cache.")
-    public void enableStatistics();
-
-    /**
-     * Disable statistic collection for the cache.
-     */
-    @MXBeanDescription("Disable statistic collection for the cache.")
-    public void disableStatistics();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("True if index rebuilding in progress.")
-    @Override public boolean isIndexRebuildInProgress();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("Number of keys processed during index rebuilding. To 
get remaining number of keys for " +
-        "rebuilding, subtract current value from cache size.")
-    @Override public long getIndexRebuildKeysProcessed();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("Number of already rebalanced keys.")
-    @Override public long getRebalancedKeys();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("Estimated total number of keys to rebalance.")
-    @Override public long getEstimatedRebalancingKeys();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("The number of partitions to be cleared before actual 
rebalance starts.")
-    @Override public long getRebalanceClearingPartitionsLeft();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("The mean time to execute cache invokes (time in µs).")
-    @Override public float getEntryProcessorAverageInvocationTime();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("The percentage of invocations on keys which exist in 
the cache.")
-    @Override public float getEntryProcessorHitPercentage();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("The total number of invocations on keys which exist in 
the cache.")
-    @Override public long getEntryProcessorHits();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("The total number of cache invocations.")
-    @Override public long getEntryProcessorInvocations();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("So far, the maximum time to execute cache invokes 
(time in µs).")
-    @Override public float getEntryProcessorMaxInvocationTime();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("So far, the minimum time to execute cache invokes 
(time in µs).")
-    @Override public float getEntryProcessorMinInvocationTime();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("The total number of invocations on keys which don't 
exist in the cache.")
-    @Override public long getEntryProcessorMisses();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("The percentage of invocations on keys which don't 
exist in the cache.")
-    @Override public float getEntryProcessorMissPercentage();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("The total number of cache invocations which caused an 
update.")
-    @Override public long getEntryProcessorPuts();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("The total number of cache invocations which caused no 
updates.")
-    @Override public long getEntryProcessorReadOnlyInvocations();
-
-    /** {@inheritDoc} */
-    @MXBeanDescription("The total number of cache invocations which caused a 
removal.")
-    @Override public long getEntryProcessorRemovals();
-}
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsForClusterGroupSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsForClusterGroupSelfTest.java
index 978eaed3699..2911209cc3b 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsForClusterGroupSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsForClusterGroupSelfTest.java
@@ -30,6 +30,8 @@ import org.apache.ignite.testframework.MvccFeatureChecker;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 import org.junit.Test;
 
+import static org.junit.Assert.assertNotEquals;
+
 /**
  * Test for cluster wide cache metrics.
  */
@@ -248,7 +250,6 @@ public class CacheMetricsForClusterGroupSelfTest extends 
GridCommonAbstractTest
             }, expectNonZero);
 
             assertEquals(metrics.getCacheGets(), sumGets);
-            assertEquals(cache.mxBean().getCacheGets(), sumGets);
 
             long sumPuts = sum(ms, new IgniteClosure<CacheMetrics, Long>() {
                 @Override public Long apply(CacheMetrics input) {
@@ -257,7 +258,6 @@ public class CacheMetricsForClusterGroupSelfTest extends 
GridCommonAbstractTest
             }, expectNonZero);
 
             assertEquals(metrics.getCachePuts(), sumPuts);
-            assertEquals(cache.mxBean().getCachePuts(), sumPuts);
 
             long sumHits = sum(ms, new IgniteClosure<CacheMetrics, Long>() {
                 @Override public Long apply(CacheMetrics input) {
@@ -266,7 +266,6 @@ public class CacheMetricsForClusterGroupSelfTest extends 
GridCommonAbstractTest
             }, expectNonZero);
 
             assertEquals(metrics.getCacheHits(), sumHits);
-            assertEquals(cache.mxBean().getCacheHits(), sumHits);
 
             if (expectNonZero) {
                 long sumHeapEntries = sum(ms, new IgniteClosure<CacheMetrics, 
Long>() {
@@ -277,9 +276,7 @@ public class CacheMetricsForClusterGroupSelfTest extends 
GridCommonAbstractTest
                 }, true);
 
                 assertEquals(metrics.getHeapEntriesCount(), sumHeapEntries);
-                assertEquals(cache.mxBean().getHeapEntriesCount(), 
sumHeapEntries);
             }
-
         }
     }
 
@@ -298,16 +295,13 @@ public class CacheMetricsForClusterGroupSelfTest extends 
GridCommonAbstractTest
             assertEquals(clusterMetrics.name(), locMetrics.name());
 
             assertEquals(0L, clusterMetrics.getCacheGets());
-            assertEquals(0L, cache.mxBean().getCacheGets());
-            assertEquals(locMetrics.getCacheGets(), 
cache.localMxBean().getCacheGets());
+            assertNotEquals(0L, locMetrics.getCacheGets());
 
             assertEquals(0L, clusterMetrics.getCachePuts());
-            assertEquals(0L, cache.mxBean().getCachePuts());
-            assertEquals(locMetrics.getCachePuts(), 
cache.localMxBean().getCachePuts());
+            assertNotEquals(0L, locMetrics.getCachePuts());
 
             assertEquals(0L, clusterMetrics.getCacheHits());
-            assertEquals(0L, cache.mxBean().getCacheHits());
-            assertEquals(locMetrics.getCacheHits(), 
cache.localMxBean().getCacheHits());
+            assertNotEquals(0L, locMetrics.getCacheHits());
         }
     }
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsManageTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsManageTest.java
index 525ec228324..09ab7364cd0 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsManageTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsManageTest.java
@@ -35,6 +35,7 @@ import javax.management.ObjectName;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteTransactions;
 import org.apache.ignite.cache.CacheAtomicityMode;
 import org.apache.ignite.cache.CacheMetrics;
@@ -60,7 +61,6 @@ import org.apache.ignite.internal.util.lang.GridAbsPredicate;
 import org.apache.ignite.internal.util.typedef.G;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.mxbean.CacheMetricsMXBean;
 import org.apache.ignite.mxbean.TransactionsMXBean;
 import org.apache.ignite.plugin.extensions.communication.Message;
 import org.apache.ignite.testframework.GridTestUtils;
@@ -72,6 +72,7 @@ import org.junit.Assume;
 import org.junit.Test;
 
 import static 
org.apache.ignite.IgniteSystemProperties.IGNITE_DUMP_TX_COLLISIONS_INTERVAL;
+import static org.apache.ignite.testframework.GridTestUtils.assertThrows;
 import static 
org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
 import static 
org.apache.ignite.transactions.TransactionIsolation.READ_COMMITTED;
 
@@ -108,20 +109,20 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
      * @throws Exception If failed.
      */
     @Test
-    public void testJmxNoPdsStatisticsEnable() throws Exception {
+    public void testNoPdsStatisticsEnable() throws Exception {
         
Assume.assumeFalse("https://issues.apache.org/jira/browse/IGNITE-9224";, 
MvccFeatureChecker.forcedMvcc());
 
-        testJmxStatisticsEnable(false);
+        testStatisticsEnable(false);
     }
 
     /**
      * @throws Exception If failed.
      */
     @Test
-    public void testJmxPdsStatisticsEnable() throws Exception {
+    public void testPdsStatisticsEnable() throws Exception {
         
Assume.assumeFalse("https://issues.apache.org/jira/browse/IGNITE-9224";, 
MvccFeatureChecker.forcedMvcc());
 
-        testJmxStatisticsEnable(true);
+        testStatisticsEnable(true);
     }
 
     /**
@@ -316,24 +317,6 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
         assertCacheStatisticsIsClear(cacheNames);
     }
 
-    /**
-     *
-     */
-    @Test
-    public void testJmxApiClearStatistics() throws Exception {
-        startGrids(3);
-
-        IgniteCache<Integer, String> cache = grid(0).cache(CACHE1);
-
-        cache.enableStatistics(true);
-
-        incrementCacheStatistics(cache);
-
-        mxBean(0, CACHE1, CacheClusterMetricsMXBeanImpl.class).clear();
-
-        assertCacheStatisticsIsClear(Collections.singleton(CACHE1));
-    }
-
     /**
      * Cache statistics is cleared on all nodes.
      *
@@ -350,14 +333,14 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
                         IgniteCache<?, ?> cache = ig.cache(cacheName);
 
                         try {
-                            assertEquals("CachePuts", 0L, 
cache.mxBean().getCachePuts());
-                            assertEquals("CacheHits", 0L, 
cache.mxBean().getCacheHits());
-                            assertEquals("CacheGets", 0L, 
cache.mxBean().getCacheGets());
-                            assertEquals("CacheRemovals", 0L, 
cache.mxBean().getCacheRemovals());
-                            assertEquals("CacheMisses", 0L, 
cache.mxBean().getCacheMisses());
-                            assertEquals("AverageGetTime", 0f, 
cache.mxBean().getAveragePutTime());
-                            assertEquals("AveragePutTime", 0f, 
cache.mxBean().getAverageGetTime());
-                            assertEquals("AverageRemoveTime", 0f, 
cache.mxBean().getAverageRemoveTime());
+                            assertEquals("CachePuts", 0L, 
cache.metrics().getCachePuts());
+                            assertEquals("CacheHits", 0L, 
cache.metrics().getCacheHits());
+                            assertEquals("CacheGets", 0L, 
cache.metrics().getCacheGets());
+                            assertEquals("CacheRemovals", 0L, 
cache.metrics().getCacheRemovals());
+                            assertEquals("CacheMisses", 0L, 
cache.metrics().getCacheMisses());
+                            assertEquals("AverageGetTime", 0f, 
cache.metrics().getAveragePutTime());
+                            assertEquals("AveragePutTime", 0f, 
cache.metrics().getAverageGetTime());
+                            assertEquals("AverageRemoveTime", 0f, 
cache.metrics().getAverageRemoveTime());
                         }
                         catch (AssertionError e) {
                             log.warning(e.toString());
@@ -405,7 +388,7 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
     /**
      * @param persistence Persistence.
      */
-    private void testJmxStatisticsEnable(boolean persistence) throws Exception 
{
+    private void testStatisticsEnable(boolean persistence) throws Exception {
         this.persistence = persistence;
 
         Ignite ig1 = startGrid(1);
@@ -421,12 +404,8 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
 
         ig2.getOrCreateCache(cacheCfg2);
 
-        CacheMetricsMXBean mxBeanCache1 = mxBean(2, CACHE1, 
CacheClusterMetricsMXBeanImpl.class);
-        CacheMetricsMXBean mxBeanCache2 = mxBean(2, CACHE2, 
CacheClusterMetricsMXBeanImpl.class);
-        CacheMetricsMXBean mxBeanCache1loc = mxBean(2, CACHE1, 
CacheLocalMetricsMXBeanImpl.class);
-
-        mxBeanCache1.enableStatistics();
-        mxBeanCache2.disableStatistics();
+        ig2.cache(CACHE1).enableStatistics(true);
+        ig2.cache(CACHE2).enableStatistics(false);
 
         assertCachesStatisticsMode(true, false);
 
@@ -436,12 +415,12 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
 
         assertCachesStatisticsMode(true, false);
 
-        mxBeanCache1loc.disableStatistics();
+        ig2.cache(CACHE1).enableStatistics(false);
 
         assertCachesStatisticsMode(false, false);
 
-        mxBeanCache1.enableStatistics();
-        mxBeanCache2.enableStatistics();
+        ig2.cache(CACHE1).enableStatistics(true);
+        ig2.cache(CACHE2).enableStatistics(true);
 
         // Start node 1 again.
         startGrid(1);
@@ -494,28 +473,14 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
         else
             assertCachesStatisticsMode(false, false);
 
-        mxBeanCache1 = mxBean(1, CACHE1, CacheLocalMetricsMXBeanImpl.class);
-        mxBeanCache2 = mxBean(1, CACHE2, CacheLocalMetricsMXBeanImpl.class);
-
-        mxBeanCache1.enableStatistics();
-        mxBeanCache2.disableStatistics();
+        ig1.cache(CACHE1).enableStatistics(true);
+        ig1.cache(CACHE2).enableStatistics(false);
 
         startGrid(2);
 
         assertCachesStatisticsMode(true, false);
     }
 
-    /**
-     * Gets CacheMetricsMXBean for given node and group name.
-     *
-     * @param nodeIdx Node index.
-     * @param cacheName Cache name.
-     * @return MBean instance.
-     */
-    private CacheMetricsMXBean mxBean(int nodeIdx, String cacheName, Class<? 
extends CacheMetricsMXBean> clazz) {
-        return getMxBean(getTestIgniteInstanceName(nodeIdx), cacheName, 
clazz.getName(), CacheMetricsMXBean.class);
-    }
-
     /** Default cache config. */
     private CacheConfiguration<?, ?> getCacheConfiguration() {
         CacheConfiguration<?, ?> cacheCfg = new CacheConfiguration<>()
@@ -592,7 +557,7 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
 
         IgniteCache<Integer, Integer> cache0 = cl.cache(cacheName);
 
-        CacheMetricsMXBean mxBeanCache = mxBean(0, cacheName, 
CacheLocalMetricsMXBeanImpl.class);
+        CacheMetrics localCacheMetrics = cache.localMetrics();
 
         final List<Integer> priKeys = primaryKeys(cache, 3, 1);
 
@@ -681,7 +646,7 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
                     fail(e.toString());
                 }
 
-                String coll = mxBeanCache.getTxKeyCollisions();
+                String coll = localCacheMetrics.getTxKeyCollisions();
 
                 if (coll.contains("val=" + priKeys.get(2)) || 
coll.contains("val=" + priKeys.get(0)));
                     return true;
@@ -789,7 +754,7 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
             commSpi0.stopBlock();
         }
 
-        CacheMetricsMXBean mxBeanCache = mxBean(0, cacheName, 
CacheLocalMetricsMXBeanImpl.class);
+        CacheMetrics localCacheMetrics = cache.localMetrics();
 
         IgniteTxManager txManager = 
((IgniteEx)ig).context().cache().context().tm();
 
@@ -802,9 +767,9 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
 
             
txMXBean2.setTxKeyCollisionsInterval(ThreadLocalRandom.current().nextInt(1000, 
1100));
 
-            mxBeanCache.getTxKeyCollisions();
+            localCacheMetrics.getTxKeyCollisions();
 
-            mxBeanCache.clear();
+            ig.cache(cacheName).clearStatistics();
 
             try {
                 U.invoke(IgniteTxManager.class, txManager, 
"collectTxCollisionsInfo");
@@ -832,11 +797,8 @@ public class CacheMetricsManageTest extends 
GridCommonAbstractTest {
 
         assertFalse(grid.cluster().state().active());
 
-        CacheMetricsMXBean mxBean = mxBean(0, CACHE1, 
CacheLocalMetricsMXBeanImpl.class);
-
-        long size = mxBean.getCacheSize();
-
-        assertEquals(-1, size);
+        assertThrows(null, () -> grid.cache(CACHE1).metrics().getCacheSize(), 
IgniteException.class,
+            "Can not perform the operation because the cluster is inactive");
     }
 
     /**
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
index d9544a568ba..2b93083b841 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheAbstractMetricsSelfTest.java
@@ -169,10 +169,10 @@ public abstract class GridCacheAbstractMetricsSelfTest 
extends GridCacheAbstract
         for (int i = 0; i < gridCount(); i++) {
             Ignite g = grid(i);
 
-            g.cache(DEFAULT_CACHE_NAME).localMxBean().clear();
-
             g.transactions().resetMetrics();
         }
+
+        grid(0).cache(DEFAULT_CACHE_NAME).clearStatistics();
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteAbstractDynamicCacheStartFailTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteAbstractDynamicCacheStartFailTest.java
index 8f6258e0e54..291d8dfcfad 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteAbstractDynamicCacheStartFailTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteAbstractDynamicCacheStartFailTest.java
@@ -837,8 +837,11 @@ public abstract class 
IgniteAbstractDynamicCacheStartFailTest extends GridCacheA
 
             cfg.setName(cacheName);
 
-            if (i == unluckyCfg)
+            if (i == unluckyCfg) {
+                cfg.setNodeFilter(new AnyNodeMXFilter());
+
                 mbSrv.cache(cacheName);
+            }
 
             cfgs.add(cfg);
         }
@@ -894,6 +897,25 @@ public abstract class 
IgniteAbstractDynamicCacheStartFailTest extends GridCacheA
         }
     }
 
+    /**
+     * 'MXBean'-named interface to register mx bean at dynamic cache creation 
to simulate failure.
+     *
+     * @see GridCacheProcessor#registerMbean(Object, String, boolean)
+     */
+    public interface UUIDMXBean {
+        // No-op.
+    }
+
+    /**
+     * Empty filter used to register mxbean at dynamic cache creation to 
simalate failure.
+     */
+    public static class AnyNodeMXFilter implements 
IgnitePredicate<ClusterNode>, UUIDMXBean {
+        /** {@inheritDoc} */
+        @Override public boolean apply(ClusterNode clusterNode) {
+            return true;
+        }
+    }
+
     /**
      * Filter specifying on which node the cache should be started.
      */
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/OffheapCacheMetricsForClusterGroupSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/OffheapCacheMetricsForClusterGroupSelfTest.java
index 08c8f16a043..60671b89fe7 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/OffheapCacheMetricsForClusterGroupSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/OffheapCacheMetricsForClusterGroupSelfTest.java
@@ -81,13 +81,12 @@ public class OffheapCacheMetricsForClusterGroupSelfTest 
extends GridCommonAbstra
 
         for (int i = 0; i < GRID_CNT; i++) {
             IgniteCache<Integer, Integer> cache = grid("server-" + 
i).cache(cacheName);
+
             assertEquals(count, 
cache.metrics().getOffHeapPrimaryEntriesCount());
-            assertEquals(count, 
cache.mxBean().getOffHeapPrimaryEntriesCount());
             assertEquals(count, 
cache.metrics().getOffHeapBackupEntriesCount());
-            assertEquals(count, cache.mxBean().getOffHeapBackupEntriesCount());
 
-            localPrimary += 
cache.localMxBean().getOffHeapPrimaryEntriesCount();
-            localBackups += 
cache.localMxBean().getOffHeapPrimaryEntriesCount();
+            localPrimary += 
cache.localMetrics().getOffHeapPrimaryEntriesCount();
+            localBackups += 
cache.localMetrics().getOffHeapBackupEntriesCount();
         }
 
         assertEquals(count, localPrimary);
@@ -95,12 +94,12 @@ public class OffheapCacheMetricsForClusterGroupSelfTest 
extends GridCommonAbstra
 
         for (int i = 0; i < CLIENT_CNT; i++) {
             IgniteCache<Integer, Integer> cache = grid("client-" + 
i).cache(cacheName);
+
             assertEquals(count, 
cache.metrics().getOffHeapPrimaryEntriesCount());
-            assertEquals(count, 
cache.mxBean().getOffHeapPrimaryEntriesCount());
             assertEquals(count, 
cache.metrics().getOffHeapBackupEntriesCount());
-            assertEquals(count, cache.mxBean().getOffHeapBackupEntriesCount());
-            assertEquals(0L, 
cache.localMxBean().getOffHeapPrimaryEntriesCount());
-            assertEquals(0L, 
cache.localMxBean().getOffHeapBackupEntriesCount());
+
+            assertEquals(0L, 
cache.localMetrics().getOffHeapPrimaryEntriesCount());
+            assertEquals(0L, 
cache.localMetrics().getOffHeapBackupEntriesCount());
         }
     }
 
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCachePartitionedNearDisabledMetricsSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCachePartitionedNearDisabledMetricsSelfTest.java
index abbfb9eabac..09f342f15b8 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCachePartitionedNearDisabledMetricsSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridCachePartitionedNearDisabledMetricsSelfTest.java
@@ -129,10 +129,10 @@ public class 
GridCachePartitionedNearDisabledMetricsSelfTest extends GridCacheTr
             //((IgniteKernal)g).cache(DEFAULT_CACHE_NAME).remove(0);
 
             assert g.cache(DEFAULT_CACHE_NAME).localSize() == 0;
-
-            g.cache(DEFAULT_CACHE_NAME).mxBean().clear();
         }
 
+        grid(0).cache(DEFAULT_CACHE_NAME).clearStatistics();
+
         assertNull("Value is not null for key: " + 0, cache.get(0));
 
         // Check metrics for the whole cache.
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearMetricsSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearMetricsSelfTest.java
index ca713572073..76b6e296930 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearMetricsSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/near/GridCacheNearMetricsSelfTest.java
@@ -78,9 +78,9 @@ public class GridCacheNearMetricsSelfTest extends 
GridCacheAbstractSelfTest {
             g.cache(DEFAULT_CACHE_NAME).removeAll();
 
             assert g.cache(DEFAULT_CACHE_NAME).localSize() == 0;
-
-            g.cache(DEFAULT_CACHE_NAME).localMxBean().clear();
         }
+
+        grid(0).cache(DEFAULT_CACHE_NAME).clearStatistics();
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
index 68d8c4ce5a3..a8e164445da 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteCacheProcessProxy.java
@@ -53,7 +53,6 @@ import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.lang.IgniteCallable;
 import org.apache.ignite.lang.IgniteClosure;
 import org.apache.ignite.lang.IgniteFuture;
-import org.apache.ignite.mxbean.CacheMetricsMXBean;
 import org.apache.ignite.resources.IgniteInstanceResource;
 import org.jetbrains.annotations.Nullable;
 
@@ -664,16 +663,6 @@ public class IgniteCacheProcessProxy<K, V> implements 
IgniteCache<K, V> {
         throw new UnsupportedOperationException("Method should be supported.");
     }
 
-    /** {@inheritDoc} */
-    @Override public CacheMetricsMXBean mxBean() {
-        throw new UnsupportedOperationException("Method should be supported.");
-    }
-
-    /** {@inheritDoc} */
-    @Override public CacheMetricsMXBean localMxBean() {
-        throw new UnsupportedOperationException("Method should be supported.");
-    }
-
     /** {@inheritDoc} */
     @Override public <K1, V1> IgniteCache<K1, V1> withKeepBinary() {
         throw new UnsupportedOperationException("Method should be supported.");
diff --git 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/IndexMetricsTest.java
 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/IndexMetricsTest.java
index 1d2c39bfa09..7c5483e259f 100644
--- 
a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/IndexMetricsTest.java
+++ 
b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/IndexMetricsTest.java
@@ -33,13 +33,10 @@ import 
org.apache.ignite.configuration.DataStorageConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.cache.query.index.IndexProcessor;
-import 
org.apache.ignite.internal.processors.cache.CacheClusterMetricsMXBeanImpl;
-import org.apache.ignite.internal.processors.cache.CacheLocalMetricsMXBeanImpl;
 import org.apache.ignite.internal.processors.metric.MetricRegistry;
 import org.apache.ignite.internal.processors.metric.impl.LongAdderMetric;
 import org.apache.ignite.internal.util.typedef.internal.CU;
 import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.mxbean.CacheMetricsMXBean;
 import org.apache.ignite.spi.metric.BooleanMetric;
 import org.apache.ignite.spi.metric.Metric;
 import org.junit.Test;
@@ -111,15 +108,15 @@ public class IndexMetricsTest extends 
AbstractIndexingCommonTest {
      */
     @Test
     public void testIndexRebuildingMetric() throws Exception {
-        IgniteEx n = startGrid(0);
+        IgniteEx ig0 = startGrid(0);
 
-        n.cluster().state(ClusterState.ACTIVE);
+        ig0.cluster().state(ClusterState.ACTIVE);
 
         String cacheName1 = "cache1";
         String cacheName2 = "cache2";
 
-        IgniteCache<KeyClass, ValueClass> cache1 = 
n.getOrCreateCache(cacheConfiguration(cacheName1));
-        IgniteCache<KeyClass, ValueClass> cache2 = 
n.getOrCreateCache(cacheConfiguration(cacheName2));
+        IgniteCache<KeyClass, ValueClass> cache1 = 
ig0.getOrCreateCache(cacheConfiguration(cacheName1));
+        IgniteCache<KeyClass, ValueClass> cache2 = 
ig0.getOrCreateCache(cacheConfiguration(cacheName2));
 
         int entryCnt1 = 100;
         int entryCnt2 = 200;
@@ -140,7 +137,7 @@ public class IndexMetricsTest extends 
AbstractIndexingCommonTest {
 
         IndexProcessor.idxRebuildCls = BlockingIndexesRebuildTask.class;
 
-        n = startGrid(0);
+        IgniteEx n = startGrid(0);
 
         BooleanMetric idxRebuildInProgress1 = indexRebuildMetric(n, 
cacheName1, "IsIndexRebuildInProgress");
         BooleanMetric idxRebuildInProgress2 = indexRebuildMetric(n, 
cacheName2, "IsIndexRebuildInProgress");
@@ -151,50 +148,42 @@ public class IndexMetricsTest extends 
AbstractIndexingCommonTest {
         CacheMetrics cacheMetrics1 = cacheMetrics(n, cacheName1);
         CacheMetrics cacheMetrics2 = cacheMetrics(n, cacheName2);
 
-        CacheMetricsMXBean cacheMetricsMXBean1 = cacheMetricsMXBean(n, 
cacheName1, CacheLocalMetricsMXBeanImpl.class);
-        CacheMetricsMXBean cacheMetricsMXBean2 = cacheMetricsMXBean(n, 
cacheName2, CacheLocalMetricsMXBeanImpl.class);
-
-        CacheMetricsMXBean cacheClusterMetricsMXBean1 =
-            cacheMetricsMXBean(n, cacheName1, 
CacheClusterMetricsMXBeanImpl.class);
-        CacheMetricsMXBean cacheClusterMetricsMXBean2 =
-            cacheMetricsMXBean(n, cacheName2, 
CacheClusterMetricsMXBeanImpl.class);
-
         n.cluster().state(ClusterState.ACTIVE);
 
         BooleanSupplier[] idxRebuildProgressCache1 = {
             idxRebuildInProgress1::value,
             cacheMetrics1::isIndexRebuildInProgress,
-            cacheMetricsMXBean1::isIndexRebuildInProgress
+            () -> n.cache(cacheName1).localMetrics().isIndexRebuildInProgress()
         };
 
         BooleanSupplier[] idxRebuildProgressCache2 = {
             idxRebuildInProgress2::value,
             cacheMetrics2::isIndexRebuildInProgress,
-            cacheMetricsMXBean2::isIndexRebuildInProgress
+            () -> n.cache(cacheName2).localMetrics().isIndexRebuildInProgress()
         };
 
         // It must always be false, because metric is only per node.
         BooleanSupplier[] idxRebuildProgressCluster = {
-            cacheClusterMetricsMXBean1::isIndexRebuildInProgress,
-            cacheClusterMetricsMXBean2::isIndexRebuildInProgress
+            () -> n.cache(cacheName1).metrics().isIndexRebuildInProgress(),
+            () -> n.cache(cacheName2).metrics().isIndexRebuildInProgress()
         };
 
         LongSupplier[] idxRebuildKeyProcessedCache1 = {
             idxRebuildKeyProcessed1::value,
             cacheMetrics1::getIndexRebuildKeysProcessed,
-            cacheMetricsMXBean1::getIndexRebuildKeysProcessed,
+            () -> 
n.cache(cacheName1).localMetrics().getIndexRebuildKeysProcessed()
         };
 
         LongSupplier[] idxRebuildKeyProcessedCache2 = {
             idxRebuildKeyProcessed2::value,
             cacheMetrics2::getIndexRebuildKeysProcessed,
-            cacheMetricsMXBean2::getIndexRebuildKeysProcessed,
+            () -> 
n.cache(cacheName2).localMetrics().getIndexRebuildKeysProcessed()
         };
 
         // It must always be 0, because metric is only per node.
         LongSupplier[] idxRebuildKeyProcessedCluster = {
-            cacheClusterMetricsMXBean1::getIndexRebuildKeysProcessed,
-            cacheClusterMetricsMXBean2::getIndexRebuildKeysProcessed
+            () -> n.cache(cacheName1).metrics().getIndexRebuildKeysProcessed(),
+            () -> n.cache(cacheName2).metrics().getIndexRebuildKeysProcessed()
         };
 
         assertEquals(true, idxRebuildProgressCache1);
@@ -258,26 +247,6 @@ public class IndexMetricsTest extends 
AbstractIndexingCommonTest {
         return 
node.context().cache().cacheGroup(CU.cacheId(cacheName)).singleCacheContext().cache().metrics0();
     }
 
-    /**
-     * Get cache metrics MXBean.
-     *
-     * @param n Node.
-     * @param cacheName Cache name.
-     * @param cls Cache metrics MXBean implementation.
-     * @return Cache metrics MXBean.
-     */
-    private <T extends CacheMetricsMXBean> T cacheMetricsMXBean(
-        IgniteEx n,
-        String cacheName,
-        Class<? super T> cls
-    ) {
-        requireNonNull(n);
-        requireNonNull(cacheName);
-        requireNonNull(cls);
-
-        return (T)getMxBean(n.name(), cacheName, cls.getName(), 
CacheMetricsMXBean.class);
-    }
-
     /**
      * Assertion that expected value is equal with all actual values.
      *

Reply via email to