Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -79,7 +80,11 @@
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;
Expand All @@ -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";

Expand Down Expand Up @@ -171,6 +178,10 @@ public RBFMetrics(Router router) throws IOException {
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);
}

/**
Expand All @@ -183,6 +194,8 @@ public void close() {
if (this.federationBeanName != null) {
MBeans.unregister(federationBeanName);
}
MetricsSystem ms = DefaultMetricsSystem.instance();
ms.unregisterSource(RBFMetrics.class.getName());
}

@Override
Expand Down Expand Up @@ -458,53 +471,65 @@ public int getNumExpiredNamenodes() {
}

@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);
Expand Down Expand Up @@ -557,34 +582,41 @@ public String getNodeUsage() {
}

@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);
}
Expand Down Expand Up @@ -659,6 +691,7 @@ public String getRouterStatus() {
}

@Override
@Metric({"CurrentTokensCount", "Number of router's current tokens"})
public long getCurrentTokensCount() {
RouterSecurityManager mgr =
this.router.getRpcServer().getRouterSecurityManager();
Expand Down Expand Up @@ -714,11 +747,13 @@ public long getHighestPriorityLowRedundancyECBlocks() {
}

@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();
}
Expand Down