You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by ca...@apache.org on 2023/07/23 03:43:25 UTC
[doris] branch branch-1.2-lts updated: [fix](metric) fix prometheus metric format error (#22045)
This is an automated email from the ASF dual-hosted git repository.
caiconghui pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
new 8ca926f34e [fix](metric) fix prometheus metric format error (#22045)
8ca926f34e is described below
commit 8ca926f34e99af72c6dc578c4b2946bd01e61772
Author: caiconghui <55...@users.noreply.github.com>
AuthorDate: Sat Jul 22 22:38:29 2023 +0800
[fix](metric) fix prometheus metric format error (#22045)
we should define metric name only once like following:
# HELP doris_fe_query_latency_ms
# TYPE doris_fe_query_latency_ms summary
doris_fe_query_latency_ms{quantile="0.75"} 1.0
doris_fe_query_latency_ms{quantile="0.95"} 2.0
doris_fe_query_latency_ms{quantile="0.98"} 100.0
doris_fe_query_latency_ms{quantile="0.99"} 100.0
doris_fe_query_latency_ms{quantile="0.999"} 100.0
doris_fe_query_latency_ms{quantile="0.75",user="default_cluster:test1"} 1.0
doris_fe_query_latency_ms{quantile="0.95",user="default_cluster:test1"} 1.0
doris_fe_query_latency_ms{quantile="0.98",user="default_cluster:test1"} 1.0
doris_fe_query_latency_ms{quantile="0.99",user="default_cluster:test1"} 1.0
doris_fe_query_latency_ms{quantile="0.999",user="default_cluster:test1"} 1.0
---
.../src/main/java/org/apache/doris/metric/MetricRepo.java | 6 +++---
.../org/apache/doris/metric/PrometheusMetricVisitor.java | 12 +++++-------
.../src/main/java/org/apache/doris/qe/ConnectProcessor.java | 3 ++-
.../src/test/java/org/apache/doris/metric/MetricsTest.java | 6 +++---
4 files changed, 13 insertions(+), 14 deletions(-)
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 f38bc84e20..3e50cc8e1c 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
@@ -72,7 +72,7 @@ public final class MetricRepo {
public static LongCounterMetric COUNTER_QUERY_TABLE;
public static LongCounterMetric COUNTER_QUERY_OLAP_TABLE;
public static Histogram HISTO_QUERY_LATENCY;
- public static AutoMappedMetric<Histogram> DB_HISTO_QUERY_LATENCY;
+ public static AutoMappedMetric<Histogram> USER_HISTO_QUERY_LATENCY;
public static AutoMappedMetric<GaugeMetricImpl<Long>> USER_GAUGE_QUERY_INSTANCE_NUM;
public static AutoMappedMetric<LongCounterMetric> USER_COUNTER_QUERY_INSTANCE_BEGIN;
public static AutoMappedMetric<LongCounterMetric> BE_COUNTER_QUERY_RPC_ALL;
@@ -285,8 +285,8 @@ public final class MetricRepo {
DORIS_METRIC_REGISTER.addMetrics(COUNTER_QUERY_OLAP_TABLE);
HISTO_QUERY_LATENCY = METRIC_REGISTER.histogram(
MetricRegistry.name("query", "latency", "ms"));
- DB_HISTO_QUERY_LATENCY = new AutoMappedMetric<>(name -> {
- String metricName = MetricRegistry.name("query", "latency", "ms", "db=" + name);
+ USER_HISTO_QUERY_LATENCY = new AutoMappedMetric<>(name -> {
+ String metricName = MetricRegistry.name("query", "latency", "ms", "user=" + name);
return METRIC_REGISTER.histogram(metricName);
});
USER_COUNTER_QUERY_INSTANCE_BEGIN = addLabeledMetrics("user", () ->
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 60787f3f2b..a560edd5d1 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
@@ -191,8 +191,11 @@ public class PrometheusMetricVisitor extends MetricVisitor {
}
final String fullName = prefix + String.join("_", names);
final String fullTag = String.join(",", tags);
- sb.append(HELP).append(fullName).append(" ").append("\n");
- sb.append(TYPE).append(fullName).append(" ").append("summary\n");
+ // we should define metric name only once
+ if (tags.isEmpty()) {
+ sb.append(HELP).append(fullName).append(" ").append("\n");
+ sb.append(TYPE).append(fullName).append(" ").append("summary\n");
+ }
String delimiter = tags.isEmpty() ? "" : ",";
Snapshot snapshot = histogram.getSnapshot();
sb.append(fullName).append("{quantile=\"0.75\"").append(delimiter).append(fullTag).append("} ")
@@ -205,11 +208,6 @@ public class PrometheusMetricVisitor extends MetricVisitor {
.append(snapshot.get99thPercentile()).append("\n");
sb.append(fullName).append("{quantile=\"0.999\"").append(delimiter).append(fullTag).append("} ")
.append(snapshot.get999thPercentile()).append("\n");
- sb.append(fullName).append("_sum {").append(fullTag).append("} ")
- .append(histogram.getCount() * snapshot.getMean()).append("\n");
- sb.append(fullName).append("_count {").append(fullTag).append("} ")
- .append(histogram.getCount()).append("\n");
- return;
}
@Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java
index f08934885c..12c1bfa518 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java
@@ -203,7 +203,8 @@ public class ConnectProcessor {
|| ctx.getState().getStateType() == MysqlStateType.EOF) {
// ok query
MetricRepo.HISTO_QUERY_LATENCY.update(elapseMs);
- MetricRepo.DB_HISTO_QUERY_LATENCY.getOrAdd(ctx.getDatabase()).update(elapseMs);
+ MetricRepo.USER_HISTO_QUERY_LATENCY.getOrAdd(ctx.getQualifiedUser()).update(elapseMs);
+
if (elapseMs > Config.qe_slow_log_ms) {
String sqlDigest = DigestUtils.md5Hex(((Queriable) parsedStmt).toDigest());
ctx.getAuditEventBuilder().setSqlDigest(sqlDigest);
diff --git a/fe/fe-core/src/test/java/org/apache/doris/metric/MetricsTest.java b/fe/fe-core/src/test/java/org/apache/doris/metric/MetricsTest.java
index 0446495025..cb16c0bb5a 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/metric/MetricsTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/metric/MetricsTest.java
@@ -58,8 +58,8 @@ public class MetricsTest {
}
@Test
- public void testDBMetrics() {
- MetricRepo.DB_HISTO_QUERY_LATENCY.getOrAdd("test_db").update(10L);
+ public void testUserMetrics() {
+ MetricRepo.USER_HISTO_QUERY_LATENCY.getOrAdd("test_user").update(10L);
StringBuilder sb = new StringBuilder();
MetricVisitor visitor = new PrometheusMetricVisitor();
SortedMap<String, Histogram> histograms = MetricRepo.METRIC_REGISTER.getHistograms();
@@ -69,7 +69,7 @@ public class MetricsTest {
String metricResult = sb.toString();
Assert.assertTrue(metricResult.contains("# TYPE doris_fe_query_latency_ms summary"));
Assert.assertTrue(metricResult.contains("doris_fe_query_latency_ms{quantile=\"0.999\"} 0.0"));
- Assert.assertTrue(metricResult.contains("doris_fe_query_latency_ms{quantile=\"0.999\",db=\"test_db\"} 10.0"));
+ Assert.assertTrue(metricResult.contains("doris_fe_query_latency_ms{quantile=\"0.999\",user=\"test_user\"} 10.0"));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org