You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by el...@apache.org on 2014/12/05 00:25:53 UTC

accumulo git commit: Lift lots of constants into a single place. Make avgFilesPerTablet a gauge and not a stat so we get the double value.

Repository: accumulo
Updated Branches:
  refs/heads/metrics2-backwardscompat e199f1b1d -> 43df5e7fc


Lift lots of constants into a single place. Make avgFilesPerTablet a gauge and not a stat so we get the double value.


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/43df5e7f
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/43df5e7f
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/43df5e7f

Branch: refs/heads/metrics2-backwardscompat
Commit: 43df5e7fc2a5c1d639965eaf6fbf86849829560a
Parents: e199f1b
Author: Josh Elser <el...@apache.org>
Authored: Thu Dec 4 18:25:14 2014 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Thu Dec 4 18:25:14 2014 -0500

----------------------------------------------------------------------
 .../apache/accumulo/server/metrics/Metrics.java |   3 +
 .../server/metrics/Metrics2ThriftMetrics.java   |   7 +-
 .../accumulo/server/metrics/MetricsFactory.java |   3 +-
 .../server/metrics/ThriftMetricsMBean.java      |  25 ++-
 .../master/metrics/MasterMetricsFactory.java    |   3 +-
 .../apache/accumulo/tserver/TabletServer.java   |  22 +--
 .../metrics/Metrics2TabletServerMetrics.java    | 153 +++----------------
 .../Metrics2TabletServerMinCMetrics.java        |  22 +--
 .../Metrics2TabletServerScanMetrics.java        |  18 ++-
 .../Metrics2TabletServerUpdateMetrics.java      |  58 +++----
 .../tserver/metrics/TabletServerMBeanImpl.java  |  79 +++-------
 .../metrics/TabletServerMetricsFactory.java     |  17 ++-
 .../metrics/TabletServerMinCMetrics.java        |  16 +-
 .../metrics/TabletServerMinCMetricsMBean.java   |  25 ++-
 .../metrics/TabletServerScanMetrics.java        |  20 +--
 .../metrics/TabletServerScanMetricsMBean.java   |  25 ++-
 .../metrics/TabletServerUpdateMetrics.java      |  50 +++---
 .../metrics/TabletServerUpdateMetricsMBean.java |  48 +++---
 .../apache/accumulo/tserver/tablet/Tablet.java  |   4 +-
 19 files changed, 224 insertions(+), 374 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics.java b/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics.java
