Browse Source

HDFS-16459. RBF: register RBFMetrics in MetricsSystem for promethuessink (#3999)

Neil 3 years ago
parent
commit
2f448acf39

+ 35 - 0
hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/metrics/RBFMetrics.java

@@ -17,6 +17,7 @@
  */
 package org.apache.hadoop.hdfs.server.federation.metrics;
 
+import static org.apache.hadoop.metrics2.impl.MsInfo.ProcessName;
 import static org.apache.hadoop.util.Time.now;
 
 import java.io.IOException;
@@ -79,7 +80,11 @@ import org.apache.hadoop.hdfs.server.federation.store.records.MembershipStats;
 import org.apache.hadoop.hdfs.server.federation.store.records.MountTable;
 import org.apache.hadoop.hdfs.server.federation.store.records.RouterState;
 import org.apache.hadoop.hdfs.server.federation.store.records.StateStoreVersion;
+import org.apache.hadoop.metrics2.MetricsSystem;
+import org.apache.hadoop.metrics2.annotation.Metric;
 import org.apache.hadoop.metrics2.annotation.Metrics;
+import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
+import org.apache.hadoop.metrics2.lib.MetricsRegistry;
 import org.apache.hadoop.metrics2.util.MBeans;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.util.StringUtils;
@@ -100,6 +105,8 @@ public class RBFMetrics implements RouterMBean, FederationMBean {
   private static final Logger LOG =
       LoggerFactory.getLogger(RBFMetrics.class);
 
+  private final MetricsRegistry registry = new MetricsRegistry("RBFMetrics");
+
   /** Format for a date. */
   private static final String DATE_FORMAT = "yyyy/MM/dd HH:mm:ss";
 
@@ -171,6 +178,10 @@ public class RBFMetrics implements RouterMBean, FederationMBean {
     this.topTokenRealOwners = conf.getInt(
         RBFConfigKeys.DFS_ROUTER_METRICS_TOP_NUM_TOKEN_OWNERS_KEY,
         RBFConfigKeys.DFS_ROUTER_METRICS_TOP_NUM_TOKEN_OWNERS_KEY_DEFAULT);
+
+    registry.tag(ProcessName, "Router");
+    MetricsSystem ms = DefaultMetricsSystem.instance();
+    ms.register(RBFMetrics.class.getName(), "RBFActivity Metrics", this);
   }
 
   /**
@@ -183,6 +194,8 @@ public class RBFMetrics implements RouterMBean, FederationMBean {
     if (this.federationBeanName != null) {
       MBeans.unregister(federationBeanName);
     }
+    MetricsSystem ms = DefaultMetricsSystem.instance();
+    ms.unregisterSource(RBFMetrics.class.getName());
   }
 
   @Override
@@ -458,53 +471,65 @@ public class RBFMetrics implements RouterMBean, FederationMBean {
   }
 
   @Override
+  @Metric({"NumLiveNodes", "Number of live data nodes"})
   public int getNumLiveNodes() {
     return getNameserviceAggregatedInt(
         MembershipStats::getNumOfActiveDatanodes);
   }
 
   @Override
+  @Metric({"NumDeadNodes", "Number of dead data nodes"})
   public int getNumDeadNodes() {
     return getNameserviceAggregatedInt(MembershipStats::getNumOfDeadDatanodes);
   }
 
   @Override
+  @Metric({"NumStaleNodes", "Number of stale data nodes"})
   public int getNumStaleNodes() {
     return getNameserviceAggregatedInt(
         MembershipStats::getNumOfStaleDatanodes);
   }
 
   @Override
+  @Metric({"NumDecommissioningNodes", "Number of Decommissioning data nodes"})
   public int getNumDecommissioningNodes() {
     return getNameserviceAggregatedInt(
         MembershipStats::getNumOfDecommissioningDatanodes);
   }
 
   @Override
+  @Metric({"NumDecomLiveNodes", "Number of decommissioned Live data nodes"})
   public int getNumDecomLiveNodes() {
     return getNameserviceAggregatedInt(
         MembershipStats::getNumOfDecomActiveDatanodes);
   }
 
   @Override
+  @Metric({"NumDecomDeadNodes", "Number of decommissioned dead data nodes"})
   public int getNumDecomDeadNodes() {
     return getNameserviceAggregatedInt(
         MembershipStats::getNumOfDecomDeadDatanodes);
   }
 
   @Override
+  @Metric({"NumInMaintenanceLiveDataNodes",
+      "Number of IN_MAINTENANCE live data nodes"})
   public int getNumInMaintenanceLiveDataNodes() {
     return getNameserviceAggregatedInt(
         MembershipStats::getNumOfInMaintenanceLiveDataNodes);
   }
 
   @Override
+  @Metric({"NumInMaintenanceDeadDataNodes",
+      "Number of IN_MAINTENANCE dead data nodes"})
   public int getNumInMaintenanceDeadDataNodes() {
     return getNameserviceAggregatedInt(
         MembershipStats::getNumOfInMaintenanceDeadDataNodes);
   }
 
   @Override
+  @Metric({"NumEnteringMaintenanceDataNodes",
+      "Number of ENTERING_MAINTENANCE data nodes"})
   public int getNumEnteringMaintenanceDataNodes() {
     return getNameserviceAggregatedInt(
         MembershipStats::getNumOfEnteringMaintenanceDataNodes);
@@ -557,34 +582,41 @@ public class RBFMetrics implements RouterMBean, FederationMBean {
   }
 
   @Override
+  @Metric({"NumBlocks", "Total number of blocks"})
   public long getNumBlocks() {
     return getNameserviceAggregatedLong(MembershipStats::getNumOfBlocks);
   }
 
   @Override
+  @Metric({"NumOfMissingBlocks", "Number of missing blocks"})
   public long getNumOfMissingBlocks() {
     return getNameserviceAggregatedLong(MembershipStats::getNumOfBlocksMissing);
   }
 
   @Override
+  @Metric({"NumOfBlocksPendingReplication",
+      "Number of blocks pending replication"})
   public long getNumOfBlocksPendingReplication() {
     return getNameserviceAggregatedLong(
         MembershipStats::getNumOfBlocksPendingReplication);
   }
 
   @Override
+  @Metric({"NumOfBlocksUnderReplicated", "Number of blocks under replication"})
   public long getNumOfBlocksUnderReplicated() {
     return getNameserviceAggregatedLong(
         MembershipStats::getNumOfBlocksUnderReplicated);
   }
 
   @Override
+  @Metric({"NumOfBlocksPendingDeletion", "Number of blocks pending deletion"})
   public long getNumOfBlocksPendingDeletion() {
     return getNameserviceAggregatedLong(
         MembershipStats::getNumOfBlocksPendingDeletion);
   }
 
   @Override
+  @Metric({"NumFiles", "Number of files"})
   public long getNumFiles() {
     return getNameserviceAggregatedLong(MembershipStats::getNumOfFiles);
   }
@@ -659,6 +691,7 @@ public class RBFMetrics implements RouterMBean, FederationMBean {
   }
 
   @Override
+  @Metric({"CurrentTokensCount", "Number of router's current tokens"})
   public long getCurrentTokensCount() {
     RouterSecurityManager mgr =
         this.router.getRpcServer().getRouterSecurityManager();
@@ -714,11 +747,13 @@ public class RBFMetrics implements RouterMBean, FederationMBean {
   }
 
   @Override
+  @Metric({"RouterFederationRenameCount", "Number of federation rename"})
   public int getRouterFederationRenameCount() {
     return this.router.getRpcServer().getRouterFederationRenameCount();
   }
 
   @Override
+  @Metric({"SchedulerJobCount", "Number of scheduler job"})
   public int getSchedulerJobCount() {
     return this.router.getRpcServer().getSchedulerJobCount();
   }