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

chaow pushed a commit to branch feature/metric2021
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 776b86989d74996b7e40c599ed970b5d0154cf75
Author: chaow <[email protected]>
AuthorDate: Mon Mar 1 12:14:04 2021 +0800

    remove used in server module
---
 metrics/dropwizard-metrics/pom.xml                 |   4 +
 .../dropwizard/DropwizardMetricManager.java        |   7 +-
 .../dropwizard/DropwizardMetricReporter.java       |   9 +-
 metrics/interface/pom.xml                          |   8 +-
 .../{iotdb-metric.properties => iotdb-metric.yml}  |  27 +++---
 .../org/apache/iotdb/metrics/MetricManager.java    |   2 +
 .../org/apache/iotdb/metrics/MetricReporter.java   |   2 +
 .../org/apache/iotdb/metrics/MetricService.java    |  48 ++++++----
 ...{MetricConfig.java => IoTDBReporterConfig.java} |  60 +-----------
 .../apache/iotdb/metrics/config/MetricConfig.java  | 105 ++++++++++-----------
 .../metrics/config/MetricConfigDescriptor.java     |  57 ++---------
 .../DoNothingCounter.java}                         |  22 ++++-
 .../DoNothingGauge.java}                           |  17 +++-
 .../DoNothingHistogram.java}                       |  28 +++++-
 .../DoNothingHistogramSnapshot.java}               |  49 +++++++++-
 .../iotdb/metrics/impl/DoNothingMetricManager.java |  34 ++++---
 .../DoNothingMetricReporter.java}                  |  28 +++++-
 .../DoNothingRate.java}                            |  42 ++++++++-
 .../DoNothingTimer.java}                           |  26 ++++-
 .../iotdb/metrics/config/MetricConfigTest.java     |  57 +++++++++++
 .../resources/iotdb-metric.yml}                    |  28 +++---
 .../micrometer/MicrometerMetricManager.java        |   9 +-
 .../micrometer/MicrometerMetricReporter.java       |  14 ++-
 .../engine/storagegroup/StorageGroupProcessor.java |  36 -------
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  21 -----
 .../java/org/apache/iotdb/db/service/IoTDB.java    |   3 -
 .../org/apache/iotdb/db/service/TSServiceImpl.java |  24 -----
 27 files changed, 422 insertions(+), 345 deletions(-)

diff --git a/metrics/dropwizard-metrics/pom.xml 
b/metrics/dropwizard-metrics/pom.xml
index 5779fae..dc62f6e 100644
--- a/metrics/dropwizard-metrics/pom.xml
+++ b/metrics/dropwizard-metrics/pom.xml
@@ -23,5 +23,9 @@
             <groupId>io.dropwizard.metrics</groupId>
             <artifactId>metrics-jvm</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.dropwizard.metrics</groupId>
+            <artifactId>metrics-core</artifactId>
+        </dependency>
     </dependencies>
 </project>
diff --git 
a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java
 
