You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by sp...@apache.org on 2023/01/05 07:56:58 UTC

[iotdb] branch rel/1.0 updated: [rel/1.0] [IOTDB-5334] Optimize metric related code and log (#8741)

This is an automated email from the ASF dual-hosted git repository.

spricoder pushed a commit to branch rel/1.0
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/1.0 by this push:
     new 072b7a2631 [rel/1.0] [IOTDB-5334] Optimize metric related code and log (#8741)
072b7a2631 is described below

commit 072b7a2631a430adeacb16a645d054eebf5fad3e
Author: ZhangHongYin <46...@users.noreply.github.com>
AuthorDate: Thu Jan 5 15:56:53 2023 +0800

    [rel/1.0] [IOTDB-5334] Optimize metric related code and log (#8741)
    
    * Update the doc in Dropwizard and Micrometer Implementation
    
    * cherry-pick
    
    * Fix some warnings and update logs
    
    * Fix import
    
    * Fix compilation
    
    * Fix some typo, add the print of exception
    
    * Fix typo
    
    * Specific exception and add comment
    
    * Fix grammar
---
 .../dropwizard/DropwizardMetricNameTool.java       | 11 +++
 .../dropwizard/reporter/DropwizardJmxReporter.java | 17 +++-
 .../iotdb/metrics/AbstractMetricManager.java       | 73 ++++++++--------
 .../iotdb/metrics/AbstractMetricService.java       | 98 +++++++++++-----------
 .../apache/iotdb/metrics/CompositeReporter.java    | 14 ++--
 .../iotdb/metrics/DoNothingMetricService.java      |  4 +-
 .../apache/iotdb/metrics/config/MetricConfig.java  | 68 ++++++++-------
 .../metrics/config/MetricConfigDescriptor.java     | 12 +--
 .../iotdb/metrics/metricsets/IMetricSet.java       |  6 +-
 .../iotdb/metrics/metricsets/jvm/JvmGcMetrics.java |  4 +-
 .../iotdb/metrics/metricsets/jvm/JvmMetrics.java   |  2 +-
 .../iotdb/metrics/metricsets/jvm/JvmUtils.java     |  8 +-
 .../metrics/metricsets/logback/LogbackMetrics.java |  2 +-
 .../metricsets/logback/MetricsTurboFilter.java     | 12 +--
 .../apache/iotdb/metrics/reporter/JmxReporter.java |  2 +-
 .../apache/iotdb/metrics/reporter/Reporter.java    |  6 +-
 ...orter.java => IoTDBInternalMemoryReporter.java} |  2 +-
 ...TDBReporter.java => IoTDBInternalReporter.java} | 12 +--
 .../metrics/reporter/iotdb/IoTDBReporter.java      | 12 +--
 ...oTDBReporter.java => IoTDBSessionReporter.java} | 27 +++---
 .../reporter/prometheus/PrometheusReporter.java    | 14 ++--
 .../org/apache/iotdb/metrics/type/AutoGauge.java   |  2 +-
 .../org/apache/iotdb/metrics/type/Counter.java     |  6 +-
 .../java/org/apache/iotdb/metrics/type/Gauge.java  |  8 +-
 .../org/apache/iotdb/metrics/type/Histogram.java   |  6 +-
 .../iotdb/metrics/type/HistogramSnapshot.java      | 14 ++--
 .../java/org/apache/iotdb/metrics/type/Rate.java   | 14 ++--
 .../java/org/apache/iotdb/metrics/type/Timer.java  | 12 +--
 .../iotdb/metrics/utils/IoTDBMetricsUtils.java     | 16 ++--
 .../org/apache/iotdb/metrics/utils/MetricInfo.java | 14 ++--
 .../apache/iotdb/metrics/utils/MetricLevel.java    |  4 +-
 .../iotdb/metrics/config/MetricConfigTest.java     |  4 +-
 .../micrometer/reporter/MicrometerJmxReporter.java |  8 +-
 .../commons/service/metric/MetricService.java      | 52 ++++++------
 .../commons/service/metric/MetricServiceMBean.java |  1 +
 .../commons/service/metric/enums/Operation.java    |  1 +
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  | 12 +--
 .../java/org/apache/iotdb/db/service/DataNode.java |  4 +-
 .../java/org/apache/iotdb/db/service/IoTDB.java    |  4 +-
 .../db/service/metrics/DataNodeMetricsHelper.java  |  2 +-
 .../iotdb/db/service/metrics/FileMetrics.java      |  4 -
 ...porter.java => IoTDBInternalLocalReporter.java} | 33 ++++----
 .../iotdb/db/service/metrics/ProcessMetrics.java   | 31 ++++---
 .../iotdb/db/service/metrics/SystemMetrics.java    | 39 ++++-----
 44 files changed, 367 insertions(+), 330 deletions(-)

