You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ch...@apache.org on 2021/03/01 04:16:46 UTC

[iotdb] branch feature/metric2021 updated (c7a1130 -> 6ba7154)

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

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


    from c7a1130  format codes
     new 776b869  remove used in server module
     add b986cd1  [ISSUE-2493]  Support show child nodes (#2732)
     new 6ba7154  Merge branch 'master' into metric2021

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4   |   1 +
 .../DDL Data Definition Language.md                |  31 ++++++
 .../DDL Data Definition Language.md                |  31 ++++++
 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 ++---------
 .../iotdb/metrics/impl/DoNothingCounter.java}      |  16 +---
 .../apache/iotdb/metrics/impl/DoNothingGauge.java  |  16 +++-
 .../iotdb/metrics/impl/DoNothingHistogram.java}    |  19 ++--
 .../metrics/impl/DoNothingHistogramSnapshot.java}  |  27 ++----
 .../iotdb/metrics/impl/DoNothingMetricManager.java |  34 ++++---
 .../metrics/impl/DoNothingMetricReporter.java}     |  26 ++---
 .../apache/iotdb/metrics/impl/DoNothingRate.java}  |  38 +++++---
 .../apache/iotdb/metrics/impl/DoNothingTimer.java} |  16 +---
 .../iotdb/metrics/config/MetricConfigTest.java     |  57 +++++++++++
 .../resources/iotdb-metric.yml}                    |  28 +++---
 .../micrometer/MicrometerMetricManager.java        |   9 +-
 .../micrometer/MicrometerMetricReporter.java       |  14 ++-
 .../org/apache/iotdb/db/conf/IoTDBConstant.java    |   1 +
 .../engine/storagegroup/StorageGroupProcessor.java |  36 -------
 .../org/apache/iotdb/db/metadata/MManager.java     |  13 +++
 .../java/org/apache/iotdb/db/metadata/MTree.java   |  72 ++++++++++++++
 .../apache/iotdb/db/qp/constant/SQLConstant.java   |   2 +
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  47 ++++-----
 ...hsOperator.java => ShowChildNodesOperator.java} |   4 +-
 ...ChildPathsPlan.java => ShowChildNodesPlan.java} |   4 +-
 .../apache/iotdb/db/qp/physical/sys/ShowPlan.java  |   1 +
 .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    |  13 +++
 .../iotdb/db/qp/strategy/PhysicalGenerator.java    |   5 +
 .../java/org/apache/iotdb/db/service/IoTDB.java    |   3 -
 .../org/apache/iotdb/db/service/TSServiceImpl.java |  24 -----
 .../iotdb/db/integration/IoTDBMetadataFetchIT.java |  35 +++++++
 .../iotdb/db/metadata/MManagerBasicTest.java       |  43 +++++++++
 .../org/apache/iotdb/db/metadata/MTreeTest.java    |  46 +++++++++
 .../java/org/apache/iotdb/db/qp/PlannerTest.java   |   7 ++
 43 files changed, 653 insertions(+), 395 deletions(-)
 copy metrics/interface/src/main/assembly/resources/conf/{iotdb-metric.properties => iotdb-metric.yml} (80%)
 copy metrics/interface/src/main/java/org/apache/iotdb/metrics/config/{MetricConfig.java => IoTDBReporterConfig.java} (51%)
 copy metrics/{dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardCounter.java => interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingCounter.java} (75%)
 copy tsfile/src/main/java/org/apache/iotdb/tsfile/exception/NullFieldException.java => metrics/interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingGauge.java (76%)
 copy metrics/{dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardHistogram.java => interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogram.java} (72%)
 copy metrics/{dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardHistogramSnapshot.java => interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingHistogramSnapshot.java} (70%)
 copy metrics/{dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardCounter.java => interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingMetricReporter.java} (66%)
 copy metrics/{dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardCounter.java => interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingRate.java} (62%)
 copy metrics/{dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/type/DropwizardTimer.java => interface/src/main/java/org/apache/iotdb/metrics/impl/DoNothingTimer.java} (76%)
 create mode 100644 metrics/interface/src/main/test/org/apache/iotdb/metrics/config/MetricConfigTest.java
 rename metrics/interface/src/main/{assembly/resources/conf/iotdb-metric.properties => test/resources/iotdb-metric.yml} (79%)
 copy server/src/main/java/org/apache/iotdb/db/qp/logical/sys/{ShowChildPathsOperator.java => ShowChildNodesOperator.java} (89%)
 copy server/src/main/java/org/apache/iotdb/db/qp/physical/sys/{ShowChildPathsPlan.java => ShowChildNodesPlan.java} (91%)


[iotdb] 01/02: remove used in server module

Posted by ch...@apache.org.
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 <xu...@gmail.com>
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());
   }


[iotdb] 02/02: Merge branch 'master' into metric2021

Posted by ch...@apache.org.
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 6ba7154fdb4682a2f07dde907b7952089a74c57f
Merge: 776b869 b986cd1
Author: chaow <xu...@gmail.com>
AuthorDate: Mon Mar 1 12:14:50 2021 +0800

    Merge branch 'master' into metric2021

 .../antlr4/org/apache/iotdb/db/qp/sql/SqlBase.g4   |  1 +
 .../DDL Data Definition Language.md                | 31 ++++++++++
 .../DDL Data Definition Language.md                | 31 ++++++++++
 .../org/apache/iotdb/db/conf/IoTDBConstant.java    |  1 +
 .../org/apache/iotdb/db/metadata/MManager.java     | 13 ++++
 .../java/org/apache/iotdb/db/metadata/MTree.java   | 72 ++++++++++++++++++++++
 .../apache/iotdb/db/qp/constant/SQLConstant.java   |  2 +
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  | 26 ++++++++
 .../db/qp/logical/sys/ShowChildNodesOperator.java  | 36 +++++++++++
 .../db/qp/physical/sys/ShowChildNodesPlan.java     | 39 ++++++++++++
 .../apache/iotdb/db/qp/physical/sys/ShowPlan.java  |  1 +
 .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java    | 13 ++++
 .../iotdb/db/qp/strategy/PhysicalGenerator.java    |  5 ++
 .../iotdb/db/integration/IoTDBMetadataFetchIT.java | 35 +++++++++++
 .../iotdb/db/metadata/MManagerBasicTest.java       | 43 +++++++++++++
 .../org/apache/iotdb/db/metadata/MTreeTest.java    | 46 ++++++++++++++
 .../java/org/apache/iotdb/db/qp/PlannerTest.java   |  7 +++
 17 files changed, 402 insertions(+)