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]