diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMContainerMetrics.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMContainerMetrics.java index 475c000a9c6b..d7d47a78b778 100644 --- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMContainerMetrics.java +++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMContainerMetrics.java @@ -27,6 +27,7 @@ import java.util.Map; import org.apache.hadoop.hdds.annotation.InterfaceAudience; +import org.apache.hadoop.hdds.protocol.proto.HddsProtos; import org.apache.hadoop.metrics2.MetricsCollector; import org.apache.hadoop.metrics2.MetricsSource; import org.apache.hadoop.metrics2.MetricsSystem; @@ -66,6 +67,11 @@ public void unRegister() { public void getMetrics(MetricsCollector collector, boolean all) { Map stateCount = scmmxBean.getContainerStateCount(); + int totalContainers = 0; + for (HddsProtos.LifeCycleState state : HddsProtos.LifeCycleState.values()) { + totalContainers = totalContainers + stateCount.get(state.toString()); + } + collector.addRecord(SOURCE) .addGauge(Interns.info("OpenContainers", "Number of open containers"), @@ -84,6 +90,9 @@ public void getMetrics(MetricsCollector collector, boolean all) { stateCount.get(DELETING.toString())) .addGauge(Interns.info("DeletedContainers", "Number of containers in deleted state"), - stateCount.get(DELETED.toString())); + stateCount.get(DELETED.toString())) + .addGauge(Interns.info("TotalContainers", + "Number of all containers"), + totalContainers); } } diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMContainerMetrics.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMContainerMetrics.java index 0a2eeefd1fe6..2a2bcbaa6317 100644 --- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMContainerMetrics.java +++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/server/TestSCMContainerMetrics.java @@ -77,5 +77,7 @@ public void testSCMContainerMetrics() { "Number of containers in deleting state"), 6); verify(mb, times(1)).addGauge(Interns.info("DeletedContainers", "Number of containers in deleted state"), 7); + verify(mb, times(1)).addGauge(Interns.info("TotalContainers", + "Number of all containers"), 27); } }