|
@@ -32,6 +32,7 @@ import org.apache.hadoop.metrics2.lib.MutableCounterLong;
|
|
|
import org.apache.hadoop.metrics2.lib.MutableGaugeInt;
|
|
|
import org.apache.hadoop.metrics2.lib.MutableQuantiles;
|
|
|
import org.apache.hadoop.metrics2.lib.MutableRate;
|
|
|
+import org.apache.hadoop.metrics2.lib.MutableStat;
|
|
|
import org.apache.hadoop.metrics2.source.JvmMetrics;
|
|
|
|
|
|
/**
|
|
@@ -132,6 +133,18 @@ public class NameNodeMetrics {
|
|
|
@Metric("Time loading FS Image at startup in msec")
|
|
|
MutableGaugeInt fsImageLoadTime;
|
|
|
|
|
|
+ @Metric("Time tailing edit logs in msec")
|
|
|
+ MutableRate editLogTailTime;
|
|
|
+ private final MutableQuantiles[] editLogTailTimeQuantiles;
|
|
|
+ @Metric MutableRate editLogFetchTime;
|
|
|
+ private final MutableQuantiles[] editLogFetchTimeQuantiles;
|
|
|
+ @Metric(value = "Number of edits loaded", valueName = "Count")
|
|
|
+ MutableStat numEditLogLoaded;
|
|
|
+ private final MutableQuantiles[] numEditLogLoadedQuantiles;
|
|
|
+ @Metric("Time between edit log tailing in msec")
|
|
|
+ MutableRate editLogTailInterval;
|
|
|
+ private final MutableQuantiles[] editLogTailIntervalQuantiles;
|
|
|
+
|
|
|
@Metric("GetImageServlet getEdit")
|
|
|
MutableRate getEdit;
|
|
|
@Metric("GetImageServlet getImage")
|
|
@@ -153,7 +166,11 @@ public class NameNodeMetrics {
|
|
|
generateEDEKTimeQuantiles = new MutableQuantiles[len];
|
|
|
warmUpEDEKTimeQuantiles = new MutableQuantiles[len];
|
|
|
resourceCheckTimeQuantiles = new MutableQuantiles[len];
|
|
|
-
|
|
|
+ editLogTailTimeQuantiles = new MutableQuantiles[len];
|
|
|
+ editLogFetchTimeQuantiles = new MutableQuantiles[len];
|
|
|
+ numEditLogLoadedQuantiles = new MutableQuantiles[len];
|
|
|
+ editLogTailIntervalQuantiles = new MutableQuantiles[len];
|
|
|
+
|
|
|
for (int i = 0; i < len; i++) {
|
|
|
int interval = intervals[i];
|
|
|
syncsQuantiles[i] = registry.newQuantiles(
|
|
@@ -174,6 +191,18 @@ public class NameNodeMetrics {
|
|
|
resourceCheckTimeQuantiles[i] = registry.newQuantiles(
|
|
|
"resourceCheckTime" + interval + "s",
|
|
|
"resource check time", "ops", "latency", interval);
|
|
|
+ editLogTailTimeQuantiles[i] = registry.newQuantiles(
|
|
|
+ "editLogTailTime" + interval + "s",
|
|
|
+ "Edit log tailing time", "ops", "latency", interval);
|
|
|
+ editLogFetchTimeQuantiles[i] = registry.newQuantiles(
|
|
|
+ "editLogFetchTime" + interval + "s",
|
|
|
+ "Edit log fetch time", "ops", "latency", interval);
|
|
|
+ numEditLogLoadedQuantiles[i] = registry.newQuantiles(
|
|
|
+ "numEditLogLoaded" + interval + "s",
|
|
|
+ "Number of edits loaded", "ops", "count", interval);
|
|
|
+ editLogTailIntervalQuantiles[i] = registry.newQuantiles(
|
|
|
+ "editLogTailInterval" + interval + "s",
|
|
|
+ "Edit log tailing interval", "ops", "latency", interval);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -379,4 +408,32 @@ public class NameNodeMetrics {
|
|
|
q.add(latency);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public void addEditLogTailTime(long elapsed) {
|
|
|
+ editLogTailTime.add(elapsed);
|
|
|
+ for (MutableQuantiles q : editLogTailTimeQuantiles) {
|
|
|
+ q.add(elapsed);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addEditLogFetchTime(long elapsed) {
|
|
|
+ editLogFetchTime.add(elapsed);
|
|
|
+ for (MutableQuantiles q : editLogFetchTimeQuantiles) {
|
|
|
+ q.add(elapsed);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addNumEditLogLoaded(long loaded) {
|
|
|
+ numEditLogLoaded.add(loaded);
|
|
|
+ for (MutableQuantiles q : numEditLogLoadedQuantiles) {
|
|
|
+ q.add(loaded);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addEditLogTailInterval(long elapsed) {
|
|
|
+ editLogTailInterval.add(elapsed);
|
|
|
+ for (MutableQuantiles q : editLogTailIntervalQuantiles) {
|
|
|
+ q.add(elapsed);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|