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

marklau99 pushed a commit to branch add-level-file-metric
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/add-level-file-metric by this 
push:
     new 1fb408b3211 add level file size metrics
1fb408b3211 is described below

commit 1fb408b3211f9f1be7d8e6972d2195858c3c345d
Author: Liu Xuxin <[email protected]>
AuthorDate: Thu May 25 19:43:44 2023 +0800

    add level file size metrics
---
 .../iotdb/db/engine/TsFileMetricManager.java       | 29 ++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/TsFileMetricManager.java 
b/server/src/main/java/org/apache/iotdb/db/engine/TsFileMetricManager.java
index 1b7a1e600ad..64dfc978b4c 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/TsFileMetricManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/TsFileMetricManager.java
@@ -44,6 +44,7 @@ public class TsFileMetricManager {
   private static final Logger log = 
LoggerFactory.getLogger(TsFileMetricManager.class);
   private static final TsFileMetricManager INSTANCE = new 
TsFileMetricManager();
   private static final String FILE_LEVEL_COUNT = "file_level_count";
+  private static final String FILE_LEVEL_SIZE = "file_level_size";
   private static final String SEQUENCE = "sequence";
   private static final String UNSEQUENCE = "unsequence";
   private static final String LEVEL = "level";
@@ -57,6 +58,8 @@ public class TsFileMetricManager {
   private final AtomicLong modFileSize = new AtomicLong(0);
   private final Map<Integer, Integer> seqLevelTsFileCountMap = new HashMap<>();
   private final Map<Integer, Integer> unseqLevelTsFileCountMap = new 
HashMap<>();
+  private final Map<Integer, Long> seqLevelTsFileSizeMap = new HashMap<>();
+  private final Map<Integer, Long> unseqLevelTsFileSizeMap = new HashMap<>();
   private long lastUpdateTime = 0;
   private static final long UPDATE_INTERVAL = 10_000L;
 
@@ -91,10 +94,13 @@ public class TsFileMetricManager {
       TsFileNameGenerator.TsFileName tsFileName = 
TsFileNameGenerator.getTsFileName(name);
       int level = tsFileName.getInnerCompactionCnt();
       int count = -1;
+      long totalSize = 0L;
       if (seq) {
         count = seqLevelTsFileCountMap.compute(level, (k, v) -> v == null ? 1 
: v + 1);
+        totalSize = seqLevelTsFileSizeMap.compute(level, (k, v) -> v == null ? 
size : v + size);
       } else {
         count = unseqLevelTsFileCountMap.compute(level, (k, v) -> v == null ? 
1 : v + 1);
+        totalSize = unseqLevelTsFileSizeMap.compute(level, (k, v) -> v == null 
? size : v + size);
       }
       if (metricService != null) {
         metricService
@@ -106,6 +112,15 @@ public class TsFileMetricManager {
                 LEVEL,
                 String.valueOf(level))
             .set(count);
+        metricService
+            .getOrCreateGauge(
+                FILE_LEVEL_SIZE,
+                MetricLevel.CORE,
+                Tag.TYPE.toString(),
+                seq ? SEQUENCE : UNSEQUENCE,
+                LEVEL,
+                String.valueOf(level))
+            .set(totalSize);
       }
     } catch (IOException e) {
       log.error("Unexpected error occurred when getting tsfile name", e);
@@ -123,6 +138,7 @@ public class TsFileMetricManager {
     for (String name : names) {
       int level = -1;
       int count = -1;
+      long totalSize = 0L;
       try {
         TsFileNameGenerator.TsFileName tsFileName = 
TsFileNameGenerator.getTsFileName(name);
         level = tsFileName.getInnerCompactionCnt();
@@ -130,6 +146,10 @@ public class TsFileMetricManager {
             seq
                 ? seqLevelTsFileCountMap.compute(level, (k, v) -> v == null ? 
0 : v - 1)
                 : unseqLevelTsFileCountMap.compute(level, (k, v) -> v == null 
? 0 : v - 1);
+        totalSize =
+            seq
+                ? seqLevelTsFileSizeMap.compute(level, (k, v) -> v == null ? 0 
: v - size)
+                : unseqLevelTsFileSizeMap.compute(level, (k, v) -> v == null ? 
0 : v - size);
       } catch (IOException e) {
         log.error("Unexpected error occurred when getting tsfile name", e);
       }
@@ -143,6 +163,15 @@ public class TsFileMetricManager {
                 LEVEL,
                 String.valueOf(level))
             .set(count);
+        metricService
+            .getOrCreateGauge(
+                FILE_LEVEL_SIZE,
+                MetricLevel.CORE,
+                Tag.TYPE.toString(),
+                seq ? SEQUENCE : UNSEQUENCE,
+                LEVEL,
+                String.valueOf(level))
+            .set(totalSize);
       }
     }
   }

Reply via email to