diff --git a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricNameTool.java b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricNameTool.java
index 049ca46c94..d8d62b978e 100644
--- a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricNameTool.java
+++ b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricNameTool.java
@@ -28,6 +28,12 @@ import java.util.stream.Collectors;
 public class DropwizardMetricNameTool {
   private static final String TAG_SEPARATOR = ".";
 
+  /**
+   * Transform flat string and metric type to metricInfo.
+   *
+   * @param metricType the type of metric
+   * @param flatString the flat string of metricInfo
+   */
   public static MetricInfo transformFromString(MetricType metricType, String flatString) {
     MetricInfo metricInfo;
     String name;
@@ -48,6 +54,11 @@ public class DropwizardMetricNameTool {
     return metricInfo;
   }
 
+  /**
+   * Transform metricInfo to flat string.
+   *
+   * @param metricInfo the info of metric
+   */
   public static String toFlatString(MetricInfo metricInfo) {
     String name = metricInfo.getName();
     Map<String, String> tags = metricInfo.getTags();
diff --git a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/DropwizardJmxReporter.java b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/DropwizardJmxReporter.java
index fd83eb4a24..36935a27ca 100644
--- a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/DropwizardJmxReporter.java
+++ b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/DropwizardJmxReporter.java
@@ -47,18 +47,27 @@ public class DropwizardJmxReporter implements JmxReporter {
               .build();
       jmxReporter.start();
     } catch (Exception e) {
-      LOGGER.error("Failed to start Dropwizard JmxReporter, because {}", e.getMessage());
+      jmxReporter = null;
+      LOGGER.warn("Dropwizard JmxReporter failed to start, because ", e);
       return false;
     }
+    LOGGER.info("Dropwizard JmxReporter start!");
     return true;
   }
 
   @Override
   public boolean stop() {
-    if (jmxReporter != null) {
-      jmxReporter.stop();
-      jmxReporter = null;
+    try {
+      if (jmxReporter != null) {
+        jmxReporter.stop();
+        jmxReporter = null;
+      }
+    } catch (RuntimeException e) {
+      // catch possible RuntimeException throwed by stop method of jmxReporter
+      LOGGER.warn("Dropwizard JmxReporter failed to stop, because ", e);
+      return false;
     }
+    LOGGER.info("Dropwizard JmxReporter stop!");
     return true;
   }
 
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java
index f5dc8e964d..ffd77eccc6 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricManager.java
@@ -46,9 +46,9 @@ import java.util.function.ToLongFunction;
 public abstract class AbstractMetricManager {
   protected static final MetricConfig METRIC_CONFIG =
       MetricConfigDescriptor.getInstance().getMetricConfig();
-  /** The map from metric name to metric metaInfo */
+  /** The map from metric name to metric metaInfo. */
   protected Map<String, MetricInfo.MetaInfo> nameToMetaInfo;
-  /** The map from metricInfo to metric */
+  /** The map from metricInfo to metric. */
   protected Map<MetricInfo, IMetric> metrics;
 
   public AbstractMetricManager() {
@@ -63,9 +63,10 @@ public abstract class AbstractMetricManager {
    * @param name the name of name
    * @param metricLevel the level of name
    * @param tags string pairs, like sg="ln" will be "sg", "ln"
+   * @throws IllegalArgumentException when there has different type metric with same name
    */
   public Counter getOrCreateCounter(String name, MetricLevel metricLevel, String... tags) {
-    if (!isValid(metricLevel, name, tags)) {
+    if (invalid(metricLevel, name, tags)) {
       return DoNothingMetricManager.doNothingCounter;
     }
     MetricInfo metricInfo = new MetricInfo(MetricType.COUNTER, name, tags);
@@ -100,7 +101,7 @@ public abstract class AbstractMetricManager {
    */
   public <T> AutoGauge createAutoGauge(
       String name, MetricLevel metricLevel, T obj, ToLongFunction<T> mapper, String... tags) {
-    if (!isValid(metricLevel, name, tags)) {
+    if (invalid(metricLevel, name, tags)) {
       return DoNothingMetricManager.doNothingAutoGauge;
     }
     MetricInfo metricInfo = new MetricInfo(MetricType.AUTO_GAUGE, name, tags);
@@ -111,13 +112,24 @@ public abstract class AbstractMetricManager {
   }
 
   /**
-   * Get autoGauge
+   * Create autoGauge according to metric framework.
+   *
+   * @param metricInfo the metricInfo of autoGauge
+   * @param obj which will be monitored automatically
+   * @param mapper use which to map the obj to a long value
+   */
+  protected abstract <T> AutoGauge createAutoGauge(
+      MetricInfo metricInfo, T obj, ToLongFunction<T> mapper);
+
+  /**
+   * Get autoGauge.
    *
    * @param name the name of name
    * @param metricLevel the level of name
+   * @throws IllegalArgumentException when there has different type metric with same name
    */
-  public <T> AutoGauge getAutoGauge(String name, MetricLevel metricLevel, String... tags) {
-    if (!isValid(metricLevel, name, tags)) {
+  public AutoGauge getAutoGauge(String name, MetricLevel metricLevel, String... tags) {
+    if (invalid(metricLevel, name, tags)) {
       return DoNothingMetricManager.doNothingAutoGauge;
     }
     MetricInfo metricInfo = new MetricInfo(MetricType.AUTO_GAUGE, name, tags);
@@ -131,25 +143,16 @@ public abstract class AbstractMetricManager {
         metricInfo + " is already used for a different type of name");
   }
 
-  /**
-   * Create autoGauge according to metric framework
-   *
-   * @param metricInfo the metricInfo of autoGauge
-   * @param obj which will be monitored automatically
-   * @param mapper use which to map the obj to a long value
-   */
-  protected abstract <T> AutoGauge createAutoGauge(
-      MetricInfo metricInfo, T obj, ToLongFunction<T> mapper);
-
   /**
    * Get counter. return if exists, create if not.
    *
    * @param name the name of name
    * @param metricLevel the level of name
    * @param tags string pairs, like sg="ln" will be "sg", "ln"
+   * @throws IllegalArgumentException when there has different type metric with same name
    */
   public Gauge getOrCreateGauge(String name, MetricLevel metricLevel, String... tags) {
-    if (!isValid(metricLevel, name, tags)) {
+    if (invalid(metricLevel, name, tags)) {
       return DoNothingMetricManager.doNothingGauge;
     }
     MetricInfo metricInfo = new MetricInfo(MetricType.GAUGE, name, tags);
@@ -169,7 +172,7 @@ public abstract class AbstractMetricManager {
   }
 
   /**
-   * Create gauge according to metric framework
+   * Create gauge according to metric framework.
    *
    * @param metricInfo the metricInfo of gauge
    */
@@ -181,9 +184,10 @@ public abstract class AbstractMetricManager {
    * @param name the name of name
    * @param metricLevel the level of name
    * @param tags string pairs, like sg="ln" will be "sg", "ln"
+   * @throws IllegalArgumentException when there has different type metric with same name
    */
   public Rate getOrCreateRate(String name, MetricLevel metricLevel, String... tags) {
-    if (!isValid(metricLevel, name, tags)) {
+    if (invalid(metricLevel, name, tags)) {
       return DoNothingMetricManager.doNothingRate;
     }
     MetricInfo metricInfo = new MetricInfo(MetricType.RATE, name, tags);
@@ -203,7 +207,7 @@ public abstract class AbstractMetricManager {
   }
 
   /**
-   * Create rate according to metric framework
+   * Create rate according to metric framework.
    *
    * @param metricInfo the metricInfo of rate
    */
@@ -215,9 +219,10 @@ public abstract class AbstractMetricManager {
    * @param name the name of name
    * @param metricLevel the level of name
    * @param tags string pairs, like sg="ln" will be "sg", "ln"
+   * @throws IllegalArgumentException when there has different type metric with same name
    */
   public Histogram getOrCreateHistogram(String name, MetricLevel metricLevel, String... tags) {
-    if (!isValid(metricLevel, name, tags)) {
+    if (invalid(metricLevel, name, tags)) {
       return DoNothingMetricManager.doNothingHistogram;
     }
     MetricInfo metricInfo = new MetricInfo(MetricType.HISTOGRAM, name, tags);
@@ -237,7 +242,7 @@ public abstract class AbstractMetricManager {
   }
 
   /**
-   * Create histogram according to metric framework
+   * Create histogram according to metric framework.
    *
    * @param metricInfo the metricInfo of metric
    */
@@ -249,9 +254,10 @@ public abstract class AbstractMetricManager {
    * @param name the name of name
    * @param metricLevel the level of name
    * @param tags string pairs, like sg="ln" will be "sg", "ln"
+   * @throws IllegalArgumentException when there has different type metric with same name
    */
   public Timer getOrCreateTimer(String name, MetricLevel metricLevel, String... tags) {
-    if (!isValid(metricLevel, name, tags)) {
+    if (invalid(metricLevel, name, tags)) {
       return DoNothingMetricManager.doNothingTimer;
     }
     MetricInfo metricInfo = new MetricInfo(MetricType.TIMER, name, tags);
@@ -271,7 +277,7 @@ public abstract class AbstractMetricManager {
   }
 
   /**
-   * Create timer according to metric framework
+   * Create timer according to metric framework.
    *
    * @param metricInfo the metricInfo of metric
    */
@@ -379,7 +385,7 @@ public abstract class AbstractMetricManager {
   }
 
   /**
-   * Get metrics by type
+   * Get metrics by type.
    *
    * @return [name, [tags...]] -> metric
    */
@@ -398,11 +404,12 @@ public abstract class AbstractMetricManager {
   // region remove metric
 
   /**
-   * remove name
+   * remove name.
    *
    * @param type the type of name
    * @param name the name of name
    * @param tags string pairs, like sg="ln" will be "sg", "ln"
+   * @throws IllegalArgumentException when there has different type metric with same name
    */
   public void remove(MetricType type, String name, String... tags) {
     MetricInfo metricInfo = new MetricInfo(type, name, tags);
@@ -422,12 +429,12 @@ public abstract class AbstractMetricManager {
 
   // endregion
 
-  /** Is metric service enabled in specific level */
+  /** Is metric service enabled in specific level. */
   public boolean isEnableMetricInGivenLevel(MetricLevel metricLevel) {
     return MetricLevel.higherOrEqual(metricLevel, METRIC_CONFIG.getMetricLevel());
   }
 
-  /** Stop and clear metric manager */
+  /** Stop and clear metric manager. */
   protected boolean stop() {
     metrics = new ConcurrentHashMap<>();
     nameToMetaInfo = new ConcurrentHashMap<>();
@@ -436,15 +443,15 @@ public abstract class AbstractMetricManager {
 
   protected abstract boolean stopFramework();
 
-  private boolean isValid(MetricLevel metricLevel, String name, String... tags) {
+  private boolean invalid(MetricLevel metricLevel, String name, String... tags) {
     if (!isEnableMetricInGivenLevel(metricLevel)) {
-      return false;
+      return true;
     }
     if (!nameToMetaInfo.containsKey(name)) {
-      return true;
+      return false;
     }
     MetricInfo.MetaInfo metaInfo = nameToMetaInfo.get(name);
-    return metaInfo.hasSameKey(tags);
+    return !metaInfo.hasSameKey(tags);
   }
 
   @Override
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java
index 28d82dc381..f8b410e2a8 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/AbstractMetricService.java
@@ -26,9 +26,9 @@ import org.apache.iotdb.metrics.impl.DoNothingMetricManager;
 import org.apache.iotdb.metrics.metricsets.IMetricSet;
 import org.apache.iotdb.metrics.reporter.JmxReporter;
 import org.apache.iotdb.metrics.reporter.Reporter;
-import org.apache.iotdb.metrics.reporter.iotdb.InternalIoTDBReporter;
-import org.apache.iotdb.metrics.reporter.iotdb.MemoryInternalIoTDBReporter;
-import org.apache.iotdb.metrics.reporter.iotdb.SessionIoTDBReporter;
+import org.apache.iotdb.metrics.reporter.iotdb.IoTDBInternalMemoryReporter;
+import org.apache.iotdb.metrics.reporter.iotdb.IoTDBInternalReporter;
+import org.apache.iotdb.metrics.reporter.iotdb.IoTDBSessionReporter;
 import org.apache.iotdb.metrics.reporter.prometheus.PrometheusReporter;
 import org.apache.iotdb.metrics.type.AutoGauge;
 import org.apache.iotdb.metrics.type.Counter;
@@ -55,23 +55,25 @@ import java.util.function.ToLongFunction;
 
 /** MetricService is the entry to get all metric features. */
 public abstract class AbstractMetricService {
-  private static final Logger logger = LoggerFactory.getLogger(AbstractMetricService.class);
-  /** The config of metric service */
-  protected final MetricConfig metricConfig =
+  private static final Logger LOGGER = LoggerFactory.getLogger(AbstractMetricService.class);
+  /** The config of metric service. */
+  protected static final MetricConfig METRIC_CONFIG =
       MetricConfigDescriptor.getInstance().getMetricConfig();
-  /** The metric manager of metric service */
+  /** The metric manager of metric service. */
   protected AbstractMetricManager metricManager = new DoNothingMetricManager();
-  /** The metric reporter of metric service */
+  /** The metric reporter of metric service. */
   protected CompositeReporter compositeReporter = new CompositeReporter();
-  /** The internal reporter of metric service */
-  protected InternalIoTDBReporter internalReporter = new MemoryInternalIoTDBReporter();
+  /** The internal reporter of metric service. */
+  protected IoTDBInternalReporter internalReporter = new IoTDBInternalMemoryReporter();
 
-  /** The list of metric sets */
+  /** The list of metric sets. */
   protected List<IMetricSet> metricSets = new ArrayList<>();
 
-  public AbstractMetricService() {}
+  public AbstractMetricService() {
+    // empty constructor
+  }
 
-  /** Start metric service */
+  /** Start metric service. */
   public void startService() {
     startCoreModule();
     for (IMetricSet metricSet : metricSets) {
@@ -79,7 +81,7 @@ public abstract class AbstractMetricService {
     }
   }
 
-  /** Stop metric service */
+  /** Stop metric service. */
   public void stopService() {
     for (IMetricSet metricSet : metricSets) {
       metricSet.unbindFrom(this);
@@ -87,9 +89,9 @@ public abstract class AbstractMetricService {
     stopCoreModule();
   }
 
-  /** Start metric core module */
+  /** Start metric core module. */
   protected void startCoreModule() {
-    logger.info("Start metric service at level: {}", metricConfig.getMetricLevel().name());
+    LOGGER.info("Start metric service at level: {}", METRIC_CONFIG.getMetricLevel().name());
     // load metric manager
     loadManager();
     // load metric reporter
@@ -98,7 +100,7 @@ public abstract class AbstractMetricService {
     startAllReporter();
   }
 
-  /** Stop metric core module */
+  /** Stop metric core module. */
   protected void stopCoreModule() {
     stopAllReporter();
     metricManager.stop();
@@ -106,9 +108,9 @@ public abstract class AbstractMetricService {
     compositeReporter = new CompositeReporter();
   }
 
-  /** Load metric manager according to configuration */
+  /** Load metric manager according to configuration. */
   private void loadManager() {
-    logger.info("Load metricManager, type: {}", metricConfig.getMetricFrameType());
+    LOGGER.info("Load metricManager, type: {}", METRIC_CONFIG.getMetricFrameType());
     ServiceLoader<AbstractMetricManager> metricManagers =
         ServiceLoader.load(AbstractMetricManager.class);
     int size = 0;
@@ -117,7 +119,7 @@ public abstract class AbstractMetricService {
       if (mf.getClass()
           .getName()
           .toLowerCase()
-          .contains(metricConfig.getMetricFrameType().name().toLowerCase())) {
+          .contains(METRIC_CONFIG.getMetricFrameType().name().toLowerCase())) {
         metricManager = mf;
         break;
       }
@@ -127,19 +129,19 @@ public abstract class AbstractMetricService {
     if (size == 0 || metricManager == null) {
       metricManager = new DoNothingMetricManager();
     } else if (size > 1) {
-      logger.info(
+      LOGGER.info(
           "Detect more than one MetricManager, will use {}", metricManager.getClass().getName());
     }
   }
 
-  /** Load metric reporters according to configuration */
+  /** Load metric reporters according to configuration. */
   protected void loadReporter() {
-    logger.info("Load metric reporters, type: {}", metricConfig.getMetricReporterList());
+    LOGGER.info("Load metric reporters, type: {}", METRIC_CONFIG.getMetricReporterList());
     compositeReporter.clearReporter();
-    if (metricConfig.getMetricReporterList() == null) {
+    if (METRIC_CONFIG.getMetricReporterList() == null) {
       return;
     }
-    for (ReporterType reporterType : metricConfig.getMetricReporterList()) {
+    for (ReporterType reporterType : METRIC_CONFIG.getMetricReporterList()) {
       Reporter reporter = null;
       switch (reporterType) {
         case JMX:
@@ -149,7 +151,7 @@ public abstract class AbstractMetricService {
                 .getClass()
                 .getName()
                 .toLowerCase()
-                .contains(metricConfig.getMetricFrameType().name().toLowerCase())) {
+                .contains(METRIC_CONFIG.getMetricFrameType().name().toLowerCase())) {
               jmxReporter.setMetricManager(metricManager);
               reporter = jmxReporter;
             }
@@ -159,13 +161,13 @@ public abstract class AbstractMetricService {
           reporter = new PrometheusReporter(metricManager);
           break;
         case IOTDB:
-          reporter = new SessionIoTDBReporter(metricManager);
+          reporter = new IoTDBSessionReporter(metricManager);
           break;
         default:
           continue;
       }
       if (reporter == null) {
-        logger.error("Failed to load reporter which type is {}", reporterType);
+        LOGGER.warn("Failed to load reporter which type is {}", reporterType);
         continue;
       }
       compositeReporter.addReporter(reporter);
@@ -173,14 +175,14 @@ public abstract class AbstractMetricService {
   }
 
   /**
-   * Reload internal reporter
+   * Reload internal reporter.
    *
    * @param internalReporter the new internal reporter
    */
-  public abstract void reloadInternalReporter(InternalIoTDBReporter internalReporter);
+  public abstract void reloadInternalReporter(IoTDBInternalReporter internalReporter);
 
   /**
-   * Reload metric service
+   * Reload metric service.
    *
    * @param reloadLevel the level of reload
    */
@@ -188,22 +190,22 @@ public abstract class AbstractMetricService {
 
   // region interface from metric reporter
 
-  /** Start all reporters */
+  /** Start all reporters. */
   public void startAllReporter() {
     compositeReporter.startAll();
   }
 
-  /** Stop all reporters */
+  /** Stop all reporters. */
   public void stopAllReporter() {
     compositeReporter.stopAll();
   }
 
-  /** Start reporter according to type */
+  /** Start reporter according to type. */
   public void start(ReporterType type) {
     compositeReporter.start(type);
   }
 
-  /** Stop reporter according to type */
+  /** Stop reporter according to type. */
   public void stop(ReporterType type) {
     compositeReporter.stop(type);
   }
@@ -221,7 +223,7 @@ public abstract class AbstractMetricService {
     return metricManager.createAutoGauge(metric, metricLevel, obj, mapper, tags);
   }
 
-  public <T> AutoGauge getAutoGauge(String metric, MetricLevel metricLevel, String... tags) {
+  public AutoGauge getAutoGauge(String metric, MetricLevel metricLevel, String... tags) {
     return metricManager.getAutoGauge(metric, metricLevel, tags);
   }
 
@@ -262,7 +264,7 @@ public abstract class AbstractMetricService {
     metricManager.timer(delta, timeUnit, metric, metricLevel, tags);
   }
 
-  /** GetOrCreateCounter with internal report */
+  /** GetOrCreateCounter with internal report. */
   public Counter getOrCreateCounterWithInternalReport(
       String metric, MetricLevel metricLevel, String... tags) {
     Counter counter = metricManager.getOrCreateCounter(metric, metricLevel, tags);
@@ -270,7 +272,7 @@ public abstract class AbstractMetricService {
     return counter;
   }
 
-  /** GetOrCreateAutoGauge with internal report */
+  /** GetOrCreateAutoGauge with internal report. */
   public <T> AutoGauge createAutoGaugeWithInternalReport(
       String metric, MetricLevel metricLevel, T obj, ToLongFunction<T> mapper, String... tags) {
     AutoGauge gauge = metricManager.createAutoGauge(metric, metricLevel, obj, mapper, tags);
@@ -278,7 +280,7 @@ public abstract class AbstractMetricService {
     return gauge;
   }
 
-  /** GetOrCreateGauge with internal report */
+  /** GetOrCreateGauge with internal report. */
   public Gauge getOrCreateGaugeWithInternalReport(
       String metric, MetricLevel metricLevel, String... tags) {
     Gauge gauge = metricManager.getOrCreateGauge(metric, metricLevel, tags);
@@ -286,7 +288,7 @@ public abstract class AbstractMetricService {
     return gauge;
   }
 
-  /** GetOrCreateRate with internal report */
+  /** GetOrCreateRate with internal report. */
   public Rate getOrCreateRateWithInternalReport(
       String metric, MetricLevel metricLevel, String... tags) {
     Rate rate = metricManager.getOrCreateRate(metric, metricLevel, tags);
@@ -294,7 +296,7 @@ public abstract class AbstractMetricService {
     return rate;
   }
 
-  /** GetOrCreateHistogram with internal report */
+  /** GetOrCreateHistogram with internal report. */
   public Histogram getOrCreateHistogramWithInternalReport(
       String metric, MetricLevel metricLevel, String... tags) {
     Histogram histogram = metricManager.getOrCreateHistogram(metric, metricLevel, tags);
@@ -302,7 +304,7 @@ public abstract class AbstractMetricService {
     return histogram;
   }
 
-  /** GetOrCreateTimer with internal report */
+  /** GetOrCreateTimer with internal report. */
   public Timer getOrCreateTimerWithInternalReport(
       String metric, MetricLevel metricLevel, String... tags) {
     Timer timer = metricManager.getOrCreateTimer(metric, metricLevel, tags);
@@ -310,7 +312,7 @@ public abstract class AbstractMetricService {
     return timer;
   }
 
-  /** Count with internal report */
+  /** Count with internal report. */
   public void countWithInternalReport(
       long delta, String metric, MetricLevel metricLevel, String... tags) {
     internalReporter.writeMetricToIoTDB(
@@ -324,21 +326,21 @@ public abstract class AbstractMetricService {
         metricManager.gauge(value, metric, metricLevel, tags), metric, tags);
   }
 
-  /** Rate with internal report */
+  /** Rate with internal report. */
   public void rateWithInternalReport(
       long value, String metric, MetricLevel metricLevel, String... tags) {
     internalReporter.writeMetricToIoTDB(
         metricManager.rate(value, metric, metricLevel, tags), metric, tags);
   }
 
-  /** Histogram with internal report */
+  /** Histogram with internal report. */
   public void histogramWithInternalReport(
       long value, String metric, MetricLevel metricLevel, String... tags) {
     internalReporter.writeMetricToIoTDB(
         metricManager.histogram(value, metric, metricLevel, tags), metric, tags);
   }
 
-  /** Timer with internal report */
+  /** Timer with internal report. */
   public void timerWithInternalReport(
       long delta, TimeUnit timeUnit, String metric, MetricLevel metricLevel, String... tags) {
     internalReporter.writeMetricToIoTDB(
@@ -367,7 +369,7 @@ public abstract class AbstractMetricService {
     return metricManager;
   }
 
-  /** Bind metrics and store metric set */
+  /** Bind metrics and store metric set. */
   public void addMetricSet(IMetricSet metricSet) {
     if (!metricSets.contains(metricSet)) {
       metricSet.bindTo(this);
@@ -375,7 +377,7 @@ public abstract class AbstractMetricService {
     }
   }
 
-  /** Remove metrics */
+  /** Remove metrics. */
   public void removeMetricSet(IMetricSet metricSet) {
     if (metricSets.contains(metricSet)) {
       metricSet.unbindFrom(this);
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/CompositeReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/CompositeReporter.java
index 0a713443d7..71d2d7fcc5 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/CompositeReporter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/CompositeReporter.java
@@ -32,7 +32,7 @@ public class CompositeReporter {
   private static final Logger LOGGER = LoggerFactory.getLogger(CompositeReporter.class);
   private final List<Reporter> reporters = new ArrayList<>();
 
-  /** Start all reporters */
+  /** Start all reporters. */
   public void startAll() {
     for (Reporter reporter : reporters) {
       if (!reporter.start()) {
@@ -41,7 +41,7 @@ public class CompositeReporter {
     }
   }
 
-  /** Start reporter by reporterType */
+  /** Start reporter by reporterType. */
   public boolean start(ReporterType reporterType) {
     for (Reporter reporter : reporters) {
       if (reporter.getReporterType() == reporterType) {
@@ -52,16 +52,16 @@ public class CompositeReporter {
     return false;
   }
 
-  /** Stop all reporters */
+  /** Stop all reporters. */
   public void stopAll() {
     for (Reporter reporter : reporters) {
       if (!reporter.stop()) {
-        LOGGER.error("Failed to stop {} reporter.", reporter.getReporterType());
+        LOGGER.warn("Failed to stop {} reporter.", reporter.getReporterType());
       }
     }
   }
 
-  /** Stop reporter by reporterType */
+  /** Stop reporter by reporterType. */
   public boolean stop(ReporterType reporterType) {
     for (Reporter reporter : reporters) {
       if (reporter.getReporterType() == reporterType) {
@@ -72,7 +72,7 @@ public class CompositeReporter {
     return false;
   }
 
-  /** Add reporter into reporter list */
+  /** Add reporter into reporter list. */
   public void addReporter(Reporter reporter) {
     for (Reporter originReporter : reporters) {
       if (originReporter.getReporterType() == reporter.getReporterType()) {
@@ -84,7 +84,7 @@ public class CompositeReporter {
     reporters.add(reporter);
   }
 
-  /** Clear all reporters */
+  /** Clear all reporters. */
   public void clearReporter() {
     reporters.clear();
   }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/DoNothingMetricService.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/DoNothingMetricService.java
index 2f13c317e0..87471f49b7 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/DoNothingMetricService.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/DoNothingMetricService.java
@@ -20,12 +20,12 @@
 package org.apache.iotdb.metrics;
 
 import org.apache.iotdb.metrics.config.ReloadLevel;
-import org.apache.iotdb.metrics.reporter.iotdb.InternalIoTDBReporter;
+import org.apache.iotdb.metrics.reporter.iotdb.IoTDBInternalReporter;
 
 public class DoNothingMetricService extends AbstractMetricService {
 
   @Override
-  public void reloadInternalReporter(InternalIoTDBReporter internalReporter) {
+  public void reloadInternalReporter(IoTDBInternalReporter internalReporter) {
     // do nothing
   }
 
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
index a2558f8b9b..5571240cfd 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
@@ -30,30 +30,30 @@ import java.util.List;
 import java.util.Objects;
 
 public class MetricConfig {
-  /** The type of the implementation of metric framework */
+  /** The type of the implementation of metric framework. */
   private MetricFrameType metricFrameType = MetricFrameType.MICROMETER;
 
-  /** The list of reporters provide metrics for external tool */
+  /** The list of reporters provide metrics for external tool. */
   private List<ReporterType> metricReporterList = Collections.emptyList();
 
-  /** The level of metric service */
+  /** The level of metric service. */
   private MetricLevel metricLevel = MetricLevel.CORE;
 
-  /** The period of async collection of some metrics in second */
+  /** The period of async collection of some metrics in second. */
   private Integer asyncCollectPeriodInSecond = 5;
 
-  /** The export port for prometheus to get metrics */
+  /** The export port for prometheus to get metrics. */
   private Integer prometheusReporterPort = 9091;
 
-  /** The iotdb config for iotdb reporter to push metric data */
-  private IoTDBReporterConfig ioTDBReporterConfig = new IoTDBReporterConfig();
+  /** The iotdb config for iotdb reporter to push metric data. */
+  private final IoTDBReporterConfig iotdbReporterConfig = new IoTDBReporterConfig();
 
-  /** The type of internal reporter */
+  /** The type of internal reporter. */
   private InternalReporterType internalReporterType = InternalReporterType.MEMORY;
 
-  /** The address of iotdb instance that is monitored */
+  /** The address of iotdb instance that is monitored. */
   private String rpcAddress = "0.0.0.0";
-  /** The port of iotdb instance that is monitored */
+  /** The port of iotdb instance that is monitored. */
   private Integer rpcPort = 6667;
 
   public MetricFrameType getMetricFrameType() {
@@ -109,12 +109,8 @@ public class MetricConfig {
     this.prometheusReporterPort = prometheusReporterPort;
   }
 
-  public IoTDBReporterConfig getIoTDBReporterConfig() {
-    return ioTDBReporterConfig;
-  }
-
-  public void setIoTDBReporterConfig(IoTDBReporterConfig ioTDBReporterConfig) {
-    this.ioTDBReporterConfig = ioTDBReporterConfig;
+  public IoTDBReporterConfig getIotdbReporterConfig() {
+    return iotdbReporterConfig;
   }
 
   public String getRpcAddress() {
@@ -125,30 +121,22 @@ public class MetricConfig {
     return rpcPort;
   }
 
-  /** Update rpc address and rpc port of monitored node */
+  /** Update rpc address and rpc port of monitored node. */
   public void updateRpcInstance(String rpcAddress, int rpcPort) {
     this.rpcAddress = rpcAddress;
     this.rpcPort = rpcPort;
   }
 
-  /** Copy properties from another metric config */
+  /** Copy properties from another metric config. */
   public void copy(MetricConfig newMetricConfig) {
     metricFrameType = newMetricConfig.getMetricFrameType();
     metricReporterList = newMetricConfig.getMetricReporterList();
     metricLevel = newMetricConfig.getMetricLevel();
     asyncCollectPeriodInSecond = newMetricConfig.getAsyncCollectPeriodInSecond();
     prometheusReporterPort = newMetricConfig.getPrometheusReporterPort();
-
-    IoTDBReporterConfig newIoTDBReporterConfig = newMetricConfig.getIoTDBReporterConfig();
-    ioTDBReporterConfig.setHost(newIoTDBReporterConfig.getHost());
-    ioTDBReporterConfig.setPort(newIoTDBReporterConfig.getPort());
-    ioTDBReporterConfig.setUsername(newIoTDBReporterConfig.getUsername());
-    ioTDBReporterConfig.setPassword(newIoTDBReporterConfig.getPassword());
-    ioTDBReporterConfig.setMaxConnectionNumber(newIoTDBReporterConfig.getMaxConnectionNumber());
-    ioTDBReporterConfig.setPushPeriodInSecond(newIoTDBReporterConfig.getPushPeriodInSecond());
-    ioTDBReporterConfig.setLocation(newIoTDBReporterConfig.getLocation());
-
     internalReporterType = newMetricConfig.getInternalReportType();
+
+    iotdbReporterConfig.copy(newMetricConfig.getIotdbReporterConfig());
   }
 
   @Override
@@ -162,22 +150,22 @@ public class MetricConfig {
         && metricLevel.equals(anotherMetricConfig.getMetricLevel())
         && asyncCollectPeriodInSecond.equals(anotherMetricConfig.getAsyncCollectPeriodInSecond())
         && prometheusReporterPort.equals(anotherMetricConfig.getPrometheusReporterPort())
-        && ioTDBReporterConfig.equals(anotherMetricConfig.getIoTDBReporterConfig())
+        && iotdbReporterConfig.equals(anotherMetricConfig.getIotdbReporterConfig())
         && internalReporterType.equals(anotherMetricConfig.getInternalReportType());
   }
 
   public static class IoTDBReporterConfig {
-    /** The host of iotdb that store metric value */
+    /** The host of iotdb that store metric value. */
     private String host = "127.0.0.1";
-    /** The port of iotdb that store metric value */
+    /** The port of iotdb that store metric value. */
     private Integer port = 6667;
-    /** The username of iotdb */
+    /** The username of iotdb. */
     private String username = "root";
-    /** The password of iotdb */
+    /** The password of iotdb. */
     private String password = "root";
-    /** The max number of connection */
+    /** The max number of connection. */
     private Integer maxConnectionNumber = 3;
-    /** The location of iotdb metrics */
+    /** The location of iotdb metrics. */
     private String location = "metric";
     /** The period of data pushed by the reporter to the remote monitoring system. */
     private Integer pushPeriodInSecond = 15;
@@ -238,6 +226,16 @@ public class MetricConfig {
       this.pushPeriodInSecond = pushPeriodInSecond;
     }
 
+    public void copy(IoTDBReporterConfig iotdbReporterConfig) {
+      host = iotdbReporterConfig.getHost();
+      port = iotdbReporterConfig.getPort();
+      username = iotdbReporterConfig.getUsername();
+      password = iotdbReporterConfig.getPassword();
+      maxConnectionNumber = iotdbReporterConfig.getMaxConnectionNumber();
+      pushPeriodInSecond = iotdbReporterConfig.getPushPeriodInSecond();
+      location = iotdbReporterConfig.getLocation();
+    }
+
     @Override
     public boolean equals(Object o) {
       if (this == o) {
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java
index e38085bb5e..b9153d6f07 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java
@@ -27,16 +27,16 @@ import org.apache.iotdb.metrics.utils.ReporterType;
 import java.util.Properties;
 import java.util.stream.Collectors;
 
-/** The utils class to load properties */
+/** The utils class to load properties. */
 public class MetricConfigDescriptor {
-  /** The metric config of metric service */
+  /** The metric config of metric service. */
   private final MetricConfig metricConfig;
 
   private MetricConfigDescriptor() {
     metricConfig = new MetricConfig();
   }
 
-  /** Load properties into metric config */
+  /** Load properties into metric config. */
   public void loadProps(Properties properties) {
     MetricConfig loadConfig = generateFromProperties(properties);
     metricConfig.copy(loadConfig);
@@ -72,7 +72,7 @@ public class MetricConfigDescriptor {
     return reloadLevel;
   }
 
-  /** Load properties into metric config */
+  /** Load properties into metric config. */
   private MetricConfig generateFromProperties(Properties properties) {
     MetricConfig loadConfig = new MetricConfig();
 
@@ -110,7 +110,7 @@ public class MetricConfigDescriptor {
                 String.valueOf(loadConfig.getPrometheusReporterPort()),
                 properties)));
 
-    MetricConfig.IoTDBReporterConfig reporterConfig = loadConfig.getIoTDBReporterConfig();
+    MetricConfig.IoTDBReporterConfig reporterConfig = loadConfig.getIotdbReporterConfig();
     reporterConfig.setHost(
         getProperty("metric_iotdb_reporter_host", reporterConfig.getHost(), properties));
 
@@ -153,7 +153,7 @@ public class MetricConfigDescriptor {
     return loadConfig;
   }
 
-  /** Get property from confignode or datanode */
+  /** Get property from confignode or datanode. */
   private String getProperty(String target, String defaultValue, Properties properties) {
     return properties.getProperty(
         "dn_" + target, properties.getProperty("cn_" + target, defaultValue));
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/IMetricSet.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/IMetricSet.java
index 9b66fcec4f..c34bb9e721 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/IMetricSet.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/IMetricSet.java
@@ -21,11 +21,11 @@ package org.apache.iotdb.metrics.metricsets;
 
 import org.apache.iotdb.metrics.AbstractMetricService;
 
-/** Notice that IMetricSet should be stateless */
+/** Notice that IMetricSet should be stateless. */
 public interface IMetricSet {
-  /** bind metrics to metricManager and init environment */
+  /** bind metrics to metricManager and init environment. */
   void bindTo(AbstractMetricService metricService);
 
-  /** remove metrics from metricManager and clear environment */
+  /** remove metrics from metricManager and clear environment. */
   void unbindFrom(AbstractMetricService metricService);
 }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmGcMetrics.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmGcMetrics.java
index 65693b89f7..7415df145d 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmGcMetrics.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmGcMetrics.java
@@ -153,7 +153,7 @@ public class JvmGcMetrics implements IMetricSet, AutoCloseable {
               final long oldBefore = before.get(oldGenPoolName).getUsed();
               final long oldAfter = after.get(oldGenPoolName).getUsed();
               final long delta = oldAfter - oldBefore;
-              if (delta > 0L) {
+              if (delta > 0L && promotedBytes != null) {
                 promotedBytes.inc(delta);
               }
 
@@ -193,6 +193,7 @@ public class JvmGcMetrics implements IMetricSet, AutoCloseable {
             try {
               notificationEmitter.removeNotificationListener(notificationListener);
             } catch (ListenerNotFoundException ignore) {
+              // do nothing
             }
           });
     }
@@ -246,6 +247,7 @@ public class JvmGcMetrics implements IMetricSet, AutoCloseable {
             try {
               notificationEmitter.removeNotificationListener(notificationListener);
             } catch (ListenerNotFoundException ignore) {
+              // do nothing
             }
           });
     }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmMetrics.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmMetrics.java
index 5eb3414211..fea696dc3b 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmMetrics.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmMetrics.java
@@ -26,7 +26,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class JvmMetrics implements IMetricSet {
-  private List<IMetricSet> metricSets = new ArrayList<>();
+  private final List<IMetricSet> metricSets = new ArrayList<>();
 
   public JvmMetrics() {
     metricSets.add(new JvmClassLoaderMetrics());
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmUtils.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmUtils.java
index e0cf1a647b..4455e2d61e 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmUtils.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/jvm/JvmUtils.java
@@ -25,17 +25,17 @@ import java.util.function.ToLongFunction;
 
 public class JvmUtils {
   static double getUsageValue(
-      MemoryPoolMXBean memoryPoolMXBean, ToLongFunction<MemoryUsage> getter) {
-    MemoryUsage usage = getUsage(memoryPoolMXBean);
+      MemoryPoolMXBean memoryPoolMxBean, ToLongFunction<MemoryUsage> getter) {
+    MemoryUsage usage = getUsage(memoryPoolMxBean);
     if (usage == null) {
       return Double.NaN;
     }
     return getter.applyAsLong(usage);
   }
 
-  private static MemoryUsage getUsage(MemoryPoolMXBean memoryPoolMXBean) {
+  private static MemoryUsage getUsage(MemoryPoolMXBean memoryPoolMxBean) {
     try {
-      return memoryPoolMXBean.getUsage();
+      return memoryPoolMxBean.getUsage();
     } catch (InternalError e) {
       // Defensive for potential InternalError with some specific JVM options. Based on its Javadoc,
       // MemoryPoolMXBean.getUsage() should return null, not throwing InternalError, so it seems to
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/LogbackMetrics.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/LogbackMetrics.java
index 2e2f8013a9..852ad6c28b 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/LogbackMetrics.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/LogbackMetrics.java
@@ -98,7 +98,7 @@ public class LogbackMetrics implements IMetricSet {
         metricService.remove(MetricType.COUNTER, "logback_events", "level", "trace");
       }
     } catch (Exception e) {
-      logger.error("Failed to remove LogBackMetrics.");
+      logger.warn("Failed to remove logBackMetrics, because ", e);
     }
   }
 }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/MetricsTurboFilter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/MetricsTurboFilter.java
index 4e8506d5fc..b3674bbe9e 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/MetricsTurboFilter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/metricsets/logback/MetricsTurboFilter.java
@@ -30,11 +30,11 @@ import ch.qos.logback.core.spi.FilterReply;
 import org.slf4j.Marker;
 
 public class MetricsTurboFilter extends TurboFilter {
-  private Counter errorCounter;
-  private Counter warnCounter;
-  private Counter infoCounter;
-  private Counter debugCounter;
-  private Counter traceCounter;
+  private final Counter errorCounter;
+  private final Counter warnCounter;
+  private final Counter infoCounter;
+  private final Counter debugCounter;
+  private final Counter traceCounter;
 
   MetricsTurboFilter(AbstractMetricService metricService) {
     errorCounter =
@@ -90,6 +90,8 @@ public class MetricsTurboFilter extends TurboFilter {
         case Level.TRACE_INT:
           traceCounter.inc();
           break;
+        default:
+          break;
       }
     }
 
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/JmxReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/JmxReporter.java
index 8c4c24b0ac..0e5e055594 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/JmxReporter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/JmxReporter.java
@@ -22,6 +22,6 @@ package org.apache.iotdb.metrics.reporter;
 import org.apache.iotdb.metrics.AbstractMetricManager;
 
 public interface JmxReporter extends Reporter {
-  /** Set metric manager into reporter */
+  /** Set metric manager into reporter. */
   void setMetricManager(AbstractMetricManager metricManager);
 }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/Reporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/Reporter.java
index 796681b3ca..57ac99a92e 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/Reporter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/Reporter.java
@@ -22,12 +22,12 @@ package org.apache.iotdb.metrics.reporter;
 import org.apache.iotdb.metrics.utils.ReporterType;
 
 public interface Reporter {
-  /** Start reporter */
+  /** Start reporter. */
   boolean start();
 
-  /** Stop reporter */
+  /** Stop reporter. */
   boolean stop();
 
-  /** Get the type of reporter */
+  /** Get the type of reporter. */
   ReporterType getReporterType();
 }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/MemoryInternalIoTDBReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBInternalMemoryReporter.java
similarity index 96%
rename from metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/MemoryInternalIoTDBReporter.java
rename to metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBInternalMemoryReporter.java
index a4e2bd1a0a..c8c283bd96 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/MemoryInternalIoTDBReporter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBInternalMemoryReporter.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.metrics.utils.ReporterType;
 
 import java.util.Map;
 
-public class MemoryInternalIoTDBReporter extends InternalIoTDBReporter {
+public class IoTDBInternalMemoryReporter extends IoTDBInternalReporter {
   @Override
   public InternalReporterType getType() {
     return InternalReporterType.MEMORY;
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/InternalIoTDBReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBInternalReporter.java
similarity index 88%
rename from metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/InternalIoTDBReporter.java
rename to metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBInternalReporter.java
index f6d66e2733..c02c443e85 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/InternalIoTDBReporter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBInternalReporter.java
@@ -28,11 +28,11 @@ import org.apache.iotdb.metrics.utils.MetricType;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-public abstract class InternalIoTDBReporter extends IoTDBReporter {
+public abstract class IoTDBInternalReporter extends IoTDBReporter {
   protected final Map<MetricInfo, IMetric> autoGauges = new ConcurrentHashMap<>();
 
   /**
-   * Add autoGauge into internal reporter
+   * Add autoGauge into internal reporter.
    *
    * @param autoGauge autoGauge
    * @param name the name of autoGauge
@@ -44,7 +44,7 @@ public abstract class InternalIoTDBReporter extends IoTDBReporter {
   }
 
   /**
-   * Add autoGauges into internal reporter
+   * Add autoGauges into internal reporter.
    *
    * @param gauges the map of autoGauge
    */
@@ -52,16 +52,16 @@ public abstract class InternalIoTDBReporter extends IoTDBReporter {
     autoGauges.putAll(gauges);
   }
 
-  /** Get all autoGauges */
+  /** Get all autoGauges. */
   public Map<MetricInfo, IMetric> getAllAutoGauge() {
     return autoGauges;
   }
 
-  /** Clear all autoGauges */
+  /** Clear all autoGauges. */
   public void clear() {
     autoGauges.clear();
   }
 
-  /** Get the type of internal reporter */
+  /** Get the type of internal reporter. */
   public abstract InternalReporterType getType();
 }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBReporter.java
index 819f6c6c4b..2cc67f13a3 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBReporter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBReporter.java
@@ -29,10 +29,10 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import java.util.HashMap;
 import java.util.Map;
 
-/** The reporter to IoTDB */
+/** The reporter to IoTDB. */
 public abstract class IoTDBReporter implements Reporter {
   /**
-   * Write metric into IoTDB
+   * Write metric into IoTDB.
    *
    * @param metric the target metric
    * @param name the name of metric
@@ -48,7 +48,7 @@ public abstract class IoTDBReporter implements Reporter {
   }
 
   /**
-   * Write metric into IoTDB
+   * Write metric into IoTDB.
    *
    * @param valueMap sensor -> value
    * @param prefix device
@@ -58,7 +58,7 @@ public abstract class IoTDBReporter implements Reporter {
       Map<String, Object> valueMap, String prefix, long time);
 
   /**
-   * Write metrics into IoTDB
+   * Write metrics into IoTDB.
    *
    * @param metricMap metricInfo -> IMetric
    */
@@ -77,14 +77,14 @@ public abstract class IoTDBReporter implements Reporter {
   }
 
   /**
-   * Write metrics into IoTDB
+   * Write metrics into IoTDB.
    *
    * @param valueMap device -> sensor -> value
    * @param time write time
    */
   protected abstract void writeMetricsToIoTDB(Map<String, Map<String, Object>> valueMap, long time);
 
-  /** Infer type from object */
+  /** Infer type from object. */
   protected TSDataType inferType(Object value) {
     TSDataType dataType;
     if (value instanceof Boolean) {
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/SessionIoTDBReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
similarity index 87%
rename from metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/SessionIoTDBReporter.java
rename to metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
index 5b7f271952..68ffcb119a 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/SessionIoTDBReporter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java
@@ -44,19 +44,19 @@ import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
-public class SessionIoTDBReporter extends IoTDBReporter {
-  private static final Logger LOGGER = LoggerFactory.getLogger(SessionIoTDBReporter.class);
+public class IoTDBSessionReporter extends IoTDBReporter {
+  private static final Logger LOGGER = LoggerFactory.getLogger(IoTDBSessionReporter.class);
   private static final MetricConfig.IoTDBReporterConfig ioTDBReporterConfig =
-      MetricConfigDescriptor.getInstance().getMetricConfig().getIoTDBReporterConfig();
+      MetricConfigDescriptor.getInstance().getMetricConfig().getIotdbReporterConfig();
   private Future<?> currentServiceFuture;
   private final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
 
-  /** The manager of metrics */
+  /** The manager of metrics. */
   protected AbstractMetricManager metricManager;
-  /** The session pool to write metrics */
+  /** The session pool to write metrics. */
   protected SessionPool sessionPool;
 
-  public SessionIoTDBReporter(AbstractMetricManager metricManager) {
+  public IoTDBSessionReporter(AbstractMetricManager metricManager) {
     this.metricManager = metricManager;
     this.sessionPool =
         new SessionPool(
@@ -71,7 +71,7 @@ public class SessionIoTDBReporter extends IoTDBReporter {
         this.sessionPool.createDatabase(IoTDBMetricsUtils.DATABASE);
       }
     } catch (IoTDBConnectionException e) {
-      LOGGER.error("CheckOrCreateStorageGroup failed because ", e);
+      LOGGER.warn("IoTDBSessionReporter checkOrCreateStorageGroup failed because ", e);
     } catch (StatementExecutionException e) {
       // do nothing
     }
@@ -81,7 +81,7 @@ public class SessionIoTDBReporter extends IoTDBReporter {
   @SuppressWarnings("unsafeThreadSchedule")
   public boolean start() {
     if (currentServiceFuture != null) {
-      LOGGER.warn("IoTDB Session Reporter already start");
+      LOGGER.warn("IoTDBSessionReporter already start!");
       return false;
     }
     currentServiceFuture =
@@ -98,12 +98,16 @@ public class SessionIoTDBReporter extends IoTDBReporter {
                 }
                 writeMetricsToIoTDB(values, System.currentTimeMillis());
               } catch (Throwable t) {
-                LOGGER.error("Schedule task failed", t);
+                LOGGER.error("IoTDBSessionReporter failed to start, because", t);
               }
             },
             1,
             MetricConfigDescriptor.getInstance().getMetricConfig().getAsyncCollectPeriodInSecond(),
             TimeUnit.SECONDS);
+    LOGGER.info(
+        "IoTDBSessionReporter start, write to {}:{}",
+        ioTDBReporterConfig.getHost(),
+        ioTDBReporterConfig.getPort());
     return true;
   }
 
@@ -116,6 +120,7 @@ public class SessionIoTDBReporter extends IoTDBReporter {
     if (sessionPool != null) {
       sessionPool.close();
     }
+    LOGGER.info("IoTDBSessionReporter stop!");
     return true;
   }
 
@@ -138,7 +143,7 @@ public class SessionIoTDBReporter extends IoTDBReporter {
     try {
       sessionPool.insertRecord(prefix, time, sensors, dataTypes, values);
     } catch (IoTDBConnectionException | StatementExecutionException e) {
-      LOGGER.warn("Failed to insert record");
+      LOGGER.warn("IoTDBSessionReporter failed to insert record, because ", e);
     }
   }
 
@@ -169,7 +174,7 @@ public class SessionIoTDBReporter extends IoTDBReporter {
     try {
       sessionPool.insertRecords(deviceIds, times, sensors, dataTypes, values);
     } catch (IoTDBConnectionException | StatementExecutionException e) {
-      LOGGER.warn("Failed to insert record");
+      LOGGER.warn("IoTDBSessionReporter failed to insert record, because ", e);
     }
   }
 }
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/prometheus/PrometheusReporter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/prometheus/PrometheusReporter.java
index 551bd28332..6a78bb2879 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/prometheus/PrometheusReporter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/prometheus/PrometheusReporter.java
@@ -54,9 +54,9 @@ import java.util.Map;
 
 public class PrometheusReporter implements Reporter {
   private static final Logger LOGGER = LoggerFactory.getLogger(PrometheusReporter.class);
-  private static final MetricConfig metricConfig =
+  private static final MetricConfig METRIC_CONFIG =
       MetricConfigDescriptor.getInstance().getMetricConfig();
-  private AbstractMetricManager metricManager;
+  private final AbstractMetricManager metricManager;
   private DisposableServer httpServer;
 
   public PrometheusReporter(AbstractMetricManager metricManager) {
@@ -66,6 +66,7 @@ public class PrometheusReporter implements Reporter {
   @Override
   public boolean start() {
     if (httpServer != null) {
+      LOGGER.warn("PrometheusReporter already start!");
       return false;
     }
     try {
@@ -73,7 +74,7 @@ public class PrometheusReporter implements Reporter {
           HttpServer.create()
               .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 2000)
               .channelGroup(new DefaultChannelGroup(GlobalEventExecutor.INSTANCE))
-              .port(metricConfig.getPrometheusReporterPort())
+              .port(METRIC_CONFIG.getPrometheusReporterPort())
               .route(
                   routes ->
                       routes.get(
@@ -82,11 +83,11 @@ public class PrometheusReporter implements Reporter {
               .bindNow();
     } catch (Exception e) {
       httpServer = null;
-      LOGGER.error("Failed to start prometheus reporter", e);
+      LOGGER.warn("PrometheusReporter failed to start, because ", e);
       return false;
     }
     LOGGER.info(
-        "http server for metrics started, listen on {}", metricConfig.getPrometheusReporterPort());
+        "PrometheusReporter started, use port {}", METRIC_CONFIG.getPrometheusReporterPort());
     return true;
   }
 
@@ -209,10 +210,11 @@ public class PrometheusReporter implements Reporter {
         httpServer.disposeNow(Duration.ofSeconds(10));
         httpServer = null;
       } catch (Exception e) {
-        LOGGER.error("failed to stop server", e);
+        LOGGER.error("Prometheus Reporter failed to stop, because ", e);
         return false;
       }
     }
+    LOGGER.info("PrometheusReporter stop!");
     return true;
   }
 
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/AutoGauge.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/AutoGauge.java
index 8323ae4d69..d50765ca75 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/AutoGauge.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/AutoGauge.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.metrics.type;
 import java.util.Map;
 
 public interface AutoGauge extends IMetric {
-  /** get value according to the state of obj */
+  /** get value according to the state of obj. */
   long value();
 
   @Override
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Counter.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Counter.java
index a5bb6c6a89..d1aff9a86d 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Counter.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Counter.java
@@ -23,13 +23,13 @@ import java.util.Map;
 
 public interface Counter extends IMetric {
 
-  /** Counter add 1 */
+  /** Counter add 1. */
   void inc();
 
-  /** Counter add n */
+  /** Counter add n. */
   void inc(long n);
 
-  /** Get the value of counter */
+  /** Get the value of counter. */
   long count();
 
   @Override
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Gauge.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Gauge.java
index 9fabe2e0d9..17a6a92f8f 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Gauge.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Gauge.java
@@ -23,16 +23,16 @@ import java.util.Map;
 
 public interface Gauge extends IMetric {
 
-  /** Set value */
+  /** Set value. */
   void set(long value);
 
-  /** Get value stored in gauge */
+  /** Get value stored in gauge. */
   long value();
 
-  /** Increase the value stored in gauge */
+  /** Increase the value stored in gauge. */
   void incr(long value);
 
-  /** Decrease the value stored in gauge */
+  /** Decrease the value stored in gauge. */
   void decr(long value);
 
   @Override
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Histogram.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Histogram.java
index 6b3e156c94..cf1d7c7790 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Histogram.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Histogram.java
@@ -23,13 +23,13 @@ import java.util.Map;
 
 public interface Histogram extends IMetric {
 
-  /** Update histogram by value */
+  /** Update histogram by value. */
   void update(long value);
 
-  /** Get the value of histogram */
+  /** Get the value of histogram. */
   long count();
 
-  /** Take snapshot of histogram */
+  /** Take snapshot of histogram. */
   HistogramSnapshot takeSnapshot();
 
   @Override
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/HistogramSnapshot.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/HistogramSnapshot.java
index c4ca57b049..468ab6a44d 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/HistogramSnapshot.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/HistogramSnapshot.java
@@ -25,25 +25,25 @@ import java.util.Map;
 /** Used by timer and histogram. */
 public interface HistogramSnapshot extends IMetric {
 
-  /** Get value by quantile */
+  /** Get value by quantile. */
   double getValue(double quantile);
 
-  /** Get values in snapshot */
+  /** Get values in snapshot. */
   long[] getValues();
 
-  /** Get the size of values in snapshot */
+  /** Get the size of values in snapshot. */
   int size();
 
-  /** Get min value in values */
+  /** Get min value in values. */
   long getMin();
 
-  /** Get median value in values */
+  /** Get median value in values. */
   double getMedian();
 
-  /** Get mean value in values */
+  /** Get mean value in values. */
   double getMean();
 
-  /** Get max value in values */
+  /** Get max value in values. */
   long getMax();
 
   @Override
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Rate.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Rate.java
index 5bfacaa485..593c727b2e 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Rate.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Rate.java
@@ -23,25 +23,25 @@ import java.util.Map;
 
 public interface Rate extends IMetric {
 
-  /** Get the value of rate */
+  /** Get the value of rate. */
   long getCount();
 
-  /** Get one minute rate */
+  /** Get one minute rate. */
   double getOneMinuteRate();
 
-  /** Get mean rate */
+  /** Get mean rate. */
   double getMeanRate();
 
-  /** Get five minute rate */
+  /** Get five minute rate. */
   double getFiveMinuteRate();
 
-  /** Get fifteen minute rate */
+  /** Get fifteen minute rate. */
   double getFifteenMinuteRate();
 
-  /** Mark in rate */
+  /** Mark in rate. */
   void mark();
 
-  /** Mark n in rate */
+  /** Mark n in rate. */
   void mark(long n);
 
   @Override
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Timer.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Timer.java
index cfdae14cab..020d209f93 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Timer.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/type/Timer.java
@@ -24,28 +24,28 @@ import java.util.concurrent.TimeUnit;
 
 public interface Timer extends IMetric {
 
-  /** Update time of timer */
+  /** Update time of timer. */
   void update(long duration, TimeUnit unit);
 
-  /** Update timer by millisecond */
+  /** Update timer by millisecond. */
   default void updateMillis(long durationMillis) {
     update(durationMillis, TimeUnit.MILLISECONDS);
   }
 
-  /** Update timer by microseconds */
+  /** Update timer by microseconds. */
   default void updateMicros(long durationMicros) {
     update(durationMicros, TimeUnit.MICROSECONDS);
   }
 
-  /** Update timer by nanoseconds */
+  /** Update timer by nanoseconds. */
   default void updateNanos(long durationNanos) {
     update(durationNanos, TimeUnit.NANOSECONDS);
   }
 
-  /** Take snapshot of timer */
+  /** Take snapshot of timer. */
   HistogramSnapshot takeSnapshot();
 
-  /** It's not safe to use the update interface of this rate */
+  /** It's not safe to use the update interface of this rate. */
   Rate getImmutableRate();
 
   @Override
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
index ae20b15ca7..83cbba1776 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
@@ -25,16 +25,16 @@ import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
 import java.util.Map;
 
 public class IoTDBMetricsUtils {
-  private static final MetricConfig metricConfig =
+  private static final MetricConfig METRIC_CONFIG =
       MetricConfigDescriptor.getInstance().getMetricConfig();
   public static final String DATABASE = "root.__system";
 
-  /** Generate the path of metric by metricInfo */
+  /** Generate the path of metric by metricInfo. */
   public static String generatePath(MetricInfo metricInfo) {
     return generatePath(metricInfo.getName(), metricInfo.getTags());
   }
 
-  /** Generate the path of metric with tags array */
+  /** Generate the path of metric with tags array. */
   public static String generatePath(String name, String... tags) {
     StringBuilder stringBuilder = generateMetric(name);
     for (int i = 0; i < tags.length; i += 2) {
@@ -49,7 +49,7 @@ public class IoTDBMetricsUtils {
     return stringBuilder.toString();
   }
 
-  /** Generate the path of metric with tags map */
+  /** Generate the path of metric with tags map. */
   public static String generatePath(String name, Map<String, String> tags) {
     StringBuilder stringBuilder = generateMetric(name);
     for (Map.Entry<String, String> entry : tags.entrySet()) {
@@ -64,17 +64,17 @@ public class IoTDBMetricsUtils {
     return stringBuilder.toString();
   }
 
-  /** Generate the path of metric */
+  /** Generate the path of metric. */
   private static StringBuilder generateMetric(String name) {
     StringBuilder stringBuilder = new StringBuilder();
     stringBuilder
         .append(DATABASE)
         .append(".")
-        .append(metricConfig.getIoTDBReporterConfig().getLocation())
+        .append(METRIC_CONFIG.getIotdbReporterConfig().getLocation())
         .append(".`")
-        .append(metricConfig.getRpcAddress())
+        .append(METRIC_CONFIG.getRpcAddress())
         .append(":")
-        .append(metricConfig.getRpcPort())
+        .append(METRIC_CONFIG.getRpcPort())
         .append("`")
         .append(".")
         .append("`")
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricInfo.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricInfo.java
index 2a095527cd..1398d05249 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricInfo.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricInfo.java
@@ -35,11 +35,11 @@ public class MetricInfo {
 
   private static final Logger logger = LoggerFactory.getLogger(MetricInfo.class);
   private static final Integer PAIR_SIZE = 2;
-  /** The name of metric */
+  /** The name of metric. */
   private final String name;
-  /** The tags of metric */
+  /** The tags of metric. */
   private final Map<String, String> tags = new LinkedHashMap<>();
-  /** The metaInfo of metric */
+  /** The metaInfo of metric. */
   private final MetaInfo metaInfo;
 
   public MetricInfo(MetricType type, String name, String... tags) {
@@ -76,7 +76,7 @@ public class MetricInfo {
     return metaInfo;
   }
 
-  /** Convert the metric name and tag into pair */
+  /** Convert the metric name and tag into pair. */
   public Pair<String, String[]> toStringArray() {
     List<String> allNames = new ArrayList<>();
     tags.forEach(
@@ -133,9 +133,9 @@ public class MetricInfo {
   }
 
   public static class MetaInfo {
-    /** The type of metric */
+    /** The type of metric. */
     private final MetricType type;
-    /** The tag keys of metric */
+    /** The tag keys of metric. */
     private final Set<String> tagNames;
 
     public MetaInfo(MetricType type, Set<String> tagNames) {
@@ -143,7 +143,7 @@ public class MetricInfo {
       this.tagNames = tagNames;
     }
 
-    /** Check whether the keys of tags are same */
+    /** Check whether the keys of tags are same. */
     public boolean hasSameKey(String... tags) {
       if (tags.length != tagNames.size() * 2) {
         return false;
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricLevel.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricLevel.java
index 691f2ec285..428eb866d9 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricLevel.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricLevel.java
@@ -25,8 +25,8 @@ public enum MetricLevel {
   IMPORTANT(2),
   CORE(3);
 
-  /** Level of metric service */
-  int level;
+  /** Level of metric service. */
+  final int level;
 
   MetricLevel(int level) {
     this.level = level;
diff --git a/metrics/interface/src/test/java/org/apache/iotdb/metrics/config/MetricConfigTest.java b/metrics/interface/src/test/java/org/apache/iotdb/metrics/config/MetricConfigTest.java
index df749f2be0..76010eeaa0 100644
--- a/metrics/interface/src/test/java/org/apache/iotdb/metrics/config/MetricConfigTest.java
+++ b/metrics/interface/src/test/java/org/apache/iotdb/metrics/config/MetricConfigTest.java
@@ -58,7 +58,7 @@ public class MetricConfigTest {
     assertEquals(10, (int) metricConfig.getAsyncCollectPeriodInSecond());
     assertEquals(9090, (int) metricConfig.getPrometheusReporterPort());
 
-    MetricConfig.IoTDBReporterConfig reporterConfig = metricConfig.getIoTDBReporterConfig();
+    MetricConfig.IoTDBReporterConfig reporterConfig = metricConfig.getIotdbReporterConfig();
     assertEquals("0.0.0.0", reporterConfig.getHost());
     assertEquals(6669, (int) reporterConfig.getPort());
     assertEquals("user", reporterConfig.getUsername());
@@ -98,7 +98,7 @@ public class MetricConfigTest {
     assertEquals(10, (int) metricConfig.getAsyncCollectPeriodInSecond());
     assertEquals(9090, (int) metricConfig.getPrometheusReporterPort());
 
-    MetricConfig.IoTDBReporterConfig reporterConfig = metricConfig.getIoTDBReporterConfig();
+    MetricConfig.IoTDBReporterConfig reporterConfig = metricConfig.getIotdbReporterConfig();
     assertEquals("0.0.0.0", reporterConfig.getHost());
     assertEquals(6669, (int) reporterConfig.getPort());
     assertEquals("user", reporterConfig.getUsername());
diff --git a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/MicrometerJmxReporter.java b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/MicrometerJmxReporter.java
index c1d2685c58..6aaf75ca29 100644
--- a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/MicrometerJmxReporter.java
+++ b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/MicrometerJmxReporter.java
@@ -44,14 +44,15 @@ public class MicrometerJmxReporter implements JmxReporter {
               .filter(reporter -> reporter instanceof JmxMeterRegistry)
               .collect(Collectors.toSet());
       if (meterRegistrySet.size() != 0) {
-        LOGGER.warn("Jmx Reporter already start");
+        LOGGER.warn("Micrometer JmxReporter already start!");
         return false;
       }
       Metrics.addRegistry(new JmxMeterRegistry(JmxConfig.DEFAULT, Clock.SYSTEM));
     } catch (Exception e) {
-      LOGGER.error("Failed to start Micrometer JmxReporter, because {}", e.getMessage());
+      LOGGER.warn("Micrometer JmxReporter failed to start, because ", e);
       return false;
     }
+    LOGGER.info("Micrometer JmxReporter start!");
     return true;
   }
 
@@ -70,9 +71,10 @@ public class MicrometerJmxReporter implements JmxReporter {
         }
       }
     } catch (Exception e) {
-      LOGGER.error("Failed to stop Micrometer JmxReporter, because {}", e.getMessage());
+      LOGGER.warn("Micrometer JmxReporter failed to stop, because ", e);
       return false;
     }
+    LOGGER.info("Micrometer JmxReporter stop!");
     return true;
   }
 
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/MetricService.java b/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/MetricService.java
index 5da8cf628d..c8f3cbdeda 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/MetricService.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/MetricService.java
@@ -27,65 +27,67 @@ import org.apache.iotdb.commons.service.ServiceType;
 import org.apache.iotdb.metrics.AbstractMetricService;
 import org.apache.iotdb.metrics.config.ReloadLevel;
 import org.apache.iotdb.metrics.metricsets.IMetricSet;
-import org.apache.iotdb.metrics.reporter.iotdb.InternalIoTDBReporter;
-import org.apache.iotdb.metrics.reporter.iotdb.MemoryInternalIoTDBReporter;
+import org.apache.iotdb.metrics.reporter.iotdb.IoTDBInternalMemoryReporter;
+import org.apache.iotdb.metrics.reporter.iotdb.IoTDBInternalReporter;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class MetricService extends AbstractMetricService implements MetricServiceMBean, IService {
-  private static final Logger logger = LoggerFactory.getLogger(MetricService.class);
+  private static final Logger LOGGER = LoggerFactory.getLogger(MetricService.class);
   private final String mbeanName =
       String.format(
           "%s:%s=%s", IoTDBConstant.IOTDB_PACKAGE, IoTDBConstant.JMX_TYPE, getID().getJmxName());
 
-  private MetricService() {}
+  private MetricService() {
+    // empty constructor
+  }
 
   @Override
   public void start() throws StartupException {
     try {
-      logger.info("Start to start metric Service.");
+      LOGGER.info("MetricService start to init.");
       JMXService.registerMBean(getInstance(), mbeanName);
       startService();
-      logger.info("Finish start metric Service");
+      LOGGER.info("MetricService start successfully.");
     } catch (Exception e) {
-      logger.error("Failed to start {} because: ", this.getID().getName(), e);
+      LOGGER.error("MetricService failed to start {} because: ", this.getID().getName(), e);
       throw new StartupException(this.getID().getName(), e.getMessage());
     }
   }
 
-  /** Restart metric service */
+  /** Restart metric service. */
   public void restartService() {
-    logger.info("Restart metric service");
+    LOGGER.info("MetricService try to restart.");
     stopCoreModule();
     internalReporter.clear();
     startCoreModule();
     for (IMetricSet metricSet : metricSets) {
-      logger.info("Restart metricSet: {}", metricSet.getClass().getName());
+      LOGGER.info("MetricService rebind metricSet: {}", metricSet.getClass().getName());
       metricSet.unbindFrom(this);
       metricSet.bindTo(this);
     }
-    logger.info("Finish restarting metric service");
+    LOGGER.info("MetricService restart successfully.");
   }
 
   @Override
   public void stop() {
-    logger.info("Stop metric service");
+    LOGGER.info("MetricService try to stop.");
     internalReporter.stop();
-    internalReporter = new MemoryInternalIoTDBReporter();
+    internalReporter = new IoTDBInternalMemoryReporter();
     stopService();
     JMXService.deregisterMBean(mbeanName);
-    logger.info("Finish stopping metric service");
+    LOGGER.info("MetricService stop successfully.");
   }
 
   @Override
-  public void reloadInternalReporter(InternalIoTDBReporter internalReporter) {
-    logger.info("Reload internal reporter");
+  public void reloadInternalReporter(IoTDBInternalReporter internalReporter) {
+    LOGGER.info("MetricService reload internal reporter.");
     internalReporter.addAutoGauge(this.internalReporter.getAllAutoGauge());
     this.internalReporter.stop();
     this.internalReporter = internalReporter;
     startInternalReporter();
-    logger.info("Finish reloading internal reporter");
+    LOGGER.info("MetricService reload internal reporter successfully.");
   }
 
   @Override
@@ -99,10 +101,10 @@ public class MetricService extends AbstractMetricService implements MetricServic
           stopAllReporter();
           loadReporter();
           startAllReporter();
-          logger.info("Finish restart metric reporters.");
+          LOGGER.info("MetricService restart reporters successfully.");
           break;
         case NOTHING:
-          logger.debug("There are nothing change in metric module.");
+          LOGGER.debug("There are nothing change in metric config.");
           break;
         default:
           break;
@@ -115,14 +117,14 @@ public class MetricService extends AbstractMetricService implements MetricServic
     return ServiceType.METRIC_SERVICE;
   }
 
-  public void updateInternalReporter(InternalIoTDBReporter InternalReporter) {
-    this.internalReporter = InternalReporter;
+  public void updateInternalReporter(IoTDBInternalReporter internalReporter) {
+    this.internalReporter = internalReporter;
   }
 
   public void startInternalReporter() {
     if (!this.internalReporter.start()) {
-      logger.error("Failed to start internal reporter");
-      this.internalReporter = new MemoryInternalIoTDBReporter();
+      LOGGER.warn("Internal Reporter failed to start!");
+      this.internalReporter = new IoTDBInternalMemoryReporter();
     }
   }
 
@@ -134,6 +136,8 @@ public class MetricService extends AbstractMetricService implements MetricServic
 
     private static final MetricService INSTANCE = new MetricService();
 
-    private MetricsServiceHolder() {}
+    private MetricsServiceHolder() {
+      // empty constructor
+    }
   }
 }
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/MetricServiceMBean.java b/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/MetricServiceMBean.java
index 6b8f329a82..13dab9c235 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/MetricServiceMBean.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/MetricServiceMBean.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.iotdb.commons.service.metric;
 
 import org.apache.iotdb.commons.exception.StartupException;
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/enums/Operation.java b/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/enums/Operation.java
index fa6570e2eb..d4a8651e5e 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/enums/Operation.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/service/metric/enums/Operation.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.iotdb.commons.service.metric.enums;
 
 public enum Operation {
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 377af01153..2c897229ab 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -39,15 +39,15 @@ import org.apache.iotdb.db.engine.compaction.constant.InnerUnsequenceCompactionS
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.qp.utils.DateTimeUtils;
 import org.apache.iotdb.db.rescon.SystemInfo;
-import org.apache.iotdb.db.service.metrics.IoTDBInternalReporter;
+import org.apache.iotdb.db.service.metrics.IoTDBInternalLocalReporter;
 import org.apache.iotdb.db.utils.datastructure.TVListSortAlgorithm;
 import org.apache.iotdb.db.wal.WALManager;
 import org.apache.iotdb.db.wal.utils.WALMode;
 import org.apache.iotdb.external.api.IPropertiesLoader;
 import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
 import org.apache.iotdb.metrics.config.ReloadLevel;
-import org.apache.iotdb.metrics.reporter.iotdb.InternalIoTDBReporter;
-import org.apache.iotdb.metrics.reporter.iotdb.MemoryInternalIoTDBReporter;
+import org.apache.iotdb.metrics.reporter.iotdb.IoTDBInternalMemoryReporter;
+import org.apache.iotdb.metrics.reporter.iotdb.IoTDBInternalReporter;
 import org.apache.iotdb.metrics.utils.InternalReporterType;
 import org.apache.iotdb.rpc.RpcTransportFactory;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
@@ -1515,12 +1515,12 @@ public class IoTDBDescriptor {
     ReloadLevel reloadLevel = MetricConfigDescriptor.getInstance().loadHotProps(commonProperties);
     logger.info("Reload metric service in level {}", reloadLevel);
     if (reloadLevel == ReloadLevel.RESTART_INTERNAL_REPORTER) {
-      InternalIoTDBReporter internalReporter;
+      IoTDBInternalReporter internalReporter;
       if (MetricConfigDescriptor.getInstance().getMetricConfig().getInternalReportType()
           == InternalReporterType.IOTDB) {
-        internalReporter = new IoTDBInternalReporter();
+        internalReporter = new IoTDBInternalLocalReporter();
       } else {
-        internalReporter = new MemoryInternalIoTDBReporter();
+        internalReporter = new IoTDBInternalMemoryReporter();
       }
       MetricService.getInstance().reloadInternalReporter(internalReporter);
     } else {
diff --git a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
index b8be4a0fc0..823201affe 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
@@ -71,7 +71,7 @@ import org.apache.iotdb.db.protocol.rest.RestService;
 import org.apache.iotdb.db.service.basic.ServiceProvider;
 import org.apache.iotdb.db.service.basic.StandaloneServiceProvider;
 import org.apache.iotdb.db.service.metrics.DataNodeMetricsHelper;
-import org.apache.iotdb.db.service.metrics.IoTDBInternalReporter;
+import org.apache.iotdb.db.service.metrics.IoTDBInternalLocalReporter;
 import org.apache.iotdb.db.service.thrift.impl.ClientRPCServiceImpl;
 import org.apache.iotdb.db.service.thrift.impl.DataNodeRegionManager;
 import org.apache.iotdb.db.sync.SyncService;
@@ -562,7 +562,7 @@ public class DataNode implements DataNodeMBean {
         .getMetricConfig()
         .getInternalReportType()
         .equals(InternalReporterType.IOTDB)) {
-      MetricService.getInstance().updateInternalReporter(new IoTDBInternalReporter());
+      MetricService.getInstance().updateInternalReporter(new IoTDBInternalLocalReporter());
     }
     MetricService.getInstance().startInternalReporter();
     // bind predefined metrics
diff --git a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
index 63e9bc6f4b..c18b6d2fae 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
@@ -43,10 +43,10 @@ import org.apache.iotdb.db.rescon.SystemInfo;
 import org.apache.iotdb.db.service.basic.ServiceProvider;
 import org.apache.iotdb.db.service.basic.StandaloneServiceProvider;
 import org.apache.iotdb.db.service.metrics.DataNodeMetricsHelper;
-import org.apache.iotdb.db.service.metrics.IoTDBInternalReporter;
 import org.apache.iotdb.db.sync.SyncService;
 import org.apache.iotdb.db.wal.WALManager;
 import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
+import org.apache.iotdb.metrics.reporter.iotdb.IoTDBInternalMemoryReporter;
 import org.apache.iotdb.metrics.utils.InternalReporterType;
 
 import org.slf4j.Logger;
@@ -183,7 +183,7 @@ public class IoTDB implements IoTDBMBean {
         .getMetricConfig()
         .getInternalReportType()
         .equals(InternalReporterType.IOTDB)) {
-      MetricService.getInstance().updateInternalReporter(new IoTDBInternalReporter());
+      MetricService.getInstance().updateInternalReporter(new IoTDBInternalMemoryReporter());
     }
     MetricService.getInstance().startInternalReporter();
     // bind predefined metrics
diff --git a/server/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java b/server/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java
index e36b3b653e..1674b22eb4 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/metrics/DataNodeMetricsHelper.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.metrics.metricsets.jvm.JvmMetrics;
 import org.apache.iotdb.metrics.metricsets.logback.LogbackMetrics;
 
 public class DataNodeMetricsHelper {
-  /** Bind predefined metric sets into DataNode */
+  /** Bind predefined metric sets into DataNode. */
   public static void bind() {
     MetricService.getInstance().addMetricSet(new JvmMetrics());
     MetricService.getInstance().addMetricSet(new LogbackMetrics());
diff --git a/server/src/main/java/org/apache/iotdb/db/service/metrics/FileMetrics.java b/server/src/main/java/org/apache/iotdb/db/service/metrics/FileMetrics.java
index b6436d70b7..f9d4329440 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/metrics/FileMetrics.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/metrics/FileMetrics.java
@@ -30,16 +30,12 @@ import org.apache.iotdb.metrics.metricsets.IMetricSet;
 import org.apache.iotdb.metrics.utils.MetricLevel;
 import org.apache.iotdb.metrics.utils.MetricType;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
 public class FileMetrics implements IMetricSet {
-  private static final Logger logger = LoggerFactory.getLogger(FileMetrics.class);
   private Future<?> currentServiceFuture;
   private final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
   private long walFileTotalSize = 0L;
diff --git a/server/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalReporter.java b/server/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
similarity index 84%
rename from server/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalReporter.java
rename to server/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
index cac9714802..ce21ce89fd 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalReporter.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
@@ -37,7 +37,7 @@ import org.apache.iotdb.db.mpp.plan.parser.StatementGenerator;
 import org.apache.iotdb.db.mpp.plan.statement.Statement;
 import org.apache.iotdb.db.query.control.SessionManager;
 import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
-import org.apache.iotdb.metrics.reporter.iotdb.InternalIoTDBReporter;
+import org.apache.iotdb.metrics.reporter.iotdb.IoTDBInternalReporter;
 import org.apache.iotdb.metrics.utils.InternalReporterType;
 import org.apache.iotdb.metrics.utils.ReporterType;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
@@ -59,26 +59,26 @@ import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
-public class IoTDBInternalReporter extends InternalIoTDBReporter {
-  private static final Logger LOGGER = LoggerFactory.getLogger(IoTDBInternalReporter.class);
+public class IoTDBInternalLocalReporter extends IoTDBInternalReporter {
+  private static final Logger LOGGER = LoggerFactory.getLogger(IoTDBInternalLocalReporter.class);
   private static final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
   private static final SessionManager SESSION_MANAGER = SessionManager.getInstance();
   private static final Coordinator COORDINATOR = Coordinator.getInstance();
-  private final SessionInfo SESSION_INFO;
-  private final IPartitionFetcher PARTITION_FETCHER;
-  private final ISchemaFetcher SCHEMA_FETCHER;
+  private final SessionInfo sessionInfo;
+  private final IPartitionFetcher partitionFetcher;
+  private final ISchemaFetcher schemaFetcher;
   private Future<?> currentServiceFuture;
   private final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
 
-  public IoTDBInternalReporter() {
+  public IoTDBInternalLocalReporter() {
     if (config.isClusterMode()) {
-      PARTITION_FETCHER = ClusterPartitionFetcher.getInstance();
-      SCHEMA_FETCHER = ClusterSchemaFetcher.getInstance();
+      partitionFetcher = ClusterPartitionFetcher.getInstance();
+      schemaFetcher = ClusterSchemaFetcher.getInstance();
     } else {
-      PARTITION_FETCHER = StandalonePartitionFetcher.getInstance();
-      SCHEMA_FETCHER = StandaloneSchemaFetcher.getInstance();
+      partitionFetcher = StandalonePartitionFetcher.getInstance();
+      schemaFetcher = StandaloneSchemaFetcher.getInstance();
     }
-    SESSION_INFO = new SessionInfo(0, "root", ZoneId.systemDefault().getId());
+    sessionInfo = new SessionInfo(0, "root", ZoneId.systemDefault().getId());
   }
 
   @Override
@@ -101,6 +101,7 @@ public class IoTDBInternalReporter extends InternalIoTDBReporter {
             1,
             MetricConfigDescriptor.getInstance().getMetricConfig().getAsyncCollectPeriodInSecond(),
             TimeUnit.SECONDS);
+    LOGGER.info("IoTDBInternalReporter start!");
     return true;
   }
 
@@ -111,6 +112,7 @@ public class IoTDBInternalReporter extends InternalIoTDBReporter {
       currentServiceFuture = null;
     }
     clear();
+    LOGGER.info("IoTDBInternalReporter stop!");
     return true;
   }
 
@@ -144,14 +146,15 @@ public class IoTDBInternalReporter extends InternalIoTDBReporter {
       Statement s = StatementGenerator.createStatement(request);
       final long queryId = SESSION_MANAGER.requestQueryId();
       ExecutionResult result =
-          COORDINATOR.execute(s, queryId, SESSION_INFO, "", PARTITION_FETCHER, SCHEMA_FETCHER);
+          COORDINATOR.execute(s, queryId, sessionInfo, "", partitionFetcher, schemaFetcher);
       if (result.status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
         LOGGER.error("Failed to update the value of metric with status {}", result.status);
       }
     } catch (IoTDBConnectionException e1) {
-      LOGGER.error("Failed to update the value of metric because of unknown type");
+      LOGGER.error(
+          "Failed to update the value of metric because of connection failure, because ", e1);
     } catch (IllegalPathException | QueryProcessException e2) {
-      LOGGER.error("Failed to update the value of metric because of internal error");
+      LOGGER.error("Failed to update the value of metric because of internal error, because ", e2);
     }
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/service/metrics/ProcessMetrics.java b/server/src/main/java/org/apache/iotdb/db/service/metrics/ProcessMetrics.java
index fe4d245f62..190ae7e978 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/metrics/ProcessMetrics.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/metrics/ProcessMetrics.java
@@ -31,18 +31,18 @@ import com.sun.management.OperatingSystemMXBean;
 import java.lang.management.ManagementFactory;
 
 public class ProcessMetrics implements IMetricSet {
-  private OperatingSystemMXBean sunOsMXBean;
-  private Runtime runtime;
+  private final OperatingSystemMXBean sunOsMxBean;
+  private final Runtime runtime;
 
   public ProcessMetrics() {
-    sunOsMXBean =
+    sunOsMxBean =
         (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
     runtime = Runtime.getRuntime();
   }
 
   @Override
   public void bindTo(AbstractMetricService metricService) {
-    collectProcessCPUInfo(metricService);
+    collectProcessCpuInfo(metricService);
     collectProcessMemInfo(metricService);
     collectProcessStatusInfo(metricService);
     collectThreadInfo(metricService);
@@ -50,31 +50,31 @@ public class ProcessMetrics implements IMetricSet {
 
   @Override
   public void unbindFrom(AbstractMetricService metricService) {
-    removeProcessCPUInfo(metricService);
+    removeProcessCpuInfo(metricService);
     removeProcessMemInfo(metricService);
     removeProcessStatusInfo(metricService);
     removeThreadInfo(metricService);
   }
 
-  private void collectProcessCPUInfo(AbstractMetricService metricService) {
+  private void collectProcessCpuInfo(AbstractMetricService metricService) {
     metricService.createAutoGauge(
         Metric.PROCESS_CPU_LOAD.toString(),
         MetricLevel.CORE,
-        sunOsMXBean,
-        a -> (long) (sunOsMXBean.getProcessCpuLoad() * 100),
+        sunOsMxBean,
+        a -> (long) (sunOsMxBean.getProcessCpuLoad() * 100),
         Tag.NAME.toString(),
         "process");
 
     metricService.createAutoGauge(
         Metric.PROCESS_CPU_TIME.toString(),
         MetricLevel.CORE,
-        sunOsMXBean,
+        sunOsMxBean,
         com.sun.management.OperatingSystemMXBean::getProcessCpuTime,
         Tag.NAME.toString(),
         "process");
   }
 
-  private void removeProcessCPUInfo(AbstractMetricService metricService) {
+  private void removeProcessCpuInfo(AbstractMetricService metricService) {
     metricService.remove(
         MetricType.AUTO_GAUGE, Metric.PROCESS_CPU_LOAD.toString(), Tag.NAME.toString(), "process");
 
@@ -178,17 +178,16 @@ public class ProcessMetrics implements IMetricSet {
   }
 
   private int getThreadsCount() {
-    ThreadGroup parentThread;
-    for (parentThread = Thread.currentThread().getThreadGroup();
-        parentThread.getParent() != null;
-        parentThread = parentThread.getParent()) {}
-
+    ThreadGroup parentThread = Thread.currentThread().getThreadGroup();
+    while (parentThread.getParent() != null) {
+      parentThread = parentThread.getParent();
+    }
     return parentThread.activeCount();
   }
 
   private double getProcessMemoryRatio() {
     long processUsedMemory = getProcessUsedMemory();
-    long totalPhysicalMemorySize = sunOsMXBean.getTotalPhysicalMemorySize();
+    long totalPhysicalMemorySize = sunOsMxBean.getTotalPhysicalMemorySize();
     return (double) processUsedMemory / (double) totalPhysicalMemorySize * 100;
   }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/service/metrics/SystemMetrics.java b/server/src/main/java/org/apache/iotdb/db/service/metrics/SystemMetrics.java
index 7bb2b77a8a..7d14b5d9b3 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/metrics/SystemMetrics.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/metrics/SystemMetrics.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.iotdb.db.service.metrics;
 
 import org.apache.iotdb.commons.concurrent.threadpool.ScheduledExecutorUtil;
@@ -47,17 +48,17 @@ import java.util.concurrent.TimeUnit;
 
 public class SystemMetrics implements IMetricSet {
   private static final Logger logger = LoggerFactory.getLogger(SystemMetrics.class);
-  private com.sun.management.OperatingSystemMXBean osMXBean;
+  private final com.sun.management.OperatingSystemMXBean osMxBean;
   private Future<?> currentServiceFuture;
   private final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
   private final Set<FileStore> fileStores = new HashSet<>();
-  private boolean isDataNode = false;
+  private final boolean isDataNode;
   private long systemDiskTotalSpace = 0L;
   private long systemDiskFreeSpace = 0L;
 
   public SystemMetrics(boolean isDataNode) {
     this.isDataNode = isDataNode;
-    this.osMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
+    this.osMxBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
   }
 
   @Override
@@ -99,15 +100,15 @@ public class SystemMetrics implements IMetricSet {
     metricService.createAutoGauge(
         Metric.SYS_CPU_LOAD.toString(),
         MetricLevel.CORE,
-        osMXBean,
-        a -> (long) (osMXBean.getSystemCpuLoad() * 100),
+        osMxBean,
+        a -> (long) (osMxBean.getSystemCpuLoad() * 100),
         Tag.NAME.toString(),
         "system");
 
     metricService
         .getOrCreateGauge(
             Metric.SYS_CPU_CORES.toString(), MetricLevel.CORE, Tag.NAME.toString(), "system")
-        .set(osMXBean.getAvailableProcessors());
+        .set(osMxBean.getAvailableProcessors());
   }
 
   private void removeSystemCpuInfo(AbstractMetricService metricService) {
@@ -125,33 +126,33 @@ public class SystemMetrics implements IMetricSet {
             MetricLevel.CORE,
             Tag.NAME.toString(),
             "system")
-        .set(osMXBean.getTotalPhysicalMemorySize());
+        .set(osMxBean.getTotalPhysicalMemorySize());
     metricService.createAutoGauge(
         Metric.SYS_FREE_PHYSICAL_MEMORY_SIZE.toString(),
         MetricLevel.CORE,
-        osMXBean,
-        a -> osMXBean.getFreePhysicalMemorySize(),
+        osMxBean,
+        a -> osMxBean.getFreePhysicalMemorySize(),
         Tag.NAME.toString(),
         "system");
     metricService.createAutoGauge(
         Metric.SYS_TOTAL_SWAP_SPACE_SIZE.toString(),
         MetricLevel.CORE,
-        osMXBean,
-        a -> osMXBean.getTotalSwapSpaceSize(),
+        osMxBean,
+        a -> osMxBean.getTotalSwapSpaceSize(),
         Tag.NAME.toString(),
         "system");
     metricService.createAutoGauge(
         Metric.SYS_FREE_SWAP_SPACE_SIZE.toString(),
         MetricLevel.CORE,
-        osMXBean,
-        a -> osMXBean.getFreeSwapSpaceSize(),
+        osMxBean,
+        a -> osMxBean.getFreeSwapSpaceSize(),
         Tag.NAME.toString(),
         "system");
     metricService.createAutoGauge(
         Metric.SYS_COMMITTED_VM_SIZE.toString(),
         MetricLevel.CORE,
-        osMXBean,
-        a -> osMXBean.getCommittedVirtualMemorySize(),
+        osMxBean,
+        a -> osMxBean.getCommittedVirtualMemorySize(),
         Tag.NAME.toString(),
         "system");
   }
@@ -255,15 +256,7 @@ public class SystemMetrics implements IMetricSet {
     return systemDiskTotalSpace;
   }
 
-  public void setSystemDiskTotalSpace(long systemDiskTotalSpace) {
-    this.systemDiskTotalSpace = systemDiskTotalSpace;
-  }
-
   public long getSystemDiskFreeSpace() {
     return systemDiskFreeSpace;
   }
-
-  public void setSystemDiskFreeSpace(long systemDiskFreeSpace) {
-    this.systemDiskFreeSpace = systemDiskFreeSpace;
-  }
 }