b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java
index 1f34053..2418cce 100644
--- 
a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java
+++ 
b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricManager.java
@@ -65,7 +65,7 @@ public class DropwizardMetricManager implements MetricManager 
{
 
   public DropwizardMetricManager() {
     metricRegistry = new MetricRegistry();
-    isEnable = metricConfig.isEnabled();
+    isEnable = metricConfig.getEnableMetric();
     currentMeters = new ConcurrentHashMap<>();
   }
 
@@ -359,4 +359,9 @@ public class DropwizardMetricManager implements 
MetricManager {
   public boolean init() {
     return true;
   }
+
+  @Override
+  public String getName() {
+    return "DropwizardMetricManager";
+  }
 }
diff --git 
a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricReporter.java
 
b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricReporter.java
index 235f9ad..7e8fe5f 100644
--- 
a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricReporter.java
+++ 
b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/DropwizardMetricReporter.java
@@ -40,7 +40,7 @@ public class DropwizardMetricReporter implements 
MetricReporter {
 
   @Override
   public boolean start() {
-    List<String> reporters = metricConfig.getReporterList();
+    List<String> reporters = metricConfig.getMetricReporterList();
     for (String reporter : reporters) {
       switch (ReporterType.get(reporter)) {
         case JMX:
@@ -74,7 +74,7 @@ public class DropwizardMetricReporter implements 
MetricReporter {
 
   @Override
   public boolean stop() {
-    List<String> reporters = metricConfig.getReporterList();
+    List<String> reporters = metricConfig.getMetricReporterList();
     for (String reporter : reporters) {
       switch (ReporterType.get(reporter)) {
         case JMX:
@@ -90,4 +90,9 @@ public class DropwizardMetricReporter implements 
MetricReporter {
     }
     return true;
   }
+
+  @Override
+  public String getName() {
+    return "DropwizardMetricReporter";
+  }
 }
diff --git a/metrics/interface/pom.xml b/metrics/interface/pom.xml
index 9eed490..09e7743 100644
--- a/metrics/interface/pom.xml
+++ b/metrics/interface/pom.xml
@@ -31,5 +31,11 @@
     <name>metric interface</name>
     <description>Metrics interface for IoTDB</description>
     <url>https://github.com/thulab/iotdb/tree/master/tsfile</url>
-    <dependencies/>
+    <dependencies>
+        <dependency>
+            <groupId>org.yaml</groupId>
+            <artifactId>snakeyaml</artifactId>
+            <version>1.17</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git 
a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties 
b/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml
similarity index 80%
copy from 
metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties
copy to metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml
index fc13326..1db3dbf 100644
--- a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties
+++ b/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml
@@ -18,12 +18,17 @@
 #
 
 # whether enable the module
-enable_metric=true
+enableMetric: true
 
 # can be multiple reporter, e.g., jmx,prometheus,iotdb
-metric_reporter_list=jmx
+metricReporterList:
+  - jmx
 
-push_period_in_second=5
+  # the following configure should be matched
+metricManagerType: MicrometerMetricManager
+metricReporterType: MicrometerMetricReporter
+
+pushPeriodInSecond: 5
 
 
 ########################################################
@@ -32,7 +37,8 @@ push_period_in_second=5
 # then the following must be set                       #
 #                                                      #
 ########################################################
-prometheus_exporter_port=8090
+prometheusReporterConfig:
+  prometheusExporterPort: 8090
 
 ########################################################
 #                                                      #
@@ -40,10 +46,9 @@ prometheus_exporter_port=8090
 # then the following must be set                       #
 #                                                      #
 ########################################################
-iotdb_ip=127.0.0.1
-iotdb_port=6667
-iotdb_sg=_sysmetric
-iotdb_user=root
-iotdb_passwd=root
-
-
+ioTDBReporterConfig:
+  iotdbIp: 127.0.0.1
+  iotdbPort: 6667
+  iotdbSg: _sysmetric
+  iotdbUser: root
+  iotdbPasswd: root
\ No newline at end of file
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricManager.java 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricManager.java
index 8add6ed..7880aeb 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricManager.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricManager.java
@@ -100,4 +100,6 @@ public interface MetricManager {
    * @return
    */
   boolean init();
+
+  String getName();
 }
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
index 023f0fe..5e09e16 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
@@ -24,4 +24,6 @@ public interface MetricReporter {
   void setMetricManager(MetricManager metricManager);
 
   boolean stop();
+
+  String getName();
 }
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java
index c7a03fb..5bb196a 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricService.java
@@ -18,13 +18,14 @@
  */
 package org.apache.iotdb.metrics;
 
+import org.apache.iotdb.metrics.config.MetricConfig;
+import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
 import org.apache.iotdb.metrics.impl.DoNothingMetricManager;
+import org.apache.iotdb.metrics.impl.DoNothingMetricReporter;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.ServiceLoader;
 
 /** MetricService is the entry to manage all Metric system */
@@ -32,8 +33,6 @@ public class MetricService {
 
   private static final Logger logger = 
LoggerFactory.getLogger(MetricService.class);
 
-  private static final List<MetricReporter> reporters = new ArrayList<>();
-
   static {
     init();
   }
@@ -41,6 +40,10 @@ public class MetricService {
   private static final MetricService INSTANCE = new MetricService();
 
   private static MetricManager metricManager;
+  private static MetricReporter metricReporter;
+
+  private static final MetricConfig metricConfig =
+      MetricConfigDescriptor.getInstance().getMetricConfig();
 
   public static MetricService getINSTANCE() {
     return INSTANCE;
@@ -55,15 +58,14 @@ public class MetricService {
     MetricManager nothingManager = new DoNothingMetricManager();
 
     for (MetricManager mf : metricManagers) {
-      if (mf instanceof DoNothingMetricManager) {
-        nothingManager = mf;
-        continue;
-      }
       size++;
-      metricManager = mf;
+      if (metricConfig.getMetricManagerType().equals(mf.getName())) {
+        metricManager = mf;
+        break;
+      }
     }
 
-    // if no more implementations, we use nothingFactory.
+    // if no more implementations, we use nothingManager.
     if (size == 0) {
       metricManager = nothingManager;
     } else if (size > 1) {
@@ -74,19 +76,29 @@ public class MetricService {
     metricManager.init();
 
     ServiceLoader<MetricReporter> reporter = 
ServiceLoader.load(MetricReporter.class);
+    size = 0;
     for (MetricReporter r : reporter) {
-      reporters.add(r);
-      r.setMetricManager(metricManager);
-      r.start();
-      logger.info("detect MetricReporter {}", r.getClass().getName());
+      size++;
+      if (metricConfig.getMetricReporterType().equals(r.getName())) {
+        metricReporter = r;
+        logger.info("detect MetricReporter {}", r.getClass().getName());
+      }
     }
+
+    // if no more implementations, we use nothingReporter.
+    if (size == 0) {
+      metricReporter = new DoNothingMetricReporter();
+    } else if (size > 1) {
+      logger.warn(
+          "detect more than one MetricReporter, will use {}", 
metricReporter.getClass().getName());
+    }
+    // do some init work
+    metricReporter.setMetricManager(metricManager);
+    metricReporter.start();
   }
 
   public static void stop() {
-    for (MetricReporter r : reporters) {
-      logger.info("detect MetricReporter {}", r.getClass().getName());
-      r.stop();
-    }
+    metricReporter.stop();
   }
 
   public static MetricManager getMetricManager() {
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/IoTDBReporterConfig.java
similarity index 51%
copy from 
metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
copy to 
metrics/interface/src/main/java/org/apache/iotdb/metrics/config/IoTDBReporterConfig.java
index fd40973..d2ee80e 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/IoTDBReporterConfig.java
@@ -19,70 +19,14 @@
 
 package org.apache.iotdb.metrics.config;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class MetricConfig {
-  private static final Logger logger = 
LoggerFactory.getLogger(MetricConfig.class);
-  static final String CONFIG_NAME = "iotdb-metric.properties";
-
-  /** The period of data pushed by the reporter to the remote monitoring 
system */
-  private int pushPeriodInSecond = 5;
-
-  /** enable publishing data */
-  private boolean isEnabled = true;
-
-  /** provide or push metric data to remote system, could be jmx, prometheus, 
iotdb, etc. */
-  private List<String> reporterList =
-      Arrays.asList("jmx", "prometheus"); // Collections.singletonList("jmx");
-
-  // the following is prometheus related config
-  /** the http server's port for prometheus exporter to get metric data */
-  private String prometheusExporterPort = "8090";
-
-  // the following is iotdb related config
-
+/** the following is iotdb related config */
+public class IoTDBReporterConfig {
   private String iotdbSg = "monitor";
   private String iotdbUser = "root";
   private String iotdbPasswd = "root";
   private String iotdbIp = "127.0.0.1";
   private String iotdbPort = "6667";
 
-  public int getPushPeriodInSecond() {
-    return pushPeriodInSecond;
-  }
-
-  public void setPushPeriodInSecond(int pushPeriodInSecond) {
-    this.pushPeriodInSecond = pushPeriodInSecond;
-  }
-
-  public boolean isEnabled() {
-    return isEnabled;
-  }
-
-  public void setEnabled(boolean enabled) {
-    isEnabled = enabled;
-  }
-
-  public String getPrometheusExporterPort() {
-    return prometheusExporterPort;
-  }
-
-  public void setPrometheusExporterPort(String prometheusExporterPort) {
-    this.prometheusExporterPort = prometheusExporterPort;
-  }
-
-  public List<String> getReporterList() {
-    return reporterList;
-  }
-
-  public void setReporterList(List<String> reporterList) {
-    this.reporterList = reporterList;
-  }
-
   public String getIotdbSg() {
     return iotdbSg;
   }
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 fd40973..00b0438 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
@@ -27,99 +27,90 @@ import java.util.List;
 
 public class MetricConfig {
   private static final Logger logger = 
LoggerFactory.getLogger(MetricConfig.class);
-  static final String CONFIG_NAME = "iotdb-metric.properties";
-
-  /** The period of data pushed by the reporter to the remote monitoring 
system */
-  private int pushPeriodInSecond = 5;
+  static final String CONFIG_NAME = "iotdb-metric.yml";
 
   /** enable publishing data */
-  private boolean isEnabled = true;
+  private Boolean enableMetric = true;
 
-  /** provide or push metric data to remote system, could be jmx, prometheus, 
iotdb, etc. */
-  private List<String> reporterList =
-      Arrays.asList("jmx", "prometheus"); // Collections.singletonList("jmx");
+  /** The period of data pushed by the reporter to the remote monitoring 
system */
+  private Integer pushPeriodInSecond = 5;
 
-  // the following is prometheus related config
-  /** the http server's port for prometheus exporter to get metric data */
-  private String prometheusExporterPort = "8090";
+  private String metricManagerType = "MicrometerMetricManager";
+  private String metricReporterType = "MicrometerMetricReporter";
 
-  // the following is iotdb related config
+  /** provide or push metric data to remote system, could be jmx, prometheus, 
iotdb, etc. */
+  private List<String> metricReporterList = Arrays.asList("jmx");
 
-  private String iotdbSg = "monitor";
-  private String iotdbUser = "root";
-  private String iotdbPasswd = "root";
-  private String iotdbIp = "127.0.0.1";
-  private String iotdbPort = "6667";
+  private PrometheusReporterConfig prometheusReporterConfig;
+  private IoTDBReporterConfig ioTDBReporterConfig;
 
-  public int getPushPeriodInSecond() {
-    return pushPeriodInSecond;
+  public Boolean getEnableMetric() {
+    return enableMetric;
   }
 
-  public void setPushPeriodInSecond(int pushPeriodInSecond) {
-    this.pushPeriodInSecond = pushPeriodInSecond;
+  public void setEnableMetric(Boolean enableMetric) {
+    this.enableMetric = enableMetric;
   }
 
-  public boolean isEnabled() {
-    return isEnabled;
-  }
-
-  public void setEnabled(boolean enabled) {
-    isEnabled = enabled;
+  public Integer getPushPeriodInSecond() {
+    return pushPeriodInSecond;
   }
 
-  public String getPrometheusExporterPort() {
-    return prometheusExporterPort;
+  public void setPushPeriodInSecond(Integer pushPeriodInSecond) {
+    this.pushPeriodInSecond = pushPeriodInSecond;
   }
 
-  public void setPrometheusExporterPort(String prometheusExporterPort) {
-    this.prometheusExporterPort = prometheusExporterPort;
+  public String getMetricManagerType() {
+    return metricManagerType;
   }
 
-  public List<String> getReporterList() {
-    return reporterList;
+  public void setMetricManagerType(String metricManagerType) {
+    this.metricManagerType = metricManagerType;
   }
 
-  public void setReporterList(List<String> reporterList) {
-    this.reporterList = reporterList;
+  public String getMetricReporterType() {
+    return metricReporterType;
   }
 
-  public String getIotdbSg() {
-    return iotdbSg;
+  public void setMetricReporterType(String metricReporterType) {
+    this.metricReporterType = metricReporterType;
   }
 
-  public void setIotdbSg(String iotdbSg) {
-    this.iotdbSg = iotdbSg;
+  public List<String> getMetricReporterList() {
+    return metricReporterList;
   }
 
-  public String getIotdbUser() {
-    return iotdbUser;
+  public void setMetricReporterList(List<String> metricReporterList) {
+    this.metricReporterList = metricReporterList;
   }
 
-  public void setIotdbUser(String iotdbUser) {
-    this.iotdbUser = iotdbUser;
+  public PrometheusReporterConfig getPrometheusReporterConfig() {
+    return prometheusReporterConfig;
   }
 
-  public String getIotdbPasswd() {
-    return iotdbPasswd;
+  public void setPrometheusReporterConfig(PrometheusReporterConfig 
prometheusReporterConfig) {
+    this.prometheusReporterConfig = prometheusReporterConfig;
   }
 
-  public void setIotdbPasswd(String iotdbPasswd) {
-    this.iotdbPasswd = iotdbPasswd;
+  public IoTDBReporterConfig getIoTDBReporterConfig() {
+    return ioTDBReporterConfig;
   }
 
-  public String getIotdbIp() {
-    return iotdbIp;
+  public void setIoTDBReporterConfig(IoTDBReporterConfig ioTDBReporterConfig) {
+    this.ioTDBReporterConfig = ioTDBReporterConfig;
   }
 
-  public void setIotdbIp(String iotdbIp) {
-    this.iotdbIp = iotdbIp;
-  }
+  /** the following is prometheus related config */
+  public static class PrometheusReporterConfig {
+    /** the http server's port for prometheus exporter to get metric data */
+    private String prometheusExporterPort = "8090";
 
-  public String getIotdbPort() {
-    return iotdbPort;
-  }
+    public String getPrometheusExporterPort() {
+      return prometheusExporterPort;
+    }
 
-  public void setIotdbPort(String iotdbPort) {
-    this.iotdbPort = iotdbPort;
+    public void setPrometheusExporterPort(String prometheusExporterPort) {
+      this.prometheusExporterPort = prometheusExporterPort;
+    }
   }
 }
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 7990a24..51fdf6e 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
@@ -21,19 +21,17 @@ package org.apache.iotdb.metrics.config;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.yaml.snakeyaml.Yaml;
+import org.yaml.snakeyaml.constructor.Constructor;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Properties;
 
 public class MetricConfigDescriptor {
   private static final Logger logger = 
LoggerFactory.getLogger(MetricConfigDescriptor.class);
-  private final MetricConfig metricConfig = new MetricConfig();
+  private MetricConfig metricConfig = new MetricConfig();
 
   public MetricConfig getMetricConfig() {
     return metricConfig;
@@ -71,58 +69,17 @@ public class MetricConfigDescriptor {
   private void loadProps() {
 
     String url = getPropsUrl();
-    Properties properties = System.getProperties();
+
+    Constructor constructor = new Constructor(MetricConfig.class);
+    Yaml yaml = new Yaml(constructor);
     if (url != null) {
       try (InputStream inputStream = new FileInputStream(new File(url))) {
         logger.info("Start to read config file {}", url);
-        properties.load(inputStream);
+        metricConfig = (MetricConfig) yaml.load(inputStream);
       } catch (IOException e) {
         logger.warn("Fail to find config file {}", url, e);
       }
     }
-
-    metricConfig.setEnabled(
-        Boolean.parseBoolean(
-            properties.getProperty("enable_metric", 
Boolean.toString(metricConfig.isEnabled()))));
-
-    String reporterList = properties.getProperty("metric_reporter_list");
-    if (reporterList != null) {
-      metricConfig.setReporterList(getReporterList(reporterList));
-    }
-
-    metricConfig.setPushPeriodInSecond(
-        Integer.parseInt(
-            properties.getProperty(
-                "push_period_in_second", 
Integer.toString(metricConfig.getPushPeriodInSecond()))));
-
-    metricConfig.setPrometheusExporterPort(
-        properties.getProperty(
-            "prometheus_exporter_port", 
metricConfig.getPrometheusExporterPort()));
-
-    metricConfig.setIotdbIp(properties.getProperty("iotdb_ip", 
metricConfig.getIotdbIp()));
-
-    metricConfig.setIotdbPort(properties.getProperty("iotdb_port", 
metricConfig.getIotdbPort()));
-
-    metricConfig.setIotdbSg(properties.getProperty("iotdb_sg", 
metricConfig.getIotdbSg()));
-    metricConfig.setIotdbUser(properties.getProperty("iotdb_user", 
metricConfig.getIotdbUser()));
-    metricConfig.setIotdbPasswd(
-        properties.getProperty("iotdb_passwd", metricConfig.getIotdbPasswd()));
-  }
-
-  private List<String> getReporterList(String reporterList) {
-    if (reporterList == null) {
-      return Collections.emptyList();
-    }
-    List<String> reporters = new ArrayList<>();
-    String[] split = reporterList.split(",");
-    for (String reporter : split) {
-      reporter = reporter.trim();
-      if ("".equals(reporter)) {
-        continue;
-      }
-      reporters.add(reporter);
-    }
-    return reporters;
   }
 
   private static class MetricConfigDescriptorHolder {
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingCounter.java
similarity index 72%
copy from 
metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
copy to 
metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingCounter.java
index 023f0fe..e9047bd 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingCounter.java
@@ -16,12 +16,24 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.metrics;
 
-public interface MetricReporter {
-  boolean start();
+package org.apache.iotdb.metrics.impl;
 
-  void setMetricManager(MetricManager metricManager);
+import org.apache.iotdb.metrics.type.Counter;
 
-  boolean stop();
+public class DoNothingCounter implements Counter {
+  @Override
+  public void inc() {
+    // do nothing
+  }
+
+  @Override
+  public void inc(long n) {
+    // do nothing
+  }
+
+  @Override
+  public long count() {
+    return 0;
+  }
 }
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingGauge.java
similarity index 76%
copy from 
metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
copy to 
metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingGauge.java
index 023f0fe..32f4596 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingGauge.java
@@ -16,12 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.metrics;
 
-public interface MetricReporter {
-  boolean start();
+package org.apache.iotdb.metrics.impl;
 
-  void setMetricManager(MetricManager metricManager);
+import org.apache.iotdb.metrics.type.Gauge;
 
-  boolean stop();
+public class DoNothingGauge implements Gauge {
+  @Override
+  public long value() {
+    return 0;
+  }
+
+  @Override
+  public void set(long value) {
+    // do nothing
+  }
 }
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogram.java
similarity index 62%
copy from 
metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
copy to 
metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogram.java
index 023f0fe..793aa3b 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogram.java
@@ -16,12 +16,30 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.metrics;
 
-public interface MetricReporter {
-  boolean start();
+package org.apache.iotdb.metrics.impl;
 
-  void setMetricManager(MetricManager metricManager);
+import org.apache.iotdb.metrics.type.Histogram;
+import org.apache.iotdb.metrics.type.HistogramSnapshot;
 
-  boolean stop();
+public class DoNothingHistogram implements Histogram {
+  @Override
+  public void update(int value) {
+    // do nothing
+  }
+
+  @Override
+  public void update(long value) {
+    // do nothing
+  }
+
+  @Override
+  public long count() {
+    return 0;
+  }
+
+  @Override
+  public HistogramSnapshot takeSnapshot() {
+    return new DoNothingHistogramSnapshot();
+  }
 }
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogramSnapshot.java
similarity index 53%
copy from 
metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
copy to 
metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogramSnapshot.java
index 023f0fe..e72b39f 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogramSnapshot.java
@@ -16,12 +16,51 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.metrics;
 
-public interface MetricReporter {
-  boolean start();
+package org.apache.iotdb.metrics.impl;
 
-  void setMetricManager(MetricManager metricManager);
+import org.apache.iotdb.metrics.type.HistogramSnapshot;
 
-  boolean stop();
+import java.io.OutputStream;
+
+public class DoNothingHistogramSnapshot implements HistogramSnapshot {
+  @Override
+  public double getValue(double quantile) {
+    return 0;
+  }
+
+  @Override
+  public long[] getValues() {
+    return new long[0];
+  }
+
+  @Override
+  public int size() {
+    return 0;
+  }
+
+  @Override
+  public double getMedian() {
+    return 0;
+  }
+
+  @Override
+  public long getMax() {
+    return 0;
+  }
+
+  @Override
+  public double getMean() {
+    return 0;
+  }
+
+  @Override
+  public long getMin() {
+    return 0;
+  }
+
+  @Override
+  public void dump(OutputStream output) {
+    // do nothing
+  }
 }
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricManager.java
 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricManager.java
index 6b46b34..42c8bb2 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricManager.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricManager.java
@@ -26,35 +26,42 @@ import org.apache.iotdb.metrics.type.Histogram;
 import org.apache.iotdb.metrics.type.Rate;
 import org.apache.iotdb.metrics.type.Timer;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 public class DoNothingMetricManager implements MetricManager {
 
+  private final DoNothingCounter doNothingCounter = new DoNothingCounter();
+  private final DoNothingHistogram doNothingHistogram = new 
DoNothingHistogram();
+  private final DoNothingGauge doNothingGauge = new DoNothingGauge();
+  private final DoNothingRate doNothingRate = new DoNothingRate();
+  private final DoNothingTimer doNothingTimer = new DoNothingTimer();
+
   @Override
   public Counter counter(String metric, String... tags) {
-    return null;
+    return doNothingCounter;
   }
 
   @Override
   public Gauge gauge(String metric, String... tags) {
-    return null;
+    return doNothingGauge;
   }
 
   @Override
   public Histogram histogram(String metric, String... tags) {
-    return null;
+    return doNothingHistogram;
   }
 
   @Override
   public Rate rate(String metric, String... tags) {
-    return null;
+    return doNothingRate;
   }
 
   @Override
   public Timer timer(String metric, String... tags) {
-    return null;
+    return doNothingTimer;
   }
 
   @Override
@@ -86,32 +93,32 @@ public class DoNothingMetricManager implements 
MetricManager {
 
   @Override
   public List<String[]> getAllMetricKeys() {
-    return null;
+    return Collections.emptyList();
   }
 
   @Override
   public Map<String[], Counter> getAllCounters() {
-    return null;
+    return Collections.emptyMap();
   }
 
   @Override
   public Map<String[], Gauge> getAllGauges() {
-    return null;
+    return Collections.emptyMap();
   }
 
   @Override
   public Map<String[], Rate> getAllRates() {
-    return null;
+    return Collections.emptyMap();
   }
 
   @Override
   public Map<String[], Histogram> getAllHistograms() {
-    return null;
+    return Collections.emptyMap();
   }
 
   @Override
   public Map<String[], Timer> getAllTimers() {
-    return null;
+    return Collections.emptyMap();
   }
 
   @Override
@@ -126,4 +133,9 @@ public class DoNothingMetricManager implements 
MetricManager {
   public boolean init() {
     return false;
   }
+
+  @Override
+  public String getName() {
+    return "DoNothingMetricManager";
+  }
 }
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricReporter.java
similarity index 62%
copy from 
metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
copy to 
metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricReporter.java
index 023f0fe..32b7d81 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricReporter.java
@@ -16,12 +16,30 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.metrics;
 
-public interface MetricReporter {
-  boolean start();
+package org.apache.iotdb.metrics.impl;
 
-  void setMetricManager(MetricManager metricManager);
+import org.apache.iotdb.metrics.MetricManager;
+import org.apache.iotdb.metrics.MetricReporter;
 
-  boolean stop();
+public class DoNothingMetricReporter implements MetricReporter {
+  @Override
+  public boolean start() {
+    return true;
+  }
+
+  @Override
+  public void setMetricManager(MetricManager metricManager) {
+    // Do nothing
+  }
+
+  @Override
+  public boolean stop() {
+    return true;
+  }
+
+  @Override
+  public String getName() {
+    return "DoNothingMetricReporter";
+  }
 }
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingRate.java
similarity index 58%
copy from 
metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
copy to 
metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingRate.java
index 023f0fe..533947b 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingRate.java
@@ -16,12 +16,44 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.metrics;
 
-public interface MetricReporter {
-  boolean start();
+package org.apache.iotdb.metrics.impl;
 
-  void setMetricManager(MetricManager metricManager);
+import org.apache.iotdb.metrics.type.Rate;
 
-  boolean stop();
+public class DoNothingRate implements Rate {
+  @Override
+  public long getCount() {
+    return 0;
+  }
+
+  @Override
+  public double getOneMinuteRate() {
+    return 0;
+  }
+
+  @Override
+  public double getMeanRate() {
+    return 0;
+  }
+
+  @Override
+  public double getFiveMinuteRate() {
+    return 0;
+  }
+
+  @Override
+  public double getFifteenMinuteRate() {
+    return 0;
+  }
+
+  @Override
+  public void mark() {
+    // do nothing
+  }
+
+  @Override
+  public void mark(long n) {
+    // do nothing
+  }
 }
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingTimer.java
similarity index 59%
copy from 
metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
copy to 
metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingTimer.java
index 023f0fe..a52b474 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/MetricReporter.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingTimer.java
@@ -16,12 +16,28 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.iotdb.metrics;
 
-public interface MetricReporter {
-  boolean start();
+package org.apache.iotdb.metrics.impl;
 
-  void setMetricManager(MetricManager metricManager);
+import org.apache.iotdb.metrics.type.HistogramSnapshot;
+import org.apache.iotdb.metrics.type.Rate;
+import org.apache.iotdb.metrics.type.Timer;
 
-  boolean stop();
+import java.util.concurrent.TimeUnit;
+
+public class DoNothingTimer implements Timer {
+  @Override
+  public void update(long duration, TimeUnit unit) {
+    // do nothing
+  }
+
+  @Override
+  public HistogramSnapshot takeSnapshot() {
+    return new DoNothingHistogramSnapshot();
+  }
+
+  @Override
+  public Rate getImmutableRate() {
+    return new DoNothingRate();
+  }
 }
diff --git 
a/metrics/interface/src/main/test/org/apache/iotdb/metrics/config/MetricConfigTest.java
 
b/metrics/interface/src/main/test/org/apache/iotdb/metrics/config/MetricConfigTest.java
new file mode 100644
index 0000000..88f22c5
--- /dev/null
+++ 
b/metrics/interface/src/main/test/org/apache/iotdb/metrics/config/MetricConfigTest.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.metrics.config;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.yaml.snakeyaml.Yaml;
+import org.yaml.snakeyaml.constructor.Constructor;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
+public class MetricConfigTest {
+
+  @Test
+  public void yamlConfigTest() {
+    String url = 
this.getClass().getClassLoader().getResource("iotdb-metric.yml").getPath();
+    System.out.println(url);
+
+    MetricConfig metricConfig = 
MetricConfigDescriptor.getInstance().getMetricConfig();
+    Constructor constructor = new Constructor(MetricConfig.class);
+    Yaml yaml = new Yaml(constructor);
+    if (url != null) {
+      try (InputStream inputStream = new FileInputStream(new File(url))) {
+        metricConfig = (MetricConfig) yaml.load(inputStream);
+      } catch (IOException e) {
+        Assert.fail();
+      }
+    }
+
+    List<String> lists = metricConfig.getMetricReporterList();
+
+    Assert.assertEquals(lists.size(), 2);
+    
Assert.assertEquals(metricConfig.getPrometheusReporterConfig().getPrometheusExporterPort(),
 "80990");
+    Assert.assertEquals(metricConfig.getIoTDBReporterConfig().getIotdbIp(), 
"0.0.0.0");
+  }
+}
diff --git 
a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties 
b/metrics/interface/src/main/test/resources/iotdb-metric.yml
similarity index 79%
rename from 
metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties
rename to metrics/interface/src/main/test/resources/iotdb-metric.yml
index fc13326..3dc8c0d 100644
--- a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.properties
+++ b/metrics/interface/src/main/test/resources/iotdb-metric.yml
@@ -18,12 +18,18 @@
 #
 
 # whether enable the module
-enable_metric=true
+enableMetric: true
 
 # can be multiple reporter, e.g., jmx,prometheus,iotdb
-metric_reporter_list=jmx
+metricReporterList:
+  - jmx
+  - prometheus
 
-push_period_in_second=5
+  # the following configure should be matched
+metricManagerType: MicrometerMetricManager
+metricReporterType: MicrometerMetricReporter
+
+pushPeriodInSecond: 5
 
 
 ########################################################
@@ -32,7 +38,8 @@ push_period_in_second=5
 # then the following must be set                       #
 #                                                      #
 ########################################################
-prometheus_exporter_port=8090
+prometheusReporterConfig:
+  prometheusExporterPort: 80990
 
 ########################################################
 #                                                      #
@@ -40,10 +47,9 @@ prometheus_exporter_port=8090
 # then the following must be set                       #
 #                                                      #
 ########################################################
-iotdb_ip=127.0.0.1
-iotdb_port=6667
-iotdb_sg=_sysmetric
-iotdb_user=root
-iotdb_passwd=root
-
-
+ioTDBReporterConfig:
+  iotdbIp: 0.0.0.0
+  iotdbPort: 6667
+  iotdbSg: _sysmetric
+  iotdbUser: root
+  iotdbPasswd: root
\ No newline at end of file
diff --git 
a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
 
b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
index 5888cac..52a2a03 100644
--- 
a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
+++ 
b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricManager.java
@@ -77,13 +77,13 @@ public class MicrometerMetricManager implements 
MetricManager {
   public MicrometerMetricManager() {
     meterRegistry = Metrics.globalRegistry;
     currentMeters = new ConcurrentHashMap<>();
-    isEnable = metricConfig.isEnabled();
+    isEnable = metricConfig.getEnableMetric();
   }
 
   @Override
   public boolean init() {
     logger.info("micrometer init registry");
-    List<String> reporters = metricConfig.getReporterList();
+    List<String> reporters = metricConfig.getMetricReporterList();
     for (String reporter : reporters) {
       switch (ReporterType.get(reporter)) {
         case JMX:
@@ -447,4 +447,9 @@ public class MicrometerMetricManager implements 
MetricManager {
   public boolean isEnable() {
     return isEnable;
   }
+
+  @Override
+  public String getName() {
+    return "MicrometerMetricManager";
+  }
 }
diff --git 
a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricReporter.java
 
b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricReporter.java
index 95b07f2..f261dc2 100644
--- 
a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricReporter.java
+++ 
b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/MicrometerMetricReporter.java
@@ -42,11 +42,9 @@ public class MicrometerMetricReporter implements 
MetricReporter {
   private final MetricConfig metricConfig = 
MetricConfigDescriptor.getInstance().getMetricConfig();
   private Thread runThread;
 
-  private JmxMeterRegistry jmxMeterRegistry;
-
   @Override
   public boolean start() {
-    List<String> reporters = metricConfig.getReporterList();
+    List<String> reporters = metricConfig.getMetricReporterList();
     for (String reporter : reporters) {
       switch (ReporterType.get(reporter)) {
         case JMX:
@@ -71,7 +69,10 @@ public class MicrometerMetricReporter implements 
MetricReporter {
     try {
       HttpServer server =
           HttpServer.create(
-              new 
InetSocketAddress(Integer.parseInt(metricConfig.getPrometheusExporterPort())), 
0);
+              new InetSocketAddress(
+                  Integer.parseInt(
+                      
metricConfig.getPrometheusReporterConfig().getPrometheusExporterPort())),
+              0);
       server.createContext(
           "/prometheus",
           httpExchange -> {
@@ -110,4 +111,9 @@ public class MicrometerMetricReporter implements 
MetricReporter {
     ((MicrometerMetricManager) 
micrometerMetricManager).getJmxMeterRegistry().stop();
     return true;
   }
+
+  @Override
+  public String getName() {
+    return "MicrometerMetricReporter";
+  }
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
index 42b08a7..61b692c 100755
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
@@ -66,7 +66,6 @@ import org.apache.iotdb.db.utils.MmapUtil;
 import org.apache.iotdb.db.utils.TestOnly;
 import org.apache.iotdb.db.utils.UpgradeUtils;
 import org.apache.iotdb.db.writelog.recover.TsFileRecoverPerformer;
-import org.apache.iotdb.metrics.type.Timer;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.service.rpc.thrift.TSStatus;
@@ -274,10 +273,6 @@ public class StorageGroupProcessor {
   // DEFAULT_POOL_TRIM_INTERVAL_MILLIS
   private long timeWhenPoolNotEmpty = Long.MAX_VALUE;
 
-  private Timer write_total_timer;
-
-  private Timer read_total_timer;
-
   /** get the direct byte buffer from pool, each fetch contains two ByteBuffer 
*/
   public ByteBuffer[] getWalDirectByteBuffer() {
     ByteBuffer[] res = new ByteBuffer[2];
@@ -389,24 +384,6 @@ public class StorageGroupProcessor {
         DEFAULT_POOL_TRIM_INTERVAL_MILLIS,
         TimeUnit.MILLISECONDS);
     recover();
-    read_total_timer =
-        IoTDB.serverMetricManager.timer(
-            "read_latency",
-            "sg",
-            logicalStorageGroupName,
-            "user",
-            "total",
-            "host",
-            config.getRpcAddress());
-    write_total_timer =
-        IoTDB.serverMetricManager.timer(
-            "write_latency",
-            "sg",
-            logicalStorageGroupName,
-            "user",
-            "total",
-            "host",
-            config.getRpcAddress());
   }
 
   public String getLogicalStorageGroupName() {
@@ -806,7 +783,6 @@ public class StorageGroupProcessor {
     if (!isAlive(insertRowPlan.getTime())) {
       throw new OutOfTTLException(insertRowPlan.getTime(), 
(System.currentTimeMillis() - dataTTL));
     }
-    long startTime = System.currentTimeMillis();
     if (enableMemControl) {
       StorageEngine.blockInsertionIfReject();
     }
@@ -837,18 +813,6 @@ public class StorageGroupProcessor {
     } finally {
       writeUnlock();
     }
-    long end = System.currentTimeMillis();
-    logger.info("timer insert cost {} millis", end - startTime);
-    IoTDB.serverMetricManager.timer(
-        end - startTime,
-        TimeUnit.MILLISECONDS,
-        "insert_row_latency",
-        "sg",
-        logicalStorageGroupName,
-        "user",
-        insertRowPlan.getLoginUserName(),
-        "host",
-        config.getRpcAddress());
   }
 
   /**
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java 
b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
index 4a0fd88..8f4165e 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
@@ -147,7 +147,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-import java.util.concurrent.TimeUnit;
 
 import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_CANCELLED;
 import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_CHILD_PATHS;
@@ -1135,16 +1134,6 @@ public class PlanExecutor implements IPlanExecutor {
       if (insertRowPlan.getFailedMeasurements() != null) {
         checkFailedMeasurments(insertRowPlan);
       }
-      IoTDB.serverMetricManager.timer(
-          System.currentTimeMillis() - startTime,
-          TimeUnit.MILLISECONDS,
-          "insert_latency",
-          "sg",
-          "root", // TODO infer from insertRowPlan.getDeviceId()
-          "user",
-          insertRowPlan.getLoginUserName(),
-          "host",
-          config.getRpcAddress());
     } catch (StorageEngineException | MetadataException e) {
       if (IoTDBDescriptor.getInstance().getConfig().isEnableStatMonitor()) {
         StatMonitor.getInstance().updateFailedStatValue();
@@ -1180,16 +1169,6 @@ public class PlanExecutor implements IPlanExecutor {
       if (insertTabletPlan.getFailedMeasurements() != null) {
         checkFailedMeasurments(insertTabletPlan);
       }
-      IoTDB.serverMetricManager.timer(
-          System.currentTimeMillis() - startTime,
-          TimeUnit.MILLISECONDS,
-          "insert_tablet_latency",
-          "sg",
-          "root", // TODO infer from insertTabletPlan.getDeviceId()
-          "user",
-          insertTabletPlan.getLoginUserName(),
-          "host",
-          config.getRpcAddress());
     } catch (StorageEngineException | MetadataException e) {
       if (IoTDBDescriptor.getInstance().getConfig().isEnableStatMonitor()) {
         StatMonitor.getInstance().updateFailedStatValue();
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 aed01a3..68badbe 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
@@ -40,7 +40,6 @@ import org.apache.iotdb.db.rescon.SystemInfo;
 import org.apache.iotdb.db.rescon.TVListAllocator;
 import org.apache.iotdb.db.sync.receiver.SyncServerManager;
 import org.apache.iotdb.db.writelog.manager.MultiFileLogNodeManager;
-import org.apache.iotdb.metrics.MetricManager;
 import org.apache.iotdb.metrics.MetricService;
 
 import org.slf4j.Logger;
@@ -60,8 +59,6 @@ public class IoTDB implements IoTDBMBean {
     return IoTDBHolder.INSTANCE;
   }
 
-  public static final MetricManager serverMetricManager = 
MetricService.getMetricManager();;
-
   public static void main(String[] args) {
     if (args.length > 0) {
       IoTDBDescriptor.getInstance().replaceProps(args);
diff --git 
a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java 
b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
index 9559bfa..8075fb6 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
@@ -706,18 +706,6 @@ public class TSServiceImpl implements TSIService.Iface, 
ServerContext {
           plan.getLoginUserName(),
           config.getRpcAddress());
 
-      IoTDB.serverMetricManager.timer(
-          System.currentTimeMillis() - startTime,
-          TimeUnit.MILLISECONDS,
-          "query_latency",
-          "sg",
-          "root",
-          "query_type",
-          plan.getOperatorType().name(),
-          "user",
-          plan.getLoginUserName(),
-          "host",
-          config.getRpcAddress());
       return resp;
     } catch (Exception e) {
       releaseQueryResourceNoExceptions(queryId);
@@ -1192,20 +1180,8 @@ public class TSServiceImpl implements TSIService.Iface, 
ServerContext {
                     e, "inserting records", 
TSStatusCode.INTERNAL_SERVER_ERROR));
       }
     }
-    long startTime = System.currentTimeMillis();
     TSStatus tsStatus = executeNonQueryPlan(insertRowsPlan);
 
-    IoTDB.serverMetricManager.timer(
-        System.currentTimeMillis() - startTime,
-        TimeUnit.MILLISECONDS,
-        "insert_records_latency",
-        "sg",
-        "root",
-        "user",
-        sessionIdUsernameMap.get(req.getSessionId()),
-        "host",
-        config.getRpcAddress());
-
     return judgeFinalTsStatus(
         allSuccess, tsStatus, insertRowsPlan.getResults(), 
req.deviceIds.size());
   }

Reply via email to