This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 01acd60e2b3 [Pick][Improment]Add workload group query detail (#40050)
(#41594)
01acd60e2b3 is described below
commit 01acd60e2b3f24fbd18689feead2183f255490e1
Author: wangbo <[email protected]>
AuthorDate: Fri Oct 11 09:32:33 2024 +0800
[Pick][Improment]Add workload group query detail (#40050) (#41594)
pick #40050
---
.../org/apache/doris/metric/JsonMetricVisitor.java | 5 ++++
.../java/org/apache/doris/metric/MetricRepo.java | 2 ++
.../org/apache/doris/metric/MetricVisitor.java | 2 ++
.../doris/metric/PrometheusMetricVisitor.java | 29 ++++++++++++++++++++++
.../doris/metric/SimpleCoreMetricVisitor.java | 5 ++++
.../resource/workloadgroup/WorkloadGroupMgr.java | 25 +++++++++++++++++++
6 files changed, 68 insertions(+)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/metric/JsonMetricVisitor.java
b/fe/fe-core/src/main/java/org/apache/doris/metric/JsonMetricVisitor.java
index 5b3b3d292a2..23682e5cd66 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/metric/JsonMetricVisitor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/metric/JsonMetricVisitor.java
@@ -228,6 +228,11 @@ public class JsonMetricVisitor extends MetricVisitor {
}
}
+ @Override
+ public void visitWorkloadGroup() {
+ return;
+ }
+
@Override
public String finish() {
if (!closed) {
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 a18b57ac785..f029b4f6255 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
@@ -686,6 +686,8 @@ public final class MetricRepo {
// node info
visitor.getNodeInfo();
+ visitor.visitWorkloadGroup();
+
return visitor.finish();
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/metric/MetricVisitor.java
b/fe/fe-core/src/main/java/org/apache/doris/metric/MetricVisitor.java
index dcbf9268b82..f1dbab67117 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/metric/MetricVisitor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/metric/MetricVisitor.java
@@ -44,6 +44,8 @@ public abstract class MetricVisitor {
public abstract void getNodeInfo();
+ public abstract void visitWorkloadGroup();
+
public String finish() {
return sb.toString();
}
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 4cab30e8041..aabeb8e317c 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
@@ -26,11 +26,14 @@ import org.apache.doris.monitor.jvm.JvmStats.Threads;
import com.codahale.metrics.Histogram;
import com.codahale.metrics.Snapshot;
import com.google.common.base.Joiner;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
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;
@@ -41,6 +44,9 @@ import java.util.stream.Collectors;
* doris_fe_job{job="load", type="mini", state="pending"} 0
*/
public class PrometheusMetricVisitor extends MetricVisitor {
+
+ private static final Logger logger =
LogManager.getLogger(PrometheusMetricVisitor.class);
+
// jvm
private static final String JVM_HEAP_SIZE_BYTES = "jvm_heap_size_bytes";
private static final String JVM_NON_HEAP_SIZE_BYTES =
"jvm_non_heap_size_bytes";
@@ -225,4 +231,27 @@ public class PrometheusMetricVisitor extends MetricVisitor
{
}
return;
}
+
+ @Override
+ public void visitWorkloadGroup() {
+ StringBuilder tmpSb = new StringBuilder();
+ try {
+ String counterTitle = "doris_workload_group_query_detail";
+ tmpSb.append("# HELP " + counterTitle + "\n");
+ tmpSb.append("# TYPE " + counterTitle + " counter\n");
+ Map<String, List<String>> workloadGroupMap =
Env.getCurrentEnv().getWorkloadGroupMgr()
+ .getWorkloadGroupQueryDetail();
+ for (Map.Entry<String, List<String>> entry :
workloadGroupMap.entrySet()) {
+ String name = entry.getKey();
+ List<String> valList = entry.getValue();
+ tmpSb.append(String.format("%s{name=\"%s\", type=\"%s\"}
%s\n", counterTitle, name, "running_query_num",
+ valList.get(0)));
+ tmpSb.append(String.format("%s{name=\"%s\", type=\"%s\"}
%s\n", counterTitle, name, "waiting_query_num",
+ valList.get(1)));
+ }
+ sb.append(tmpSb);
+ } catch (Exception e) {
+ logger.warn("error happends when get workload group query detail
", e);
+ }
+ }
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/metric/SimpleCoreMetricVisitor.java
b/fe/fe-core/src/main/java/org/apache/doris/metric/SimpleCoreMetricVisitor.java
index bbbd13186ee..cb7d559ef1c 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/metric/SimpleCoreMetricVisitor.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/metric/SimpleCoreMetricVisitor.java
@@ -136,4 +136,9 @@ public class SimpleCoreMetricVisitor extends MetricVisitor {
sb.append("doris_fe_backend_dead_num").append("
").append(beDeadNum).append("\n");
sb.append("doris_fe_broker_dead_num").append("
").append(brokerDeadNum).append("\n");
}
+
+ @Override
+ public void visitWorkloadGroup() {
+ return;
+ }
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java
b/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java
index 272f045f41b..81a08ad76fe 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java
@@ -301,6 +301,31 @@ public class WorkloadGroupMgr extends MasterDaemon
implements Writable, GsonPost
}
}
+ public Map<String, List<String>> getWorkloadGroupQueryDetail() {
+ Map<String, List<String>> ret = Maps.newHashMap();
+ readLock();
+ try {
+ for (Map.Entry<Long, WorkloadGroup> entry :
idToWorkloadGroup.entrySet()) {
+ Long wgId = entry.getKey();
+ WorkloadGroup wg = entry.getValue();
+ QueryQueue qq = idToQueryQueue.get(wgId);
+ List<String> valueList = new ArrayList<>(2);
+ if (qq == null) {
+ valueList.add("0");
+ valueList.add("0");
+ } else {
+ Pair<Integer, Integer> qdtail = qq.getQueryQueueDetail();
+ valueList.add(String.valueOf(qdtail.first));
+ valueList.add(String.valueOf(qdtail.second));
+ }
+ ret.put(wg.getName(), valueList);
+ }
+ } finally {
+ readUnlock();
+ }
+ return ret;
+ }
+
private String getWorkloadGroupNameAndCheckPriv(ConnectContext context)
throws AnalysisException {
String groupName = context.getSessionVariable().getWorkloadGroup();
if (Strings.isNullOrEmpty(groupName)) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]