index 6c79b28..ef0a1d5 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics.java
@@ -20,6 +20,9 @@ package org.apache.accumulo.server.metrics;
  *
  */
 public interface Metrics {
+
+  String PREFIX = "Accumulo";
+
   void register() throws Exception;
 
   void add(String name, long time);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics2ThriftMetrics.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics2ThriftMetrics.java b/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics2ThriftMetrics.java
index f0b091f..b7330e3 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics2ThriftMetrics.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/metrics/Metrics2ThriftMetrics.java
@@ -26,14 +26,15 @@ import org.apache.hadoop.metrics2.lib.MetricsRegistry;
 /**
  *
  */
-public class Metrics2ThriftMetrics implements Metrics, MetricsSource {
+public class Metrics2ThriftMetrics implements Metrics, MetricsSource, ThriftMetricsKeys {
 
   private final MetricsSystem system;
   private final MetricsRegistry registry;
-  private final String name, desc;
+  private final String context, name, desc;
 
   Metrics2ThriftMetrics(MetricsSystem system, String serverName, String threadName) {
     this.system = system;
+    this.context = "thrift." + serverName;
     this.name = "ThriftMetrics" + serverName;
     this.desc = "Thrift Server Metrics - " + serverName + " " + threadName;
     this.registry = new MetricsRegistry(Interns.info(name, desc));
@@ -56,7 +57,7 @@ public class Metrics2ThriftMetrics implements Metrics, MetricsSource {
 
   @Override
   public void getMetrics(MetricsCollector collector, boolean all) {
-    MetricsRecordBuilder builder = collector.addRecord("Accumulo").setContext("thrift");
+    MetricsRecordBuilder builder = collector.addRecord("Accumulo").setContext(context);
 
     registry.snapshot(builder, all);
   }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/base/src/main/java/org/apache/accumulo/server/metrics/MetricsFactory.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/metrics/MetricsFactory.java b/server/base/src/main/java/org/apache/accumulo/server/metrics/MetricsFactory.java
index 6a5a539..7c06971 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/metrics/MetricsFactory.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/metrics/MetricsFactory.java
@@ -27,7 +27,6 @@ import com.google.common.base.Preconditions;
  *
  */
 public class MetricsFactory {
-  public static final String METRICS_PREFIX = "Accumulo";
 
   private final boolean useOldMetrics;
   private final MetricsSystem metricsSystem;
@@ -39,7 +38,7 @@ public class MetricsFactory {
     if (useOldMetrics) {
       metricsSystem = null;
     } else {
-      metricsSystem = DefaultMetricsSystem.initialize(METRICS_PREFIX);
+      metricsSystem = DefaultMetricsSystem.initialize(Metrics.PREFIX);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/base/src/main/java/org/apache/accumulo/server/metrics/ThriftMetricsMBean.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/metrics/ThriftMetricsMBean.java b/server/base/src/main/java/org/apache/accumulo/server/metrics/ThriftMetricsMBean.java
index 403cffe..101c7d7 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/metrics/ThriftMetricsMBean.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/metrics/ThriftMetricsMBean.java
@@ -16,27 +16,24 @@
  */
 package org.apache.accumulo.server.metrics;
 
-public interface ThriftMetricsMBean {
-  
-  static final String idle = "idle";
-  static final String execute = "execute";
-  
+public interface ThriftMetricsMBean extends ThriftMetricsKeys {
+
   long getIdleCount();
-  
+
   long getIdleMinTime();
-  
+
   long getIdleMaxTime();
-  
+
   long getIdleAvgTime();
-  
+
   long getExecutionCount();
-  
+
   long getExecutionMinTime();
-  
+
   long getExecutionMaxTime();
-  
+
   long getExecutionAvgTime();
-  
+
   void reset();
-  
+
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/master/src/main/java/org/apache/accumulo/master/metrics/MasterMetricsFactory.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/metrics/MasterMetricsFactory.java b/server/master/src/main/java/org/apache/accumulo/master/metrics/MasterMetricsFactory.java
index 606b85c..6d86d09 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/metrics/MasterMetricsFactory.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/metrics/MasterMetricsFactory.java
@@ -29,7 +29,6 @@ import com.google.common.base.Preconditions;
  *
  */
 public class MasterMetricsFactory {
-  public static final String METRICS_PREFIX = "Accumulo";
 
   private final boolean useOldMetrics;
   private final MetricsSystem metricsSystem;
@@ -43,7 +42,7 @@ public class MasterMetricsFactory {
     if (useOldMetrics) {
       metricsSystem = null;
     } else {
-      metricsSystem = DefaultMetricsSystem.initialize(METRICS_PREFIX);
+      metricsSystem = DefaultMetricsSystem.initialize(Metrics.PREFIX);
     }
   }
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
index 11bfe15..8546c47 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
@@ -533,8 +533,8 @@ public class TabletServer extends AccumuloServerContext implements Runnable {
         log.debug(String.format("ScanSess tid %s %s %,d entries in %.2f secs, nbTimes = [%s] ", TServerUtils.clientAddress.get(), ss.extent.getTableId()
             .toString(), ss.entriesReturned, (t2 - ss.startTime) / 1000.0, ss.nbTimes.toString()));
         if (scanMetrics.isEnabled()) {
-          scanMetrics.add(TabletServerScanMetrics.scan, t2 - ss.startTime);
-          scanMetrics.add(TabletServerScanMetrics.resultSize, ss.entriesReturned);
+          scanMetrics.add(TabletServerScanMetrics.SCAN, t2 - ss.startTime);
+          scanMetrics.add(TabletServerScanMetrics.RESULT_SIZE, ss.entriesReturned);
         }
       }
     }
@@ -656,7 +656,7 @@ public class TabletServer extends AccumuloServerContext implements Runnable {
       Durability durability = DurabilityImpl.fromThrift(tdurabilty);
       security.authenticateUser(credentials, credentials);
       if (updateMetrics.isEnabled())
-        updateMetrics.add(TabletServerUpdateMetrics.permissionErrors, 0);
+        updateMetrics.add(TabletServerUpdateMetrics.PERMISSION_ERRORS, 0);
 
       UpdateSession us = new UpdateSession(new TservConstraintEnv(security, credentials), credentials, durability);
       long sid = sessionManager.createSession(us, false);
@@ -688,7 +688,7 @@ public class TabletServer extends AccumuloServerContext implements Runnable {
             // failures
             us.failures.put(keyExtent, 0l);
             if (updateMetrics.isEnabled())
-              updateMetrics.add(TabletServerUpdateMetrics.unknownTabletErrors, 0);
+              updateMetrics.add(TabletServerUpdateMetrics.UNKNOWN_TABLET_ERRORS, 0);
           }
         } else {
           log.warn("Denying access to table " + keyExtent.getTableId() + " for user " + us.getUser());
@@ -697,7 +697,7 @@ public class TabletServer extends AccumuloServerContext implements Runnable {
           us.currentTablet = null;
           us.authFailures.put(keyExtent, SecurityErrorCode.PERMISSION_DENIED);
           if (updateMetrics.isEnabled())
-            updateMetrics.add(TabletServerUpdateMetrics.permissionErrors, 0);
+            updateMetrics.add(TabletServerUpdateMetrics.PERMISSION_ERRORS, 0);
           return;
         }
       } catch (ThriftSecurityException e) {
@@ -707,7 +707,7 @@ public class TabletServer extends AccumuloServerContext implements Runnable {
         us.currentTablet = null;
         us.authFailures.put(keyExtent, e.getCode());
         if (updateMetrics.isEnabled())
-          updateMetrics.add(TabletServerUpdateMetrics.permissionErrors, 0);
+          updateMetrics.add(TabletServerUpdateMetrics.PERMISSION_ERRORS, 0);
         return;
       }
     }
@@ -769,7 +769,7 @@ public class TabletServer extends AccumuloServerContext implements Runnable {
           if (mutations.size() > 0) {
             try {
               if (updateMetrics.isEnabled())
-                updateMetrics.add(TabletServerUpdateMetrics.mutationArraySize, mutations.size());
+                updateMetrics.add(TabletServerUpdateMetrics.MUTATION_ARRAY_SIZE, mutations.size());
 
               CommitSession commitSession = tablet.prepareMutationsForCommit(us.cenv, mutations);
               if (commitSession == null) {
@@ -785,7 +785,7 @@ public class TabletServer extends AccumuloServerContext implements Runnable {
             } catch (TConstraintViolationException e) {
               us.violations.add(e.getViolations());
               if (updateMetrics.isEnabled())
-                updateMetrics.add(TabletServerUpdateMetrics.constraintViolations, 0);
+                updateMetrics.add(TabletServerUpdateMetrics.CONSTRAINT_VIOLATIONS, 0);
 
               if (e.getNonViolators().size() > 0) {
                 // only log and commit mutations if there were some
@@ -888,17 +888,17 @@ public class TabletServer extends AccumuloServerContext implements Runnable {
 
     private void updateWalogWriteTime(long time) {
       if (updateMetrics.isEnabled())
-        updateMetrics.add(TabletServerUpdateMetrics.waLogWriteTime, time);
+        updateMetrics.add(TabletServerUpdateMetrics.WALOG_WRITE_TIME, time);
     }
 
     private void updateAvgCommitTime(long time, int size) {
       if (updateMetrics.isEnabled())
-        updateMetrics.add(TabletServerUpdateMetrics.commitTime, (long) ((time) / (double) size));
+        updateMetrics.add(TabletServerUpdateMetrics.COMMIT_TIME, (long) ((time) / (double) size));
     }
 
     private void updateAvgPrepTime(long time, int size) {
       if (updateMetrics.isEnabled())
-        updateMetrics.add(TabletServerUpdateMetrics.commitPrep, (long) ((time) / (double) size));
+        updateMetrics.add(TabletServerUpdateMetrics.COMMIT_PREP, (long) ((time) / (double) size));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerMetrics.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerMetrics.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerMetrics.java
index 8d47ba7..1ab2319 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerMetrics.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerMetrics.java
@@ -18,7 +18,6 @@ package org.apache.accumulo.tserver.metrics;
 
 import org.apache.accumulo.server.metrics.Metrics;
 import org.apache.accumulo.tserver.TabletServer;
-import org.apache.accumulo.tserver.tablet.Tablet;
 import org.apache.hadoop.metrics2.MetricsCollector;
 import org.apache.hadoop.metrics2.MetricsRecordBuilder;
 import org.apache.hadoop.metrics2.MetricsSource;
@@ -26,30 +25,25 @@ import org.apache.hadoop.metrics2.MetricsSystem;
 import org.apache.hadoop.metrics2.lib.Interns;
 import org.apache.hadoop.metrics2.lib.MetricsRegistry;
 import org.apache.hadoop.metrics2.lib.MutableGaugeLong;
-import org.apache.hadoop.metrics2.lib.MutableStat;
 
 /**
  *
  */
-public class Metrics2TabletServerMetrics implements Metrics, MetricsSource {
-  public static final String ENTRIES = "entries", ENTRIES_IN_MEM = "entriesInMem", HOLD_TIME = "holdTime", FILES_PER_TABLET = "filesPerTablet",
-      ACTIVE_MAJCS = "activeMajCs", QUEUED_MAJCS = "queuedMajCs", ACTIVE_MINCS = "activeMinCs", QUEUED_MINCS = "queuedMinCs", ONLINE_TABLETS = "onlineTablets",
-      OPENING_TABLETS = "openingTablets", UNOPENED_TABLETS = "unopenedTablets", QUERIES = "queries", TOTAL_MINCS = "totalMinCs";
+public class Metrics2TabletServerMetrics implements Metrics, MetricsSource, TabletServerMetricsKeys {
+  public static final String NAME = "TabletServerMetrics", DESCRIPTION = "General TabletServer Metrics", CONTEXT = "tserver";
 
-  private final TabletServer tserver;
+  private final TabletServerMetricsUtil util;
   private final MetricsSystem system;
   private final MetricsRegistry registry;
 
-  private final MutableStat filesPerTablet;
   private final MutableGaugeLong entries, entriesInMemory, activeMajcs, queuedMajcs, activeMincs, queuedMincs, onlineTablets, openingTablets, unopenedTablets,
       queries, totalMincs;
 
+  // Use TabletServerMetricsFactory
   Metrics2TabletServerMetrics(TabletServer tserver, MetricsSystem system) {
-    this.tserver = tserver;
+    util = new TabletServerMetricsUtil(tserver);
     this.system = system;
-    this.registry = new MetricsRegistry(Interns.info("TabletServerMetrics", "General TabletServer Metrics"));
-
-    filesPerTablet = registry.newStat(FILES_PER_TABLET, "Number of files per tablet", "Ops", "Files", true);
+    this.registry = new MetricsRegistry(Interns.info(NAME, DESCRIPTION));
 
     entries = registry.newGauge(Interns.info(ENTRIES, "Number of entries"), 0l);
     entriesInMemory = registry.newGauge(Interns.info(ENTRIES_IN_MEM, "Number of entries in memory"), 0l);
@@ -71,7 +65,7 @@ public class Metrics2TabletServerMetrics implements Metrics, MetricsSource {
 
   @Override
   public void register() {
-    system.register("TabletServerMetrics", "General TabletServer Metrics", this);
+    system.register(NAME, DESCRIPTION, this);
   }
 
   @Override
@@ -80,24 +74,23 @@ public class Metrics2TabletServerMetrics implements Metrics, MetricsSource {
   }
 
   protected void snapshot() {
-    filesPerTablet.add((long) getAverageFilesPerTablet());
-
-    entries.set(getEntries());
-    entriesInMemory.set(getEntriesInMemory());
-    activeMajcs.set(getMajorCompactions());
-    queuedMajcs.set(getMajorCompactionsQueued());
-    activeMincs.set(getMinorCompactions());
-    queuedMincs.set(getMinorCompactionsQueued());
-    onlineTablets.set(getOnlineCount());
-    openingTablets.set(getOpeningCount());
-    unopenedTablets.set(getUnopenedCount());
-    queries.set(getQueries());
-    totalMincs.set(getTotalMinorCompactions());
+
+    entries.set(util.getEntries());
+    entriesInMemory.set(util.getEntriesInMemory());
+    activeMajcs.set(util.getMajorCompactions());
+    queuedMajcs.set(util.getMajorCompactionsQueued());
+    activeMincs.set(util.getMinorCompactions());
+    queuedMincs.set(util.getMinorCompactionsQueued());
+    onlineTablets.set(util.getOnlineCount());
+    openingTablets.set(util.getOpeningCount());
+    unopenedTablets.set(util.getUnopenedCount());
+    queries.set(util.getQueries());
+    totalMincs.set(util.getTotalMinorCompactions());
   }
 
   @Override
   public void getMetrics(MetricsCollector collector, boolean all) {
-    MetricsRecordBuilder builder = collector.addRecord("Accumulo").setContext("tserver");
+    MetricsRecordBuilder builder = collector.addRecord(PREFIX).setContext(CONTEXT);
 
     // Update each MutableMetric with the new value
     snapshot();
@@ -106,110 +99,8 @@ public class Metrics2TabletServerMetrics implements Metrics, MetricsSource {
     registry.snapshot(builder, all);
 
     // TODO Some day, MetricsRegistry will also support the MetricsGaugeDouble or allow us to instantiate it directly
-    builder.addGauge(Interns.info(HOLD_TIME, "Time commits held"), getHoldTime());
-  }
-
-  public long getEntries() {
-    long result = 0;
-    for (Tablet tablet : tserver.getOnlineTablets()) {
-      result += tablet.getNumEntries();
-    }
-    return result;
-  }
-
-  public long getEntriesInMemory() {
-    long result = 0;
-    for (Tablet tablet : tserver.getOnlineTablets()) {
-      result += tablet.getNumEntriesInMemory();
-    }
-    return result;
-  }
-
-  public long getIngest() {
-    long result = 0;
-    for (Tablet tablet : tserver.getOnlineTablets()) {
-      result += tablet.getNumEntriesInMemory();
-    }
-    return result;
-  }
-
-  public int getMajorCompactions() {
-    int result = 0;
-    for (Tablet tablet : tserver.getOnlineTablets()) {
-      if (tablet.isMajorCompactionRunning())
-        result++;
-    }
-    return result;
-  }
-
-  public int getMajorCompactionsQueued() {
-    int result = 0;
-    for (Tablet tablet : tserver.getOnlineTablets()) {
-      if (tablet.isMajorCompactionQueued())
-        result++;
-    }
-    return result;
-  }
-
-  public int getMinorCompactions() {
-    int result = 0;
-    for (Tablet tablet : tserver.getOnlineTablets()) {
-      if (tablet.isMinorCompactionRunning())
-        result++;
-    }
-    return result;
-  }
-
-  public int getMinorCompactionsQueued() {
-    int result = 0;
-    for (Tablet tablet : tserver.getOnlineTablets()) {
-      if (tablet.isMinorCompactionQueued())
-        result++;
-    }
-    return result;
+    builder.addGauge(Interns.info(FILES_PER_TABLET, "Number of files per tablet"), util.getAverageFilesPerTablet());
+    builder.addGauge(Interns.info(HOLD_TIME, "Time commits held"), util.getHoldTime());
   }
 
-  public int getOnlineCount() {
-    return tserver.getOnlineTablets().size();
-  }
-
-  public int getOpeningCount() {
-    return tserver.getOpeningCount();
-  }
-
-  public long getQueries() {
-    long result = 0;
-    for (Tablet tablet : tserver.getOnlineTablets()) {
-      result += tablet.totalQueries();
-    }
-    return result;
-  }
-
-  public int getUnopenedCount() {
-    return tserver.getUnopenedCount();
-  }
-
-  public String getName() {
-    return tserver.getClientAddressString();
-  }
-
-  public long getTotalMinorCompactions() {
-    return tserver.getTotalMinorCompactions();
-  }
-
-  public double getHoldTime() {
-    return tserver.getHoldTimeMillis() / 1000.;
-  }
-
-  public double getAverageFilesPerTablet() {
-    int count = 0;
-    long result = 0;
-    for (Tablet tablet : tserver.getOnlineTablets()) {
-      result += tablet.getDatafiles().size();
-      count++;
-    }
-    if (count == 0)
-      return 0;
-    return result / (double) count;
-  }
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerMinCMetrics.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerMinCMetrics.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerMinCMetrics.java
index 8facaeb..11af88b 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerMinCMetrics.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerMinCMetrics.java
@@ -28,32 +28,34 @@ import org.apache.hadoop.metrics2.lib.MutableStat;
 /**
  *
  */
-public class Metrics2TabletServerMinCMetrics implements Metrics, MetricsSource {
+public class Metrics2TabletServerMinCMetrics implements Metrics, MetricsSource, TabletServerMinCMetricsKeys {
+  public static final String NAME = "MinorCompactionMetrics", DESCRIPTION = "TabletServer Minor Compaction Metrics", CONTEXT = "tserver.minc";
 
   private final MetricsSystem system;
   private final MetricsRegistry registry;
   private final MutableStat activeMinc, queuedMinc;
 
-  public Metrics2TabletServerMinCMetrics(MetricsSystem system) {
+  // Use TabletServerMetricsFactory
+  Metrics2TabletServerMinCMetrics(MetricsSystem system) {
     this.system = system;
-    this.registry = new MetricsRegistry(Interns.info("MinorCompactionMetrics", "TabletServer Minor Compaction Metrics"));
-    
-    activeMinc = registry.newStat(TabletServerMinCMetricsMBean.minc, "Minor compactions", "Ops", "Count", true);
-    queuedMinc = registry.newStat(TabletServerMinCMetricsMBean.queue, "Queued minor compactions", "Ops", "Count", true);
+    this.registry = new MetricsRegistry(Interns.info(NAME, DESCRIPTION));
+
+    activeMinc = registry.newStat(MINC, "Minor compactions", "Ops", "Count", true);
+    queuedMinc = registry.newStat(QUEUE, "Queued minor compactions", "Ops", "Count", true);
   }
 
   @Override
   public void add(String name, long value) {
-    if (TabletServerMinCMetricsMBean.minc.equals(name)) {
+    if (MINC.equals(name)) {
       activeMinc.add(value);
-    } else if (TabletServerMinCMetricsMBean.queue.equals(name)) {
+    } else if (QUEUE.equals(name)) {
       queuedMinc.add(value);
     }
   }
 
   @Override
   public void register() {
-    system.register("MinorCompactionMetrics", "TabletServer Minor Compaction Metrics", this);
+    system.register(NAME, DESCRIPTION, this);
   }
 
   @Override
@@ -63,7 +65,7 @@ public class Metrics2TabletServerMinCMetrics implements Metrics, MetricsSource {
 
   @Override
   public void getMetrics(MetricsCollector collector, boolean all) {
-    MetricsRecordBuilder builder = collector.addRecord("Accumulo").setContext("tserver.minc");
+    MetricsRecordBuilder builder = collector.addRecord(PREFIX).setContext(CONTEXT);
 
     registry.snapshot(builder, all);
   }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerScanMetrics.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerScanMetrics.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerScanMetrics.java
index e2ab687..bca7f9c 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerScanMetrics.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerScanMetrics.java
@@ -28,25 +28,27 @@ import org.apache.hadoop.metrics2.lib.MutableStat;
 /**
  *
  */
-public class Metrics2TabletServerScanMetrics implements Metrics, MetricsSource {
+public class Metrics2TabletServerScanMetrics implements Metrics, MetricsSource, TabletServerScanMetricsKeys {
+  public static final String NAME = "ScanMetrics", DESCRIPTION = "TabletServer Scan Metrics", CONTEXT = "tserver.scan";
 
   private final MetricsSystem system;
   private final MetricsRegistry registry;
   private final MutableStat scans, resultsPerScan;
 
+  // Use TabletServerMetricsFactory
   Metrics2TabletServerScanMetrics(MetricsSystem system) {
     this.system = system;
-    this.registry = new MetricsRegistry(Interns.info("ScanMetrics", "TabletServer Scan Metrics"));
+    this.registry = new MetricsRegistry(Interns.info(NAME, DESCRIPTION));
 
-    scans = registry.newStat(TabletServerScanMetricsMBean.scan, "Scans", "Ops", "Count", true);
-    resultsPerScan = registry.newStat(TabletServerScanMetricsMBean.resultSize, "Results per scan", "Ops", "Count", true);
+    scans = registry.newStat(SCAN, "Scans", "Ops", "Count", true);
+    resultsPerScan = registry.newStat(RESULT_SIZE, "Results per scan", "Ops", "Count", true);
   }
 
   @Override
   public void add(String name, long value) {
-    if (TabletServerScanMetricsMBean.scan.equals(name)) {
+    if (SCAN.equals(name)) {
       scans.add(value);
-    } else if (TabletServerScanMetricsMBean.resultSize.equals(name)) {
+    } else if (RESULT_SIZE.equals(name)) {
       resultsPerScan.add(value);
     } else {
       throw new RuntimeException("Could not find metric to update for name " + name);
@@ -55,7 +57,7 @@ public class Metrics2TabletServerScanMetrics implements Metrics, MetricsSource {
 
   @Override
   public void register() {
-    system.register("ScanMetrics", "TabletServer Scan Metrics", this);
+    system.register(NAME, DESCRIPTION, this);
   }
 
   @Override
@@ -65,7 +67,7 @@ public class Metrics2TabletServerScanMetrics implements Metrics, MetricsSource {
 
   @Override
   public void getMetrics(MetricsCollector collector, boolean all) {
-    MetricsRecordBuilder builder = collector.addRecord("Accumulo").setContext("tserver.scan");
+    MetricsRecordBuilder builder = collector.addRecord(PREFIX).setContext(CONTEXT);
 
     registry.snapshot(builder, all);
   }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerUpdateMetrics.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerUpdateMetrics.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerUpdateMetrics.java
index f883b60..916c616 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerUpdateMetrics.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/Metrics2TabletServerUpdateMetrics.java
@@ -29,44 +29,46 @@ import org.apache.hadoop.metrics2.lib.MutableStat;
 /**
  *
  */
-public class Metrics2TabletServerUpdateMetrics implements Metrics, MetricsSource {
+public class Metrics2TabletServerUpdateMetrics implements Metrics, MetricsSource, TabletServerUpdateMetricsKeys {
+  public static final String NAME = "UpdateMetrics", DESCRIPTION = "TabletServer Update Metrics", CONTEXT = "tserver.update";
 
   private final MetricsSystem system;
   private final MetricsRegistry registry;
 
-  private final MutableCounterLong permissionErrors, unknownTabletErrors, constraintViolations;
-  private final MutableStat commitPrep, walogWriteTime, commitTime, mutationArraySize;
+  private final MutableCounterLong permissionErrorsCounter, unknownTabletErrorsCounter, constraintViolationsCounter;
+  private final MutableStat commitPrepStat, walogWriteTimeStat, commitTimeStat, mutationArraySizeStat;
 
-  public Metrics2TabletServerUpdateMetrics(MetricsSystem system) {
+  // Use TabletServerMetricsFactory
+  Metrics2TabletServerUpdateMetrics(MetricsSystem system) {
     this.system = system;
-    this.registry = new MetricsRegistry(Interns.info("UpdateMetrics", "TabletServer Update Metrics"));
+    this.registry = new MetricsRegistry(Interns.info(NAME, DESCRIPTION));
 
-    permissionErrors = registry.newCounter(Interns.info(TabletServerUpdateMetricsMBean.permissionErrors, "Permission Errors"), 0l);
-    unknownTabletErrors = registry.newCounter(Interns.info(TabletServerUpdateMetricsMBean.unknownTabletErrors, "Unknown Tablet Errors"), 0l);
-    constraintViolations = registry.newCounter(Interns.info(TabletServerUpdateMetricsMBean.constraintViolations, "Table Constraint Violations"), 0l);
+    permissionErrorsCounter = registry.newCounter(Interns.info(PERMISSION_ERRORS, "Permission Errors"), 0l);
+    unknownTabletErrorsCounter = registry.newCounter(Interns.info(UNKNOWN_TABLET_ERRORS, "Unknown Tablet Errors"), 0l);
+    constraintViolationsCounter = registry.newCounter(Interns.info(CONSTRAINT_VIOLATIONS, "Table Constraint Violations"), 0l);
 
-    commitPrep = registry.newStat(TabletServerUpdateMetricsMBean.commitPrep, "preparing to commit mutations", "Ops", "Time", true);
-    walogWriteTime = registry.newStat(TabletServerUpdateMetricsMBean.waLogWriteTime, "writing mutations to WAL", "Ops", "Time", true);
-    commitTime = registry.newStat(TabletServerUpdateMetricsMBean.commitTime, "committing mutations", "Ops", "Time", true);
-    mutationArraySize = registry.newStat(TabletServerUpdateMetricsMBean.mutationArraySize, "mutation array", "ops", "Size", true);
+    commitPrepStat = registry.newStat(COMMIT_PREP, "preparing to commit mutations", "Ops", "Time", true);
+    walogWriteTimeStat = registry.newStat(WALOG_WRITE_TIME, "writing mutations to WAL", "Ops", "Time", true);
+    commitTimeStat = registry.newStat(COMMIT_TIME, "committing mutations", "Ops", "Time", true);
+    mutationArraySizeStat = registry.newStat(MUTATION_ARRAY_SIZE, "mutation array", "ops", "Size", true);
   }
 
   @Override
   public void add(String name, long value) {
-    if (TabletServerUpdateMetricsMBean.permissionErrors.equals(name)) {
-      permissionErrors.incr(value);
-    } else if (TabletServerUpdateMetricsMBean.unknownTabletErrors.equals(name)) {
-      unknownTabletErrors.incr(value);
-    } else if (TabletServerUpdateMetricsMBean.mutationArraySize.equals(name)) {
-      mutationArraySize.add(value);
-    } else if (TabletServerUpdateMetricsMBean.commitPrep.equals(name)) {
-      commitPrep.add(value);
-    } else if (TabletServerUpdateMetricsMBean.constraintViolations.equals(name)) {
-      constraintViolations.incr(value);
-    } else if (TabletServerUpdateMetricsMBean.waLogWriteTime.equals(name)) {
-      walogWriteTime.add(value);
-    } else if (TabletServerUpdateMetricsMBean.commitTime.equals(name)) {
-      commitTime.add(value);
+    if (PERMISSION_ERRORS.equals(name)) {
+      permissionErrorsCounter.incr(value);
+    } else if (UNKNOWN_TABLET_ERRORS.equals(name)) {
+      unknownTabletErrorsCounter.incr(value);
+    } else if (MUTATION_ARRAY_SIZE.equals(name)) {
+      mutationArraySizeStat.add(value);
+    } else if (COMMIT_PREP.equals(name)) {
+      commitPrepStat.add(value);
+    } else if (CONSTRAINT_VIOLATIONS.equals(name)) {
+      constraintViolationsCounter.incr(value);
+    } else if (WALOG_WRITE_TIME.equals(name)) {
+      walogWriteTimeStat.add(value);
+    } else if (COMMIT_TIME.equals(name)) {
+      commitTimeStat.add(value);
     } else {
       throw new RuntimeException("Cannot process metric with name " + name);
     }
@@ -74,7 +76,7 @@ public class Metrics2TabletServerUpdateMetrics implements Metrics, MetricsSource
 
   @Override
   public void register() {
-    system.register("UpdateMetrics", "TabletServer Update Metrics", this);
+    system.register(NAME, DESCRIPTION, this);
   }
 
   @Override
@@ -84,7 +86,7 @@ public class Metrics2TabletServerUpdateMetrics implements Metrics, MetricsSource
 
   @Override
   public void getMetrics(MetricsCollector collector, boolean all) {
-    MetricsRecordBuilder builder = collector.addRecord("Accumulo").setContext("tserver.update");
+    MetricsRecordBuilder builder = collector.addRecord(PREFIX).setContext(CONTEXT);
 
     registry.snapshot(builder, all);
   }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMBeanImpl.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMBeanImpl.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMBeanImpl.java
index 8ba853f..b472065 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMBeanImpl.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMBeanImpl.java
@@ -22,7 +22,6 @@ import javax.management.StandardMBean;
 
 import org.apache.accumulo.server.metrics.AbstractMetricsImpl;
 import org.apache.accumulo.tserver.TabletServer;
-import org.apache.accumulo.tserver.tablet.Tablet;
 import org.apache.log4j.Logger;
 
 public class TabletServerMBeanImpl extends AbstractMetricsImpl implements TabletServerMBean {
@@ -30,10 +29,10 @@ public class TabletServerMBeanImpl extends AbstractMetricsImpl implements Tablet
   private static final String METRICS_PREFIX = "tserver";
   private static ObjectName OBJECT_NAME = null;
 
-  final TabletServer server;
+  private final TabletServerMetricsUtil util;
 
   TabletServerMBeanImpl(TabletServer server) {
-    this.server = server;
+    util = new TabletServerMetricsUtil(server);
     try {
       OBJECT_NAME = new ObjectName("accumulo.server.metrics:service=TServerInfo,name=TabletServerMBean,instance=" + Thread.currentThread().getName());
     } catch (MalformedObjectNameException e) {
@@ -51,11 +50,7 @@ public class TabletServerMBeanImpl extends AbstractMetricsImpl implements Tablet
   @Override
   public long getEntries() {
     if (isEnabled()) {
-      long result = 0;
-      for (Tablet tablet : server.getOnlineTablets()) {
-        result += tablet.getNumEntries();
-      }
-      return result;
+      return util.getEntries();
     }
     return 0;
   }
@@ -63,11 +58,7 @@ public class TabletServerMBeanImpl extends AbstractMetricsImpl implements Tablet
   @Override
   public long getEntriesInMemory() {
     if (isEnabled()) {
-      long result = 0;
-      for (Tablet tablet : server.getOnlineTablets()) {
-        result += tablet.getNumEntriesInMemory();
-      }
-      return result;
+      return util.getEntriesInMemory();
     }
     return 0;
   }
@@ -75,11 +66,7 @@ public class TabletServerMBeanImpl extends AbstractMetricsImpl implements Tablet
   @Override
   public long getIngest() {
     if (isEnabled()) {
-      long result = 0;
-      for (Tablet tablet : server.getOnlineTablets()) {
-        result += tablet.getNumEntriesInMemory();
-      }
-      return result;
+      return util.getIngest();
     }
     return 0;
   }
@@ -87,12 +74,7 @@ public class TabletServerMBeanImpl extends AbstractMetricsImpl implements Tablet
   @Override
   public int getMajorCompactions() {
     if (isEnabled()) {
-      int result = 0;
-      for (Tablet tablet : server.getOnlineTablets()) {
-        if (tablet.isMajorCompactionRunning())
-          result++;
-      }
-      return result;
+      return util.getMajorCompactions();
     }
     return 0;
   }
@@ -100,12 +82,7 @@ public class TabletServerMBeanImpl extends AbstractMetricsImpl implements Tablet
   @Override
   public int getMajorCompactionsQueued() {
     if (isEnabled()) {
-      int result = 0;
-      for (Tablet tablet : server.getOnlineTablets()) {
-        if (tablet.isMajorCompactionQueued())
-          result++;
-      }
-      return result;
+      return util.getMajorCompactionsQueued();
     }
     return 0;
   }
@@ -113,12 +90,7 @@ public class TabletServerMBeanImpl extends AbstractMetricsImpl implements Tablet
   @Override
   public int getMinorCompactions() {
     if (isEnabled()) {
-      int result = 0;
-      for (Tablet tablet : server.getOnlineTablets()) {
-        if (tablet.isMinorCompactionRunning())
-          result++;
-      }
-      return result;
+      return util.getMinorCompactions();
     }
     return 0;
   }
@@ -126,12 +98,7 @@ public class TabletServerMBeanImpl extends AbstractMetricsImpl implements Tablet
   @Override
   public int getMinorCompactionsQueued() {
     if (isEnabled()) {
-      int result = 0;
-      for (Tablet tablet : server.getOnlineTablets()) {
-        if (tablet.isMinorCompactionQueued())
-          result++;
-      }
-      return result;
+      return util.getMinorCompactionsQueued();
     }
     return 0;
   }
@@ -139,25 +106,21 @@ public class TabletServerMBeanImpl extends AbstractMetricsImpl implements Tablet
   @Override
   public int getOnlineCount() {
     if (isEnabled())
-      return server.getOnlineTablets().size();
+      return util.getOnlineCount();
     return 0;
   }
 
   @Override
   public int getOpeningCount() {
     if (isEnabled())
-      return server.getOpeningCount();
+      return util.getOpeningCount();
     return 0;
   }
 
   @Override
   public long getQueries() {
     if (isEnabled()) {
-      long result = 0;
-      for (Tablet tablet : server.getOnlineTablets()) {
-        result += tablet.totalQueries();
-      }
-      return result;
+      return util.getQueries();
     }
     return 0;
   }
@@ -165,43 +128,35 @@ public class TabletServerMBeanImpl extends AbstractMetricsImpl implements Tablet
   @Override
   public int getUnopenedCount() {
     if (isEnabled())
-      return server.getUnopenedCount();
+      return util.getUnopenedCount();
     return 0;
   }
 
   @Override
   public String getName() {
     if (isEnabled())
-      return server.getClientAddressString();
+      return util.getName();
     return "";
   }
 
   @Override
   public long getTotalMinorCompactions() {
     if (isEnabled())
-      return server.getTotalMinorCompactions();
+      return util.getTotalMinorCompactions();
     return 0;
   }
 
   @Override
   public double getHoldTime() {
     if (isEnabled())
-      return server.getHoldTimeMillis() / 1000.;
+      return util.getHoldTime();
     return 0;
   }
 
   @Override
   public double getAverageFilesPerTablet() {
     if (isEnabled()) {
-      int count = 0;
-      long result = 0;
-      for (Tablet tablet : server.getOnlineTablets()) {
-        result += tablet.getDatafiles().size();
-        count++;
-      }
-      if (count == 0)
-        return 0;
-      return result / (double) count;
+      return util.getAverageFilesPerTablet();
     }
     return 0;
   }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMetricsFactory.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMetricsFactory.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMetricsFactory.java
index c799feb..7ca9486 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMetricsFactory.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMetricsFactory.java
@@ -26,10 +26,11 @@ import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
 import com.google.common.base.Preconditions;
 
 /**
+ * Factory to create Metrics instances for various TabletServer functions.
  *
+ * Necessary shim to support both the custom JMX metrics from &lt;1.7.0 and the new Hadoop Metrics2 implementations.
  */
 public class TabletServerMetricsFactory {
-  public static final String METRICS_PREFIX = "Accumulo";
 
   private final boolean useOldMetrics;
   private final MetricsSystem metricsSystem;
@@ -41,10 +42,13 @@ public class TabletServerMetricsFactory {
     if (useOldMetrics) {
       metricsSystem = null;
     } else {
-      metricsSystem = DefaultMetricsSystem.initialize(METRICS_PREFIX);
+      metricsSystem = DefaultMetricsSystem.initialize(Metrics.PREFIX);
     }
   }
 
+  /**
+   * Create Metrics to track MinorCompactions
+   */
   public Metrics createMincMetrics() {
     if (useOldMetrics) {
       return new TabletServerMinCMetrics();
@@ -53,6 +57,9 @@ public class TabletServerMetricsFactory {
     return new Metrics2TabletServerMinCMetrics(metricsSystem);
   }
 
+  /**
+   * Create Metrics to track TabletServer state
+   */
   public Metrics createTabletServerMetrics(TabletServer tserver) {
     if (useOldMetrics) {
       return new TabletServerMBeanImpl(tserver);
@@ -61,6 +68,9 @@ public class TabletServerMetricsFactory {
     return new Metrics2TabletServerMetrics(tserver, metricsSystem);
   }
 
+  /**
+   * Create Metrics to track scans
+   */
   public Metrics createScanMetrics() {
     if (useOldMetrics) {
       return new TabletServerScanMetrics();
@@ -69,6 +79,9 @@ public class TabletServerMetricsFactory {
     return new Metrics2TabletServerScanMetrics(metricsSystem);
   }
 
+  /**
+   * Create Metrics to track updates (writes)
+   */
   public Metrics createUpdateMetrics() {
     if (useOldMetrics) {
       return new TabletServerUpdateMetrics();

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMinCMetrics.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMinCMetrics.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMinCMetrics.java
index 733cee9..f4d61ca 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMinCMetrics.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMinCMetrics.java
@@ -50,42 +50,42 @@ public class TabletServerMinCMetrics extends AbstractMetricsImpl implements Tabl
 
   @Override
   public long getMinorCompactionMinTime() {
-    return this.getMetricMin(minc);
+    return this.getMetricMin(MINC);
   }
 
   @Override
   public long getMinorCompactionAvgTime() {
-    return this.getMetricAvg(minc);
+    return this.getMetricAvg(MINC);
   }
 
   @Override
   public long getMinorCompactionCount() {
-    return this.getMetricCount(minc);
+    return this.getMetricCount(MINC);
   }
 
   @Override
   public long getMinorCompactionMaxTime() {
-    return this.getMetricMax(minc);
+    return this.getMetricMax(MINC);
   }
 
   @Override
   public long getMinorCompactionQueueAvgTime() {
-    return this.getMetricAvg(queue);
+    return this.getMetricAvg(QUEUE);
   }
 
   @Override
   public long getMinorCompactionQueueCount() {
-    return this.getMetricCount(queue);
+    return this.getMetricCount(QUEUE);
   }
 
   @Override
   public long getMinorCompactionQueueMaxTime() {
-    return this.getMetricMax(queue);
+    return this.getMetricMax(QUEUE);
   }
 
   @Override
   public long getMinorCompactionQueueMinTime() {
-    return this.getMetricMin(minc);
+    return this.getMetricMin(MINC);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMinCMetricsMBean.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMinCMetricsMBean.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMinCMetricsMBean.java
index 0dc6cf3..2af820c 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMinCMetricsMBean.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerMinCMetricsMBean.java
@@ -16,27 +16,24 @@
  */
 package org.apache.accumulo.tserver.metrics;
 
-public interface TabletServerMinCMetricsMBean {
-  
-  static final String minc = "minc";
-  static final String queue = "queue";
-  
+public interface TabletServerMinCMetricsMBean extends TabletServerMinCMetricsKeys {
+
   long getMinorCompactionCount();
-  
+
   long getMinorCompactionAvgTime();
-  
+
   long getMinorCompactionMinTime();
-  
+
   long getMinorCompactionMaxTime();
-  
+
   long getMinorCompactionQueueCount();
-  
+
   long getMinorCompactionQueueAvgTime();
-  
+
   long getMinorCompactionQueueMinTime();
-  
+
   long getMinorCompactionQueueMaxTime();
-  
+
   void reset();
-  
+
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetrics.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetrics.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetrics.java
index 17d33a8..6bcabfd 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetrics.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetrics.java
@@ -50,48 +50,48 @@ public class TabletServerScanMetrics extends AbstractMetricsImpl implements Tabl
 
   @Override
   public long getResultAvgSize() {
-    return this.getMetricAvg(resultSize);
+    return this.getMetricAvg(RESULT_SIZE);
   }
 
   @Override
   public long getResultCount() {
-    return this.getMetricCount(resultSize);
+    return this.getMetricCount(RESULT_SIZE);
   }
 
   @Override
   public long getResultMaxSize() {
-    return this.getMetricMax(resultSize);
+    return this.getMetricMax(RESULT_SIZE);
   }
 
   @Override
   public long getResultMinSize() {
-    return this.getMetricMin(resultSize);
+    return this.getMetricMin(RESULT_SIZE);
   }
 
   @Override
   public long getScanAvgTime() {
-    return this.getMetricAvg(scan);
+    return this.getMetricAvg(SCAN);
   }
 
   @Override
   public long getScanCount() {
-    return this.getMetricCount(scan);
+    return this.getMetricCount(SCAN);
   }
 
   @Override
   public long getScanMaxTime() {
-    return this.getMetricMax(scan);
+    return this.getMetricMax(SCAN);
   }
 
   @Override
   public long getScanMinTime() {
-    return this.getMetricMin(scan);
+    return this.getMetricMin(SCAN);
   }
 
   @Override
   public void reset() {
-    createMetric(scan);
-    createMetric(resultSize);
+    createMetric(SCAN);
+    createMetric(RESULT_SIZE);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetricsMBean.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetricsMBean.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetricsMBean.java
index b532cfa..e262fc4 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetricsMBean.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerScanMetricsMBean.java
@@ -16,27 +16,24 @@
  */
 package org.apache.accumulo.tserver.metrics;
 
-public interface TabletServerScanMetricsMBean {
-  
-  static final String scan = "scan";
-  static final String resultSize = "result";
-  
+public interface TabletServerScanMetricsMBean extends TabletServerScanMetricsKeys {
+
   long getScanCount();
-  
+
   long getScanAvgTime();
-  
+
   long getScanMinTime();
-  
+
   long getScanMaxTime();
-  
+
   long getResultCount();
-  
+
   long getResultAvgSize();
-  
+
   long getResultMinSize();
-  
+
   long getResultMaxSize();
-  
+
   void reset();
-  
+
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetrics.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetrics.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetrics.java
index bb38655..48b78b0 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetrics.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetrics.java
@@ -51,103 +51,103 @@ public class TabletServerUpdateMetrics extends AbstractMetricsImpl implements Ta
 
   @Override
   public long getPermissionErrorCount() {
-    return this.getMetricCount(permissionErrors);
+    return this.getMetricCount(PERMISSION_ERRORS);
   }
 
   @Override
   public long getUnknownTabletErrorCount() {
-    return this.getMetricCount(unknownTabletErrors);
+    return this.getMetricCount(UNKNOWN_TABLET_ERRORS);
   }
 
   @Override
   public long getMutationArrayAvgSize() {
-    return this.getMetricAvg(mutationArraySize);
+    return this.getMetricAvg(MUTATION_ARRAY_SIZE);
   }
 
   @Override
   public long getMutationArrayMinSize() {
-    return this.getMetricMin(mutationArraySize);
+    return this.getMetricMin(MUTATION_ARRAY_SIZE);
   }
 
   @Override
   public long getMutationArrayMaxSize() {
-    return this.getMetricMax(mutationArraySize);
+    return this.getMetricMax(MUTATION_ARRAY_SIZE);
   }
 
   @Override
   public long getCommitPrepCount() {
-    return this.getMetricCount(commitPrep);
+    return this.getMetricCount(COMMIT_PREP);
   }
 
   @Override
   public long getCommitPrepMinTime() {
-    return this.getMetricMin(commitPrep);
+    return this.getMetricMin(COMMIT_PREP);
   }
 
   @Override
   public long getCommitPrepMaxTime() {
-    return this.getMetricMax(commitPrep);
+    return this.getMetricMax(COMMIT_PREP);
   }
 
   @Override
   public long getCommitPrepAvgTime() {
-    return this.getMetricAvg(commitPrep);
+    return this.getMetricAvg(COMMIT_PREP);
   }
 
   @Override
   public long getConstraintViolationCount() {
-    return this.getMetricCount(constraintViolations);
+    return this.getMetricCount(CONSTRAINT_VIOLATIONS);
   }
 
   @Override
   public long getWALogWriteCount() {
-    return this.getMetricCount(waLogWriteTime);
+    return this.getMetricCount(WALOG_WRITE_TIME);
   }
 
   @Override
   public long getWALogWriteMinTime() {
-    return this.getMetricMin(waLogWriteTime);
+    return this.getMetricMin(WALOG_WRITE_TIME);
   }
 
   @Override
   public long getWALogWriteMaxTime() {
-    return this.getMetricMax(waLogWriteTime);
+    return this.getMetricMax(WALOG_WRITE_TIME);
   }
 
   @Override
   public long getWALogWriteAvgTime() {
-    return this.getMetricAvg(waLogWriteTime);
+    return this.getMetricAvg(WALOG_WRITE_TIME);
   }
 
   @Override
   public long getCommitCount() {
-    return this.getMetricCount(commitTime);
+    return this.getMetricCount(COMMIT_TIME);
   }
 
   @Override
   public long getCommitMinTime() {
-    return this.getMetricMin(commitTime);
+    return this.getMetricMin(COMMIT_TIME);
   }
 
   @Override
   public long getCommitMaxTime() {
-    return this.getMetricMax(commitTime);
+    return this.getMetricMax(COMMIT_TIME);
   }
 
   @Override
   public long getCommitAvgTime() {
-    return this.getMetricAvg(commitTime);
+    return this.getMetricAvg(COMMIT_TIME);
   }
 
   @Override
   public void reset() {
-    createMetric(permissionErrors);
-    createMetric(unknownTabletErrors);
-    createMetric(mutationArraySize);
-    createMetric(commitPrep);
-    createMetric(constraintViolations);
-    createMetric(waLogWriteTime);
-    createMetric(commitTime);
+    createMetric(PERMISSION_ERRORS);
+    createMetric(UNKNOWN_TABLET_ERRORS);
+    createMetric(MUTATION_ARRAY_SIZE);
+    createMetric(COMMIT_PREP);
+    createMetric(CONSTRAINT_VIOLATIONS);
+    createMetric(WALOG_WRITE_TIME);
+    createMetric(COMMIT_TIME);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetricsMBean.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetricsMBean.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetricsMBean.java
index 0292947..867f2f7 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetricsMBean.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/metrics/TabletServerUpdateMetricsMBean.java
@@ -16,51 +16,43 @@
  */
 package org.apache.accumulo.tserver.metrics;
 
-public interface TabletServerUpdateMetricsMBean {
-  
-  final static String permissionErrors = "permissionErrors";
-  final static String unknownTabletErrors = "unknownTabletErrors";
-  final static String mutationArraySize = "mutationArraysSize";
-  final static String commitPrep = "commitPrep";
-  final static String constraintViolations = "constraintViolations";
-  final static String waLogWriteTime = "waLogWriteTime";
-  final static String commitTime = "commitTime";
-  
+public interface TabletServerUpdateMetricsMBean extends TabletServerUpdateMetricsKeys {
+
   long getPermissionErrorCount();
-  
+
   long getUnknownTabletErrorCount();
-  
+
   long getMutationArrayAvgSize();
-  
+
   long getMutationArrayMinSize();
-  
+
   long getMutationArrayMaxSize();
-  
+
   long getCommitPrepCount();
-  
+
   long getCommitPrepMinTime();
-  
+
   long getCommitPrepMaxTime();
-  
+
   long getCommitPrepAvgTime();
-  
+
   long getConstraintViolationCount();
-  
+
   long getWALogWriteCount();
-  
+
   long getWALogWriteMinTime();
-  
+
   long getWALogWriteMaxTime();
-  
+
   long getWALogWriteAvgTime();
-  
+
   long getCommitCount();
-  
+
   long getCommitMinTime();
-  
+
   long getCommitMaxTime();
-  
+
   long getCommitAvgTime();
-  
+
   void reset();
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/43df5e7f/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
index 63bf1bf..288f66e 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java
@@ -974,11 +974,11 @@ public class Tablet implements TabletCommitter {
       }
       Metrics minCMetrics = getTabletServer().getMinCMetrics();
       if (minCMetrics.isEnabled())
-        minCMetrics.add(TabletServerMinCMetrics.minc, (lastMinorCompactionFinishTime - start));
+        minCMetrics.add(TabletServerMinCMetrics.MINC, (lastMinorCompactionFinishTime - start));
       if (hasQueueTime) {
         timer.updateTime(Operation.MINOR, queued, start, count, failed);
         if (minCMetrics.isEnabled())
-          minCMetrics.add(TabletServerMinCMetrics.queue, (start - queued));
+          minCMetrics.add(TabletServerMinCMetrics.QUEUE, (start - queued));
       } else
         timer.updateTime(Operation.MINOR, start, count, failed);
     }