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

dataroaring pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 2ad3f940ff4 [feature](merge-cloud) Add table stat metrics in FE 
(#32876)
2ad3f940ff4 is described below

commit 2ad3f940ff4a841a535dd16bf623a0058b00570f
Author: Lei Zhang <[email protected]>
AuthorDate: Thu Apr 4 10:05:54 2024 +0800

    [feature](merge-cloud) Add table stat metrics in FE (#32876)
---
 .../main/java/org/apache/doris/catalog/Env.java    |  4 +
 .../doris/metric/PrometheusMetricVisitor.java      | 93 ++++++++++++++++++++++
 2 files changed, 97 insertions(+)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
index 949c619a492..3f8fafa477e 100755
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
@@ -6082,6 +6082,10 @@ public class Env {
         return statisticsAutoCollector;
     }
 
+    public MasterDaemon getTabletStatMgr() {
+        return tabletStatMgr;
+    }
+
     public void alterMTMVRefreshInfo(AlterMTMVRefreshInfo info) {
         AlterMTMV alter = new AlterMTMV(info.getMvName(), 
info.getRefreshInfo(), MTMVAlterOpType.ALTER_REFRESH_INFO);
         this.alter.processAlterMTMV(alter, false);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/metric/PrometheusMetricVisitor.java 
b/fe/fe-core/src/main/java/org/apache/doris/metric/PrometheusMetricVisitor.java
index 8c34a1b80eb..91df0410be4 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/metric/PrometheusMetricVisitor.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/metric/PrometheusMetricVisitor.java
@@ -17,7 +17,10 @@
 
 package org.apache.doris.metric;
 
+import org.apache.doris.catalog.CloudTabletStatMgr;
 import org.apache.doris.catalog.Env;
+import org.apache.doris.common.Config;
+import org.apache.doris.common.Pair;
 import org.apache.doris.monitor.jvm.JvmStats;
 import org.apache.doris.monitor.jvm.JvmStats.GarbageCollector;
 import org.apache.doris.monitor.jvm.JvmStats.MemoryPool;
@@ -31,6 +34,7 @@ import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -228,6 +232,95 @@ public class PrometheusMetricVisitor extends MetricVisitor 
{
 
     @Override
     public void visitCloudTableStats() {
+        if (Config.isNotCloudMode() || Env.getCurrentEnv().getTabletStatMgr() 
== null) {
+            return;
+        }
+
+        CloudTabletStatMgr tabletStatMgr = (CloudTabletStatMgr) 
Env.getCurrentEnv().getTabletStatMgr();
+
+        StringBuilder dataSizeBuilder = new StringBuilder();
+        StringBuilder rowsetCountBuilder = new StringBuilder();
+        StringBuilder segmentCountBuilder = new StringBuilder();
+        StringBuilder tableRowCountBuilder = new StringBuilder();
+
+        long totalTableSize = 0;
+        for (CloudTabletStatMgr.CloudTableStats stats : 
tabletStatMgr.getCloudTableStatsMap().values()) {
+            totalTableSize += stats.getTableDataSize();
+
+            dataSizeBuilder.append("doris_fe_table_data_size{db_name=\"");
+            dataSizeBuilder.append(stats.getDbName());
+            dataSizeBuilder.append("\", table_name=\"");
+            dataSizeBuilder.append(stats.getTableName());
+            dataSizeBuilder.append("\"} ");
+            dataSizeBuilder.append(stats.getTableDataSize());
+            dataSizeBuilder.append("\n");
+
+            
rowsetCountBuilder.append("doris_fe_table_rowset_count{db_name=\"");
+            rowsetCountBuilder.append(stats.getDbName());
+            rowsetCountBuilder.append("\", table_name=\"");
+            rowsetCountBuilder.append(stats.getTableName());
+            rowsetCountBuilder.append("\"} ");
+            rowsetCountBuilder.append(stats.getTableRowsetCount());
+            rowsetCountBuilder.append("\n");
+
+            
segmentCountBuilder.append("doris_fe_table_segment_count{db_name=\"");
+            segmentCountBuilder.append(stats.getDbName());
+            segmentCountBuilder.append("\", table_name=\"");
+            segmentCountBuilder.append(stats.getTableName());
+            segmentCountBuilder.append("\"} ");
+            segmentCountBuilder.append(stats.getTableSegmentCount());
+            segmentCountBuilder.append("\n");
+
+            tableRowCountBuilder.append("doris_fe_table_row_count{db_name=\"");
+            tableRowCountBuilder.append(stats.getDbName());
+            tableRowCountBuilder.append("\", table_name=\"");
+            tableRowCountBuilder.append(stats.getTableName());
+            tableRowCountBuilder.append("\"} ");
+            tableRowCountBuilder.append(stats.getTableRowCount());
+            tableRowCountBuilder.append("\n");
+        }
+
+        if (dataSizeBuilder.length() > 0) {
+            sb.append(Joiner.on(" ").join(HELP, "doris_fe_table_data_size", 
"table data size\n"));
+            sb.append(Joiner.on(" ").join(TYPE, "doris_fe_table_data_size", 
"gauge\n"));
+            sb.append(dataSizeBuilder.toString());
+        }
+
+        if (segmentCountBuilder.length() > 0) {
+            sb.append(Joiner.on(" ").join(HELP, "doris_fe_table_rowset_count", 
"table rowset count\n"));
+            sb.append(Joiner.on(" ").join(TYPE, "doris_fe_table_rowset_count", 
"gauge\n"));
+            sb.append(rowsetCountBuilder.toString());
+        }
+
+        if (segmentCountBuilder.length() > 0) {
+            sb.append(Joiner.on(" ").join(HELP, 
"doris_fe_table_segment_count", "table segment count\n"));
+            sb.append(Joiner.on(" ").join(TYPE, 
"doris_fe_table_segment_count", "gauge\n"));
+            sb.append(segmentCountBuilder.toString());
+        }
+
+        if (tableRowCountBuilder.length() > 0) {
+            sb.append(Joiner.on(" ").join(HELP, "doris_fe_table_row_count", 
"table row count\n"));
+            sb.append(Joiner.on(" ").join(TYPE, "doris_fe_table_row_count", 
"gauge\n"));
+            sb.append(tableRowCountBuilder.toString());
+        }
+
+        // total table size
+        sb.append(Joiner.on(" ").join(HELP, "doris_fe_table_data_size_total", 
"total table data size\n"));
+        sb.append(Joiner.on(" ").join(TYPE, "doris_fe_table_data_size_total", 
"gauge\n"));
+        sb.append("doris_fe_table_data_size_total ");
+        sb.append(totalTableSize);
+        sb.append("\n");
+
+        // total recycle bin size
+        long totalRecycleSize = 0;
+        for (Map.Entry<Long, Pair<Long, Long>> entry : 
Env.getCurrentRecycleBin().getDbToRecycleSize().entrySet()) {
+            totalRecycleSize += entry.getValue().first;
+        }
+        sb.append(Joiner.on(" ").join(HELP, 
"doris_fe_recycle_data_size_total", "total recycle bin data size\n"));
+        sb.append(Joiner.on(" ").join(TYPE, 
"doris_fe_recycle_data_size_total", "gauge\n"));
+        sb.append("doris_fe_recycle_data_size_total ");
+        sb.append(totalRecycleSize);
+        sb.append("\n");
         return;
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to