You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by li...@apache.org on 2019/11/22 09:40:37 UTC

[incubator-iotdb] branch monitor updated: feat(StatMonitor): add some monitor metrics and Monitor module refactor

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

liurui pushed a commit to branch monitor
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git


The following commit(s) were added to refs/heads/monitor by this push:
     new 96e5e58  feat(StatMonitor): add some monitor metrics and Monitor module refactor
96e5e58 is described below

commit 96e5e58f52cee653e8ceb9edfaa1fefd4efb1d25
Author: liuruiyiyang <24...@qq.com>
AuthorDate: Fri Nov 22 17:40:17 2019 +0800

    feat(StatMonitor): add some monitor metrics and Monitor module refactor
---
 .../org/apache/iotdb/db/engine/StorageEngine.java  | 19 ++----
 .../iotdb/db/metrics/server/MetricsSystem.java     | 77 +++++++++++++++++++++-
 .../iotdb/db/metrics/server/ServerArgument.java    | 47 +++++++------
 .../apache/iotdb/db/monitor/MonitorConstants.java  | 20 ++++--
 .../org/apache/iotdb/db/monitor/StatMonitor.java   | 17 ++---
 .../iotdb/db/monitor/collector/FileSize.java       | 12 ++--
 .../org/apache/iotdb/db/service/TSServiceImpl.java | 20 ++----
 .../iotdb/db/monitor/collector/FileSizeTest.java   |  6 +-
 8 files changed, 143 insertions(+), 75 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
index 6600d4d..ad0cb1d 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/StorageEngine.java
@@ -23,7 +23,6 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.ConcurrentModificationException;
-import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -471,10 +470,8 @@ public class StorageEngine implements IService, IStatistic {
 
   @Override
   public Map<String, TSRecord> getAllStatisticsValue() {
-    long curTime = System.currentTimeMillis();
     TSRecord tsRecord = StatMonitor
-        .convertToTSRecord(getStatParamsHashMap(), MONITOR_METRIC_PREFIX,
-            curTime);
+        .convertToTSRecord(getStatParamsHashMap(), MONITOR_METRIC_PREFIX);
     HashMap<String, TSRecord> ret = new HashMap<>();
     ret.put(MONITOR_METRIC_PREFIX, tsRecord);
     return ret;
@@ -495,23 +492,19 @@ public class StorageEngine implements IService, IStatistic {
                 TSFileDescriptor.getInstance().getConfig().getCompressor()),
             Collections.emptyMap());
       } catch (StorageEngineException e) {
-        logger.error("Register {} into Monitor Failed.", this.getClass().getName(), e);
+        logger.error("Register metrics of {} into Monitor Failed.", this.getClass().getName(), e);
       }
     }
