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) {