diff --git a/fe/fe-core/src/main/java/org/apache/doris/metric/MetricRepo.java b/fe/fe-core/src/main/java/org/apache/doris/metric/MetricRepo.java index 70da86cae4f8ab..55072b7b97f6e9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/metric/MetricRepo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/metric/MetricRepo.java @@ -89,6 +89,7 @@ public final class MetricRepo { public static Histogram HISTO_QUERY_LATENCY; public static AutoMappedMetric USER_HISTO_QUERY_LATENCY; public static AutoMappedMetric> USER_GAUGE_QUERY_INSTANCE_NUM; + public static AutoMappedMetric> USER_GAUGE_CONNECTIONS; public static AutoMappedMetric USER_COUNTER_QUERY_INSTANCE_BEGIN; public static AutoMappedMetric BE_COUNTER_QUERY_RPC_ALL; public static AutoMappedMetric BE_COUNTER_QUERY_RPC_FAILED; @@ -228,10 +229,15 @@ public Long getValue() { generateBackendsTabletMetrics(); // connections - GaugeMetric connections = new GaugeMetric("connection_total", MetricUnit.CONNECTIONS, - "total connections") { + USER_GAUGE_CONNECTIONS = addLabeledMetrics("user", () -> + new GaugeMetricImpl<>("connection_total", MetricUnit.CONNECTIONS, + "total connections", 0)); + GaugeMetric connections = new GaugeMetric("connection_total", + MetricUnit.CONNECTIONS, "total connections") { @Override public Integer getValue() { + ExecuteEnv.getInstance().getScheduler().getUserConnectionMap() + .forEach((k, v) -> USER_GAUGE_CONNECTIONS.getOrAdd(k).setValue(v.get())); return ExecuteEnv.getInstance().getScheduler().getConnectionNum(); } }; diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java index 97d47340194107..a71a221f6a3ba0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectScheduler.java @@ -194,4 +194,8 @@ public String getQueryIdByTraceId(String traceId) { public Map getConnectionMap() { return connectionMap; } + + public Map getUserConnectionMap() { + return connByUser; + } }