-    StatMonitor.getInstance().registerStatStorageGroup(hashMap);
+    StatMonitor.getInstance().registerMonitorTimeSeries(hashMap);
   }
 
   @Override
   public Map<String, Object> getStatParamsHashMap() {
-    Map<StorageEngineMetrics, Long> fileSizeMap = new EnumMap<>(StorageEngineMetrics.class);
-    fileSizeMap.put(StorageEngineMetrics.OK_POINTS, okPoint.get());
-    fileSizeMap.put(StorageEngineMetrics.FAIL_POINTS, failPoint.get());
+    Map<String, Object> statParamsMap = new HashMap<>();
+    statParamsMap.put(StorageEngineMetrics.OK_POINTS.name(), okPoint.get());
+    statParamsMap.put(StorageEngineMetrics.FAIL_POINTS.name(), failPoint.get());
     okPoint.set(0);
     failPoint.set(0);
-    Map<String, Object> statParamsMap = new HashMap<>();
-    for (StorageEngineMetrics kind: MonitorConstants.StorageEngineMetrics.values()) {
-      statParamsMap.put(kind.name(), new AtomicLong(fileSizeMap.get(kind)));
-    }
     return statParamsMap;
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/metrics/server/MetricsSystem.java b/server/src/main/java/org/apache/iotdb/db/metrics/server/MetricsSystem.java
index 7e6e04d..4bf946e 100644
--- a/server/src/main/java/org/apache/iotdb/db/metrics/server/MetricsSystem.java
+++ b/server/src/main/java/org/apache/iotdb/db/metrics/server/MetricsSystem.java
@@ -14,26 +14,56 @@
  */
 package org.apache.iotdb.db.metrics.server;
 
+import com.codahale.metrics.MetricRegistry;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.iotdb.db.conf.IoTDBConfig;
+import org.apache.iotdb.db.conf.IoTDBConstant;
+import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.metrics.sink.MetricsServletSink;
 import org.apache.iotdb.db.metrics.sink.Sink;
 import org.apache.iotdb.db.metrics.source.MetricsSource;
 import org.apache.iotdb.db.metrics.source.Source;
+import org.apache.iotdb.db.monitor.IStatistic;
+import org.apache.iotdb.db.monitor.MonitorConstants;
+import org.apache.iotdb.db.monitor.MonitorConstants.SystemMetrics;
+import org.apache.iotdb.db.monitor.StatMonitor;
+import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
+import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
+import org.apache.iotdb.tsfile.read.common.Path;
+import org.apache.iotdb.tsfile.write.record.TSRecord;
 import org.eclipse.jetty.servlet.ServletContextHandler;
-import com.codahale.metrics.MetricRegistry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
-public class MetricsSystem {
+public class MetricsSystem implements IStatistic {
 
   private ArrayList<Sink> sinks;
   private ArrayList<Source> sources;
   private MetricRegistry metricRegistry;
   private ServerArgument serverArgument;
+  private StorageEngine storageEngine;
+  private IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
+  private static final String METRIC_PREFIX = MonitorConstants.SYSTEM_METRIC_PREFIX;
+  private static final Logger logger = LoggerFactory.getLogger(MetricsSystem.class);
 
   public MetricsSystem(ServerArgument serverArgument) {
     this.sinks = new ArrayList<>();
     this.sources = new ArrayList<>();
     this.metricRegistry = new MetricRegistry();
     this.serverArgument = serverArgument;
+    if (config.isEnableStatMonitor()) {
+      storageEngine = StorageEngine.getInstance();
+      StatMonitor statMonitor = StatMonitor.getInstance();
+      registerStatMetadata();
+      statMonitor.registerStatistics(METRIC_PREFIX, this);
+    }
   }
 
   public ServerArgument getServerArgument() {
@@ -74,4 +104,47 @@ public class MetricsSystem {
 
   public void registerSinks() {}
 
+  @Override
+  public Map<String, TSRecord> getAllStatisticsValue() {
+    TSRecord tsRecord = StatMonitor
+        .convertToTSRecord(getStatParamsHashMap(), METRIC_PREFIX);
+    HashMap<String, TSRecord> ret = new HashMap<>();
+    ret.put(METRIC_PREFIX, tsRecord);
+    return ret;
+  }
+
+  @Override
+  public void registerStatMetadata() {
+    Map<String, String> hashMap = new HashMap<>();
+    for (SystemMetrics kind : SystemMetrics.values()) {
+      String seriesPath = METRIC_PREFIX
+          + IoTDBConstant.PATH_SEPARATOR
+          + kind.name();
+      hashMap.put(seriesPath, MonitorConstants.DATA_TYPE_INT64);
+      Path path = new Path(seriesPath);
+      try {
+        storageEngine.addTimeSeries(path, TSDataType.valueOf(MonitorConstants.DATA_TYPE_INT64),
+            TSEncoding.valueOf("RLE"), CompressionType.valueOf(
+                TSFileDescriptor.getInstance().getConfig().getCompressor()),
+            Collections.emptyMap());
+      } catch (StorageEngineException e) {
+        logger.error("Register metrics of {} into storageEngine Failed.", this.getClass().getName(),
+            e);
+      }
+    }
+    StatMonitor.getInstance().registerMonitorTimeSeries(hashMap);
+  }
+
+  @Override
+  public Map<String, Object> getStatParamsHashMap() {
+    Map<String, Object> statParamsMap = new HashMap<>();
+    statParamsMap.put(SystemMetrics.CPU_USAGE.name(), (long) serverArgument.getCpuRatio());
+    statParamsMap.put(SystemMetrics.FREE_MEM.name(), serverArgument.freeMemory());
+    statParamsMap.put(SystemMetrics.MAX_MEM.name(), serverArgument.maxMemory());
+    statParamsMap.put(SystemMetrics.TOTAL_MEM.name(), serverArgument.totalMemory());
+    statParamsMap.put(SystemMetrics.TOTAL_PHYSICAL_MEM.name(), serverArgument.totalPhysicalMemory());
+    statParamsMap.put(SystemMetrics.FREE_PHYSICAL_MEM.name(), serverArgument.freePhysicalMemory());
+    statParamsMap.put(SystemMetrics.USED_PHYSICAL_MEM.name(), serverArgument.usedPhysicalMemory());
+    return statParamsMap;
+  }
 }
diff --git a/server/src/main/java/org/apache/iotdb/db/metrics/server/ServerArgument.java b/server/src/main/java/org/apache/iotdb/db/metrics/server/ServerArgument.java
index 30f8b02..fe9e05f 100644
--- a/server/src/main/java/org/apache/iotdb/db/metrics/server/ServerArgument.java
+++ b/server/src/main/java/org/apache/iotdb/db/metrics/server/ServerArgument.java
@@ -14,6 +14,7 @@
  */
 package org.apache.iotdb.db.metrics.server;
 
+import com.sun.management.OperatingSystemMXBean;
 import java.io.BufferedReader;
 import java.io.FileInputStream;
 import java.io.InputStreamReader;
@@ -26,12 +27,12 @@ import java.util.List;
 import java.util.StringTokenizer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import com.sun.management.OperatingSystemMXBean;
 
 public class ServerArgument {
 
   private static final Logger logger = LoggerFactory.getLogger(ServerArgument.class);
-  private static final int CPUTIME = 1000;
+  private static final int CPU_TIME = 1000;
+  private static final int CPU_ABNORMAL_VALUE = -1;
 
   private String host;
   private int port;
@@ -57,6 +58,9 @@ public class ServerArgument {
     this.freeMemory = freeMemory();
     this.maxMemory = maxMemory();
     this.cpuRatio = getCpuRatio();
+    if (!osName.toLowerCase().contains("windows") && !osName.contains("linux")) {
+      logger.warn("Can't get the cpu ratio,because this OS:{} is not support", osName);
+    }
   }
 
   private String inferHostname() {
@@ -66,7 +70,7 @@ public class ServerArgument {
     } catch (UnknownHostException e) {
       logger.error("The host is unknow", e);
     }
-    return ia.getHostName();
+    return ia != null ? ia.getHostName() : null;
   }
 
   private String osName() {
@@ -75,38 +79,34 @@ public class ServerArgument {
 
   private int totalCores() {
     OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
-    int freeCores = osmxb.getAvailableProcessors();
-    return freeCores;
+    return osmxb.getAvailableProcessors();
   }
 
-  private long totalMemory() {
+  long totalMemory() {
     return Runtime.getRuntime().totalMemory() / 1024 / 1024;
   }
 
-  private long freeMemory() {
+  long freeMemory() {
     return Runtime.getRuntime().freeMemory() / 1024 / 1024;
   }
 
-  private long maxMemory() {
+  long maxMemory() {
     return Runtime.getRuntime().maxMemory() / 1024 / 1024;
   }
 
-  private long totalPhysicalMemory() {
+  long totalPhysicalMemory() {
     OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
-    long totalMemorySize = osmxb.getTotalPhysicalMemorySize() / 1024 / 1024;
-    return totalMemorySize;
+    return osmxb.getTotalPhysicalMemorySize() / 1024 / 1024;
   }
 
-  private long usedPhysicalMemory() {
+  long usedPhysicalMemory() {
     OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
-    long usedMemorySize = (osmxb.getTotalPhysicalMemorySize() - osmxb.getFreePhysicalMemorySize()) / 1024 / 1024;
-    return usedMemorySize;
+    return (osmxb.getTotalPhysicalMemorySize() - osmxb.getFreePhysicalMemorySize()) / 1024 / 1024;
   }
 
-  private long freePhysicalMemory() {
+  long freePhysicalMemory() {
     OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
-    long freeMemorySize = osmxb.getFreePhysicalMemorySize() / 1024 / 1024;
-    return freeMemorySize;
+    return osmxb.getFreePhysicalMemorySize() / 1024 / 1024;
   }
 
   public int getPort() {
@@ -154,15 +154,14 @@ public class ServerArgument {
   }
 
   public int getCpuRatio() {
-    String osName = System.getProperty("os.name").toLowerCase();
+    String osNameStr = System.getProperty("os.name").toLowerCase();
     cpuRatio = 0;
-    if (osName.indexOf("windows") >= 0) {
+    if (osNameStr.contains("windows")) {
       cpuRatio = getCpuRatioForWindows();
-    } else if (osName.indexOf("linux") >= 0) {
+    } else if (osNameStr.contains("linux")) {
       cpuRatio = getCpuRateForLinux();
     } else {
-      cpuRatio = 500;
-      logger.warn("Can't get the cpu ratio,because this OS:{} is not support",osName);
+      cpuRatio = CPU_ABNORMAL_VALUE;
     }
     return cpuRatio;
   }
@@ -173,7 +172,7 @@ public class ServerArgument {
   private int getCpuRateForLinux() {
     try {
       long[] c0 = readLinuxCpu();
-      Thread.sleep(CPUTIME);
+      Thread.sleep(CPU_TIME);
       long[] c1 = readLinuxCpu();
       if (c0 != null && c1 != null) {
         long idleCpuTime = c1[0] - c0[0];
@@ -199,7 +198,7 @@ public class ServerArgument {
       String procCmd = System.getenv("windir") + "\\system32\\wbem\\wmic.exe process get Caption,CommandLine,"
           + "KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";
       long[] c0 = readWinCpu(Runtime.getRuntime().exec(procCmd));
-      Thread.sleep(CPUTIME);
+      Thread.sleep(CPU_TIME);
       long[] c1 = readWinCpu(Runtime.getRuntime().exec(procCmd));
       if (c0 != null && c1 != null) {
         long idletime = c1[0] - c0[0];
diff --git a/server/src/main/java/org/apache/iotdb/db/monitor/MonitorConstants.java b/server/src/main/java/org/apache/iotdb/db/monitor/MonitorConstants.java
index 1fbe595..5a45ef7 100644
--- a/server/src/main/java/org/apache/iotdb/db/monitor/MonitorConstants.java
+++ b/server/src/main/java/org/apache/iotdb/db/monitor/MonitorConstants.java
@@ -48,6 +48,12 @@ public class MonitorConstants {
   public static final String REQUEST_METRIC_PREFIX = MONITOR_STORAGE_GROUP
       + IoTDBConstant.PATH_SEPARATOR + "request";
 
+  /**
+   * system resource monitor metrics prefix
+   */
+  public static final String SYSTEM_METRIC_PREFIX = MONITOR_STORAGE_GROUP
+      + IoTDBConstant.PATH_SEPARATOR + "system";
+
   public enum StorageEngineMetrics {
     OK_POINTS, FAIL_POINTS
   }
@@ -56,15 +62,21 @@ public class MonitorConstants {
     TOTAL_REQ
   }
 
-  public enum OsMetrics {
-    NETWORK_REC, NETWORK_SEND, CPU_USAGE, MEM_USAGE, IOTDB_MEM_SIZE, DISK_USAGE, DISK_READ_SPEED,
-    DISK_WRITE_SPEED, DISK_TPS
+  public enum SystemMetrics {
+    CPU_USAGE,
+    FREE_MEM,
+    MAX_MEM,
+    TOTAL_MEM,
+    TOTAL_PHYSICAL_MEM,
+    FREE_PHYSICAL_MEM,
+    USED_PHYSICAL_MEM,
+    // NETWORK_REC, NETWORK_SEND,  DISK_USAGE, DISK_READ_SPEED, DISK_WRITE_SPEED, DISK_TPS
   }
 
   public enum FileSizeMetrics {
     // need add multi data dir monitor
     WAL(new File(config.getWalFolder()).getAbsolutePath()),
-    SYS(new File(config.getSystemDir()).getAbsolutePath());
+    SEQUENCE("");
 
     public String getPath() {
       return path;
diff --git a/server/src/main/java/org/apache/iotdb/db/monitor/StatMonitor.java b/server/src/main/java/org/apache/iotdb/db/monitor/StatMonitor.java
index ae2aff1..03c5572 100644
--- a/server/src/main/java/org/apache/iotdb/db/monitor/StatMonitor.java
+++ b/server/src/main/java/org/apache/iotdb/db/monitor/StatMonitor.java
@@ -25,7 +25,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicLong;
 import org.apache.iotdb.db.concurrent.IoTDBThreadPoolFactory;
 import org.apache.iotdb.db.concurrent.ThreadName;
 import org.apache.iotdb.db.conf.IoTDBConfig;
@@ -40,6 +39,7 @@ import org.apache.iotdb.db.metadata.MManager;
 import org.apache.iotdb.db.monitor.MonitorConstants.FileSizeMetrics;
 import org.apache.iotdb.db.monitor.MonitorConstants.StorageEngineMetrics;
 import org.apache.iotdb.db.monitor.MonitorConstants.TSServiceImplMetrics;
+import org.apache.iotdb.db.monitor.collector.FileSize;
 import org.apache.iotdb.db.qp.physical.crud.InsertPlan;
 import org.apache.iotdb.db.service.IService;
 import org.apache.iotdb.db.service.ServiceType;
@@ -109,18 +109,18 @@ public class StatMonitor implements IService {
    *
    * @param hashMap key is the stat name, values is the stat value object
    * @param statGroupDeltaName is the deviceId seriesPath of this module
-   * @param curTime current time stamp
    * @return TSRecord contains the DataPoints of a statGroupDeltaName
    */
   public static TSRecord convertToTSRecord(Map<String, Object> hashMap,
-      String statGroupDeltaName, long curTime) {
-    TSRecord tsRecord = new TSRecord(curTime, statGroupDeltaName);
+      String statGroupDeltaName) {
+    TSRecord tsRecord = new TSRecord(0, statGroupDeltaName);
     tsRecord.dataPointList = new ArrayList<>();
     for (Map.Entry<String, Object> entry : hashMap.entrySet()) {
-      if(entry.getValue() instanceof AtomicLong){
-        AtomicLong value = (AtomicLong) entry.getValue();
-        tsRecord.dataPointList.add(new LongDataPoint(entry.getKey(), value.get()));
+      if(entry.getValue() instanceof Long){
+        long value = (long) entry.getValue();
+        tsRecord.dataPointList.add(new LongDataPoint(entry.getKey(), value));
       }
+      // add other type data point if needed
     }
     return tsRecord;
   }
@@ -130,7 +130,7 @@ public class StatMonitor implements IService {
    *
    * @param hashMap series path and data type pair, for example: [root.stat.file.size.DATA, INT64]
    */
-  public synchronized void registerStatStorageGroup(Map<String, String> hashMap) {
+  public synchronized void registerMonitorTimeSeries(Map<String, String> hashMap) {
     MManager mManager = MManager.getInstance();
     try {
       for (Map.Entry<String, String> entry : hashMap.entrySet()) {
@@ -155,6 +155,7 @@ public class StatMonitor implements IService {
   }
 
   private void activate() {
+    FileSize.getInstance().registerStatMetadata();
     service = IoTDBThreadPoolFactory.newScheduledThreadPool(1,
         ThreadName.STAT_MONITOR.getName());
     service.scheduleAtFixedRate(
diff --git a/server/src/main/java/org/apache/iotdb/db/monitor/collector/FileSize.java b/server/src/main/java/org/apache/iotdb/db/monitor/collector/FileSize.java
index 9cccd27..a6e5b54 100644
--- a/server/src/main/java/org/apache/iotdb/db/monitor/collector/FileSize.java
+++ b/server/src/main/java/org/apache/iotdb/db/monitor/collector/FileSize.java
@@ -24,7 +24,6 @@ import java.util.Collections;
 import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.atomic.AtomicLong;
 import org.apache.commons.io.FileUtils;
 import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBConstant;
@@ -58,10 +57,8 @@ public class FileSize implements IStatistic {
 
   @Override
   public Map<String, TSRecord> getAllStatisticsValue() {
-    long curTime = System.currentTimeMillis();
     TSRecord tsRecord = StatMonitor
-        .convertToTSRecord(getStatParamsHashMap(), MonitorConstants.FILE_SIZE_METRIC_PREFIX,
-            curTime);
+        .convertToTSRecord(getStatParamsHashMap(), MonitorConstants.FILE_SIZE_METRIC_PREFIX);
     HashMap<String, TSRecord> ret = new HashMap<>();
     ret.put(MonitorConstants.FILE_SIZE_METRIC_PREFIX, tsRecord);
     return ret;
@@ -84,7 +81,7 @@ public class FileSize implements IStatistic {
         logger.error("Register File Size Stats into storageEngine Failed.", e);
       }
     }
-    StatMonitor.getInstance().registerStatStorageGroup(hashMap);
+    StatMonitor.getInstance().registerMonitorTimeSeries(hashMap);
   }
 
   @Override
@@ -92,7 +89,7 @@ public class FileSize implements IStatistic {
     Map<FileSizeMetrics, Long> fileSizeMap = getFileSizesInByte();
     Map<String, Object> statParamsMap = new HashMap<>();
     for (FileSizeMetrics kind : FileSizeMetrics.values()) {
-      statParamsMap.put(kind.name(), new AtomicLong(fileSizeMap.get(kind)));
+      statParamsMap.put(kind.name(), fileSizeMap.get(kind));
     }
     return statParamsMap;
   }
@@ -105,7 +102,6 @@ public class FileSize implements IStatistic {
     if (config.isEnableStatMonitor()) {
       storageEngine = StorageEngine.getInstance();
       StatMonitor statMonitor = StatMonitor.getInstance();
-      registerStatMetadata();
       statMonitor.registerStatistics(MonitorConstants.FILE_SIZE_METRIC_PREFIX, this);
     }
   }
@@ -124,7 +120,7 @@ public class FileSize implements IStatistic {
     EnumMap<FileSizeMetrics, Long> fileSizes = new EnumMap<>(FileSizeMetrics.class);
     for (FileSizeMetrics kinds : FileSizeMetrics.values()) {
 
-      if (kinds.equals(FileSizeMetrics.SYS)) {
+      if (kinds.equals(FileSizeMetrics.SEQUENCE)) {
         fileSizes.put(kinds, collectSeqFileSize(fileSizes, kinds));
       } else {
         File file = SystemFileFactory.INSTANCE.getFile(kinds.getPath());
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 2533e8c..09d955e 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
@@ -35,7 +35,6 @@ import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -166,8 +165,8 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext, IStatisti
 
   public TSServiceImpl() {
     processor = new QueryProcessor(new QueryProcessExecutor());
-    storageEngine = StorageEngine.getInstance();
     if (config.isEnableStatMonitor()) {
+      storageEngine = StorageEngine.getInstance();
       StatMonitor statMonitor = StatMonitor.getInstance();
       registerStatMetadata();
       statMonitor.registerStatistics(METRIC_PREFIX, this);
@@ -1385,10 +1384,8 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext, IStatisti
 
   @Override
   public Map<String, TSRecord> getAllStatisticsValue() {
-    long curTime = System.currentTimeMillis();
     TSRecord tsRecord = StatMonitor
-        .convertToTSRecord(getStatParamsHashMap(), METRIC_PREFIX,
-            curTime);
+        .convertToTSRecord(getStatParamsHashMap(), METRIC_PREFIX);
     HashMap<String, TSRecord> ret = new HashMap<>();
     ret.put(METRIC_PREFIX, tsRecord);
     return ret;
@@ -1409,21 +1406,18 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext, IStatisti
                 TSFileDescriptor.getInstance().getConfig().getCompressor()),
             Collections.emptyMap());
       } catch (StorageEngineException e) {
-        logger.error("Register File Size Stats into storageEngine Failed.", e);
+        logger.error("Register metrics of {} into storageEngine failed",
+            this.getClass().getName(), e);
       }
     }
-    StatMonitor.getInstance().registerStatStorageGroup(hashMap);
+    StatMonitor.getInstance().registerMonitorTimeSeries(hashMap);
   }
 
   @Override
   public Map<String, Object> getStatParamsHashMap() {
-    Map<TSServiceImplMetrics, Long> fileSizeMap = new EnumMap<>(TSServiceImplMetrics.class);
-    fileSizeMap.put(TSServiceImplMetrics.TOTAL_REQ, requestNum.get());
-    requestNum.set(0);
     Map<String, Object> statParamsMap = new HashMap<>();
-    for (TSServiceImplMetrics kind : MonitorConstants.TSServiceImplMetrics.values()) {
-      statParamsMap.put(kind.name(), new AtomicLong(fileSizeMap.get(kind)));
-    }
+    statParamsMap.put(TSServiceImplMetrics.TOTAL_REQ.name(), requestNum.get());
+    requestNum.set(0);
     return statParamsMap;
   }
 
diff --git a/server/src/test/java/org/apache/iotdb/db/monitor/collector/FileSizeTest.java b/server/src/test/java/org/apache/iotdb/db/monitor/collector/FileSizeTest.java
index ae9c4ba..dd78d0e 100644
--- a/server/src/test/java/org/apache/iotdb/db/monitor/collector/FileSizeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/monitor/collector/FileSizeTest.java
@@ -36,7 +36,7 @@ public class FileSizeTest {
 
   private static final String TEST_FILE_CONTENT = "FileSize UT test file";
   private static final String TEST_FILE_PATH =
-      FileSizeMetrics.SYS.getPath() + File.separatorChar + "schemaFile";
+      FileSizeMetrics.SEQUENCE.getPath() + File.separatorChar + "schemaFile";
 
   @Before
   public void setUp() throws Exception {
@@ -71,7 +71,7 @@ public class FileSizeTest {
       e.printStackTrace();
     }
 
-    dataSizeBefore = FileSize.getInstance().getFileSizesInByte().get(FileSizeMetrics.SYS);
+    dataSizeBefore = FileSize.getInstance().getFileSizesInByte().get(FileSizeMetrics.SEQUENCE);
     byte[] contentInBytes = TEST_FILE_CONTENT.getBytes();
     // insert something into the test file under data dir
     try (FileOutputStream fileOutputStream = new FileOutputStream(testFile)) {
@@ -82,7 +82,7 @@ public class FileSizeTest {
       e.printStackTrace();
     }
     // calculate the delta of data dir file size
-    dataSizeAfter = FileSize.getInstance().getFileSizesInByte().get(FileSizeMetrics.SYS);
+    dataSizeAfter = FileSize.getInstance().getFileSizesInByte().get(FileSizeMetrics.SEQUENCE);
     long deltaSize = dataSizeAfter - dataSizeBefore;
 
     if (isWriteSuccess) {