This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.2
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.2 by this push:
new f8980fe136 Add Consumer Metrics (#11542)
f8980fe136 is described below
commit f8980fe136bfcbe7d547cf6f04a1fc520a0b1da7
Author: songxiaosheng <[email protected]>
AuthorDate: Mon Feb 20 16:03:57 2023 +0800
Add Consumer Metrics (#11542)
* consumer Metrics filter
* consumer Metrics filter
* fix some problem
* add keyword private final
* add keyword private final
* add consumer point
* rollback some file
* add some metrics
* fix some problem
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
* :recycle: refactor consumer meter collect
---------
Co-authored-by: lcb11 <[email protected]>
Co-authored-by: lcb11 <[email protected]>
---
.../rpc/cluster/filter/FilterChainBuilder.java | 4 ++
.../apache/dubbo/config/ReferenceConfigTest.java | 15 +++-
.../apache/dubbo/metrics/model/MethodMetric.java | 80 ++++++++++++++--------
.../org/apache/dubbo/metrics/model/MetricsKey.java | 54 +++++++--------
.../metrics/model/sample/GaugeMetricSample.java | 5 ++
.../dubbo/metrics/model/sample/MetricSample.java | 1 +
.../collector/AggregateMetricsCollector.java | 48 ++++++++-----
.../collector/sample/MethodMetricsSampler.java | 52 ++++++++------
.../apache/dubbo/metrics/filter/MetricsFilter.java | 3 +-
.../apache/dubbo/metrics/TestMetricsInvoker.java | 57 +++++++++++++++
.../collector/AggregateMetricsCollectorTest.java | 23 +++++--
.../dubbo/metrics/filter/MetricsFilterTest.java | 55 ++++++++-------
.../collector/DefaultMetricsCollectorTest.java | 49 +++++--------
.../metrics/metrics/model/MethodMetricTest.java | 4 ++
14 files changed, 292 insertions(+), 158 deletions(-)
diff --git
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/FilterChainBuilder.java
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/FilterChainBuilder.java
index 7b2c284930..a837724819 100644
---
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/FilterChainBuilder.java
+++
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/FilterChainBuilder.java
@@ -237,6 +237,10 @@ public interface FilterChainBuilder {
return asyncResult;
}
+ public Invoker<T> getFilterInvoker() {
+ return filterInvoker;
+ }
+
@Override
public Class<T> getInterface() {
return filterInvoker.getInterface();
diff --git
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
index e2c781ec22..b55af853c7 100644
---
a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
+++
b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java
@@ -35,6 +35,7 @@ import
org.apache.dubbo.registry.client.migration.MigrationInvoker;
import org.apache.dubbo.rpc.Exporter;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.ProxyFactory;
+import org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder;
import org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareClusterInvoker;
import org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker;
import org.apache.dubbo.rpc.listener.ListenerInvokerWrapper;
@@ -480,8 +481,18 @@ class ReferenceConfigTest {
referenceConfig.init();
Assertions.assertTrue(referenceConfig.getInvoker() instanceof
MockClusterInvoker);
Invoker<?> withFilter = ((MockClusterInvoker<?>)
referenceConfig.getInvoker()).getDirectory().getAllInvokers().get(0);
- Assertions.assertTrue(withFilter instanceof ListenerInvokerWrapper);
- Assertions.assertTrue(((ListenerInvokerWrapper<?>)
withFilter).getInvoker() instanceof InjvmInvoker);
+ Assertions.assertTrue(withFilter instanceof ListenerInvokerWrapper
+ || withFilter instanceof
FilterChainBuilder.CallbackRegistrationInvoker);
+ if (withFilter instanceof ListenerInvokerWrapper) {
+ Assertions.assertTrue(((ListenerInvokerWrapper<?>)
withFilter).getInvoker() instanceof InjvmInvoker);
+ }
+ if (withFilter instanceof
FilterChainBuilder.CallbackRegistrationInvoker) {
+ Invoker filterInvoker =
((FilterChainBuilder.CallbackRegistrationInvoker)
withFilter).getFilterInvoker();
+ FilterChainBuilder.CopyOfFilterChainNode filterInvoker1 =
(FilterChainBuilder.CopyOfFilterChainNode) filterInvoker;
+ ListenerInvokerWrapper originalInvoker = (ListenerInvokerWrapper)
filterInvoker1.getOriginalInvoker();
+ Invoker invoker = originalInvoker.getInvoker();
+ Assertions.assertTrue(invoker instanceof InjvmInvoker);
+ }
URL url = withFilter.getUrl();
Assertions.assertEquals("application1",
url.getParameter("application"));
Assertions.assertEquals("value1", url.getParameter("key1"));
diff --git
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MethodMetric.java
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MethodMetric.java
index cee91211dd..cbccdcf188 100644
---
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MethodMetric.java
+++
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MethodMetric.java
@@ -17,14 +17,18 @@
package org.apache.dubbo.metrics.model;
-import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.rpc.Invocation;
+import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.RpcInvocation;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
+import java.util.Optional;
+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;
+import static
org.apache.dubbo.common.constants.CommonConstants.GROUP_CHAR_SEPARATOR;
+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;
import static org.apache.dubbo.common.constants.MetricsConstants.TAG_IP;
import static org.apache.dubbo.common.constants.MetricsConstants.TAG_HOSTNAME;
import static
org.apache.dubbo.common.constants.MetricsConstants.TAG_APPLICATION_NAME;
@@ -41,6 +45,7 @@ import static
org.apache.dubbo.rpc.support.RpcUtils.isGenericCall;
*/
public class MethodMetric implements Metric {
private String applicationName;
+ private String side;
private String interfaceName;
private String methodName;
private String group;
@@ -100,30 +105,6 @@ public class MethodMetric implements Metric {
return tags;
}
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- MethodMetric that = (MethodMetric) o;
- return Objects.equals(interfaceName, that.interfaceName) &&
Objects.equals(methodName, that.methodName)
- && Objects.equals(group, that.group) && Objects.equals(version,
that.version);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(interfaceName, methodName, group, version);
- }
-
- @Override
- public String toString() {
- return "MethodMetric{" +
- "interfaceName='" + interfaceName + '\'' +
- ", methodName='" + methodName + '\'' +
- ", group='" + group + '\'' +
- ", version='" + version + '\'' +
- '}';
- }
-
private void init(Invocation invocation) {
String serviceUniqueName = invocation.getTargetServiceUniqueName();
String methodName = invocation.getMethodName();
@@ -135,21 +116,62 @@ public class MethodMetric implements Metric {
}
String group = null;
String interfaceAndVersion;
- String[] arr = serviceUniqueName.split(CommonConstants.PATH_SEPARATOR);
+ String[] arr = serviceUniqueName.split(PATH_SEPARATOR);
if (arr.length == 2) {
group = arr[0];
interfaceAndVersion = arr[1];
} else {
interfaceAndVersion = arr[0];
}
-
- String[] ivArr =
interfaceAndVersion.split(CommonConstants.GROUP_CHAR_SEPARATOR);
+ String[] ivArr = interfaceAndVersion.split(GROUP_CHAR_SEPARATOR);
String interfaceName = ivArr[0];
String version = ivArr.length == 2 ? ivArr[1] : null;
-
+ Optional<? extends Invoker<?>> invoker =
Optional.ofNullable(invocation.getInvoker());
+ this.side = invoker.isPresent() ? invoker.get().getUrl().getSide() :
PROVIDER_SIDE;
this.interfaceName = interfaceName;
this.methodName = methodName;
this.group = group;
this.version = version;
}
+
+ public String getApplicationName() {
+ return applicationName;
+ }
+
+ public void setApplicationName(String applicationName) {
+ this.applicationName = applicationName;
+ }
+
+ public String getSide() {
+ return side;
+ }
+
+ public void setSide(String side) {
+ this.side = side;
+ }
+
+ @Override
+ public String toString() {
+ return "MethodMetric{" +
+ "applicationName='" + applicationName + '\'' +
+ ", side='" + side + '\'' +
+ ", interfaceName='" + interfaceName + '\'' +
+ ", methodName='" + methodName + '\'' +
+ ", group='" + group + '\'' +
+ ", version='" + version + '\'' +
+ '}';
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ MethodMetric that = (MethodMetric) o;
+ return Objects.equals(applicationName, that.applicationName) &&
Objects.equals(side, that.side) && Objects.equals(interfaceName,
that.interfaceName) && Objects.equals(methodName, that.methodName) &&
Objects.equals(group, that.group) && Objects.equals(version, that.version);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(applicationName, side, interfaceName, methodName,
group, version);
+ }
}
diff --git
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MetricsKey.java
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MetricsKey.java
index 1d19b044c7..7649af788a 100644
---
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MetricsKey.java
+++
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/MetricsKey.java
@@ -21,32 +21,32 @@ public enum MetricsKey {
APPLICATION_METRIC_INFO("dubbo.application.info.total", "Total Application
Info"),
// provider metrics key
- PROVIDER_METRIC_REQUESTS("dubbo.provider.requests.total", "Total
Requests"),
- PROVIDER_METRIC_REQUESTS_SUCCEED("dubbo.provider.requests.succeed.total",
"Succeed Requests"),
-
PROVIDER_METRIC_REQUEST_BUSINESS_FAILED("dubbo.provider.requests.business.failed.total","Failed
Business Requests"),
- PROVIDER_METRIC_REQUESTS_PROCESSING("dubbo.provider.requests.processing",
"Processing Requests"),
- PROVIDER_METRIC_REQUESTS_TIMEOUT("dubbo.provider.requests.timeout.total",
"Total Timeout Failed Requests"),
- PROVIDER_METRIC_REQUESTS_LIMIT("dubbo.provider.requests.limit.total",
"Total Limit Failed Requests"),
-
PROVIDER_METRIC_REQUESTS_FAILED("dubbo.provider.requests.unknown.failed.total",
"Unknown Failed Requests"),
-
PROVIDER_METRIC_REQUESTS_TOTAL_FAILED("dubbo.provider.requests.failed.total",
"Total Failed Requests"),
+ METRIC_REQUESTS("dubbo.%s.requests.total", "Total Requests"),
+ METRIC_REQUESTS_SUCCEED("dubbo.%s.requests.succeed.total", "Succeed
Requests"),
+
METRIC_REQUEST_BUSINESS_FAILED("dubbo.%s.requests.business.failed.total","Failed
Business Requests"),
+ METRIC_REQUESTS_PROCESSING("dubbo.%s.requests.processing", "Processing
Requests"),
+ METRIC_REQUESTS_TIMEOUT("dubbo.%s.requests.timeout.total", "Total Timeout
Failed Requests"),
+ METRIC_REQUESTS_LIMIT("dubbo.%s.requests.limit.total", "Total Limit Failed
Requests"),
+ METRIC_REQUESTS_FAILED("dubbo.%s.requests.unknown.failed.total", "Unknown
Failed Requests"),
+ METRIC_REQUESTS_TOTAL_FAILED("dubbo.%s.requests.failed.total", "Total
Failed Requests"),
-
PROVIDER_METRIC_REQUESTS_TOTAL_AGG("dubbo.provider.requests.total.aggregate",
"Aggregated Total Requests"),
-
PROVIDER_METRIC_REQUESTS_SUCCEED_AGG("dubbo.provider.requests.succeed.aggregate",
"Aggregated Succeed Requests"),
-
PROVIDER_METRIC_REQUESTS_FAILED_AGG("dubbo.provider.requests.failed.aggregate",
"Aggregated Failed Requests"),
-
PROVIDER_METRIC_REQUESTS_BUSINESS_FAILED_AGG("dubbo.provider.requests.business.failed.aggregate",
"Aggregated Business Failed Requests"),
-
PROVIDER_METRIC_REQUESTS_TIMEOUT_AGG("dubbo.provider.requests.timeout.failed.aggregate",
"Aggregated timeout Failed Requests"),
-
PROVIDER_METRIC_REQUESTS_LIMIT_AGG("dubbo.provider.requests.limit.aggregate",
"Aggregated limit Requests"),
-
PROVIDER_METRIC_REQUESTS_TOTAL_FAILED_AGG("dubbo.provider.requests.failed.total.aggregate",
"Aggregated failed total Requests"),
+ METRIC_REQUESTS_TOTAL_AGG("dubbo.%s.requests.total.aggregate", "Aggregated
Total Requests"),
+ METRIC_REQUESTS_SUCCEED_AGG("dubbo.%s.requests.succeed.aggregate",
"Aggregated Succeed Requests"),
+ METRIC_REQUESTS_FAILED_AGG("dubbo.%s.requests.failed.aggregate",
"Aggregated Failed Requests"),
+
METRIC_REQUESTS_BUSINESS_FAILED_AGG("dubbo.%s.requests.business.failed.aggregate",
"Aggregated Business Failed Requests"),
+ METRIC_REQUESTS_TIMEOUT_AGG("dubbo.%s.requests.timeout.failed.aggregate",
"Aggregated timeout Failed Requests"),
+ METRIC_REQUESTS_LIMIT_AGG("dubbo.%s.requests.limit.aggregate", "Aggregated
limit Requests"),
+
METRIC_REQUESTS_TOTAL_FAILED_AGG("dubbo.%s.requests.failed.total.aggregate",
"Aggregated failed total Requests"),
- PROVIDER_METRIC_QPS("dubbo.provider.qps.seconds", "Query Per Seconds"),
- PROVIDER_METRIC_RT_LAST("dubbo.provider.rt.seconds.last", "Last Response
Time"),
- PROVIDER_METRIC_RT_MIN("dubbo.provider.rt.seconds.min", "Min Response
Time"),
- PROVIDER_METRIC_RT_MAX("dubbo.provider.rt.seconds.max", "Max Response
Time"),
- PROVIDER_METRIC_RT_SUM("dubbo.provider.rt.seconds.sum", "Sum Response
Time"),
- PROVIDER_METRIC_RT_AVG("dubbo.provider.rt.seconds.avg", "Average Response
Time"),
- PROVIDER_METRIC_RT_P99("dubbo.provider.rt.seconds.p99", "Response Time
P99"),
- PROVIDER_METRIC_RT_P95("dubbo.provider.rt.seconds.p95", "Response Time
P95"),
+ METRIC_QPS("dubbo.%s.qps.seconds", "Query Per Seconds"),
+ METRIC_RT_LAST("dubbo.%s.rt.seconds.last", "Last Response Time"),
+ METRIC_RT_MIN("dubbo.%s.rt.seconds.min", "Min Response Time"),
+ METRIC_RT_MAX("dubbo.%s.rt.seconds.max", "Max Response Time"),
+ METRIC_RT_SUM("dubbo.%s.rt.seconds.sum", "Sum Response Time"),
+ METRIC_RT_AVG("dubbo.%s.rt.seconds.avg", "Average Response Time"),
+ METRIC_RT_P99("dubbo.%s.rt.seconds.p99", "Response Time P99"),
+ METRIC_RT_P95("dubbo.%s.rt.seconds.p95", "Response Time P95"),
GENERIC_METRIC_REQUESTS("dubbo.%s.requests.total", "Total %s Requests"),
GENERIC_METRIC_REQUESTS_SUCCEED("dubbo.%s.requests.succeed.total",
"Succeed %s Requests"),
@@ -65,10 +65,7 @@ public enum MetricsKey {
THREAD_POOL_MAX_SIZE("dubbo.thread.pool.max.size","Thread Pool Max Size"),
THREAD_POOL_ACTIVE_SIZE("dubbo.thread.pool.active.size","Thread Pool
Active Size"),
THREAD_POOL_THREAD_COUNT("dubbo.thread.pool.thread.count","Thread Pool
Thread Count"),
- THREAD_POOL_QUEUE_SIZE("dubbo.thread.pool.queue.size","Thread Pool Queue
Size"),
-
- // consumer metrics key
- ;
+ THREAD_POOL_QUEUE_SIZE("dubbo.thread.pool.queue.size","Thread Pool Queue
Size");
private final String name;
private final String description;
@@ -76,6 +73,9 @@ public enum MetricsKey {
public final String getName() {
return this.name;
}
+ public final String getNameByType(String type) {
+ return String.format(name, type);
+ }
public final String getDescription() {
return this.description;
diff --git
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/sample/GaugeMetricSample.java
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/sample/GaugeMetricSample.java
index d69e2e3eb2..9277ab1d1e 100644
---
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/sample/GaugeMetricSample.java
+++
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/sample/GaugeMetricSample.java
@@ -35,6 +35,11 @@ public class GaugeMetricSample extends MetricSample {
this.supplier = supplier;
}
+ public GaugeMetricSample(String name, String description, Map<String,
String> tags, MetricsCategory category, Supplier<Number> supplier) {
+ super(name, description, tags, Type.GAUGE, category);
+ this.supplier = supplier;
+ }
+
public GaugeMetricSample(String name, String description, Map<String,
String> tags, MetricsCategory category, String baseUnit, Supplier<Number>
supplier) {
super(name, description, tags, Type.GAUGE, category, baseUnit);
this.supplier = supplier;
diff --git
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/sample/MetricSample.java
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/sample/MetricSample.java
index d2420b3156..826ade67dd 100644
---
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/sample/MetricSample.java
+++
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/model/sample/MetricSample.java
@@ -121,6 +121,7 @@ public class MetricSample {
'}';
}
+
public enum Type {
COUNTER,
GAUGE,
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollector.java
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollector.java
index 963d3ddca4..a929194922 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollector.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollector.java
@@ -17,6 +17,11 @@
package org.apache.dubbo.metrics.collector;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
import org.apache.dubbo.common.utils.ConcurrentHashMapUtils;
import org.apache.dubbo.config.MetricsConfig;
import org.apache.dubbo.config.context.ConfigManager;
@@ -33,11 +38,6 @@ import
org.apache.dubbo.metrics.model.sample.GaugeMetricSample;
import org.apache.dubbo.metrics.model.sample.MetricSample;
import org.apache.dubbo.rpc.model.ApplicationModel;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
import static org.apache.dubbo.metrics.model.MetricsCategory.QPS;
import static org.apache.dubbo.metrics.model.MetricsCategory.REQUESTS;
import static org.apache.dubbo.metrics.model.MetricsCategory.RT;
@@ -102,7 +102,7 @@ public class AggregateMetricsCollector implements
MetricsCollector, MetricsListe
private void onRequestEvent(RequestEvent event) {
MethodMetric metric = (MethodMetric) event.getSource();
- MetricsEvent.Type type = event.getType();
+ RequestEvent.Type type = event.getType();
TimeWindowCounter counter = null;
switch (type) {
case TOTAL:
@@ -152,23 +152,39 @@ public class AggregateMetricsCollector implements
MetricsCollector, MetricsListe
}
private void collectRequests(List<MetricSample> list) {
- totalRequests.forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.PROVIDER_METRIC_REQUESTS_TOTAL_AGG, k.getTags(),
REQUESTS, v::get)));
- succeedRequests.forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.PROVIDER_METRIC_REQUESTS_SUCCEED_AGG, k.getTags(),
REQUESTS, v::get)));
- unknownFailedRequests.forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.PROVIDER_METRIC_REQUESTS_FAILED_AGG, k.getTags(),
REQUESTS, v::get)));
- businessFailedRequests.forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.PROVIDER_METRIC_REQUESTS_BUSINESS_FAILED_AGG,
k.getTags(), REQUESTS, v::get)));
- timeoutRequests.forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.PROVIDER_METRIC_REQUESTS_TIMEOUT_AGG, k.getTags(),
REQUESTS, v::get)));
- limitRequests.forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.PROVIDER_METRIC_REQUESTS_LIMIT_AGG, k.getTags(),
REQUESTS, v::get)));
- totalFailedRequests.forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.PROVIDER_METRIC_REQUESTS_TOTAL_FAILED_AGG,
k.getTags(), REQUESTS, v::get)));
+ totalRequests.forEach((k, v) ->
+
list.add(getGaugeMetricSample(MetricsKey.METRIC_REQUESTS_TOTAL_AGG, k, v)));
+ succeedRequests.forEach((k, v) ->
+
list.add(getGaugeMetricSample(MetricsKey.METRIC_REQUESTS_SUCCEED_AGG, k, v)));
+ unknownFailedRequests.forEach((k, v) ->
+
list.add(getGaugeMetricSample(MetricsKey.METRIC_REQUESTS_FAILED_AGG, k, v)));
+ businessFailedRequests.forEach((k, v) ->
+
list.add(getGaugeMetricSample(MetricsKey.METRIC_REQUESTS_BUSINESS_FAILED_AGG,
k, v)));
+ timeoutRequests.forEach((k, v) ->
+
list.add(getGaugeMetricSample(MetricsKey.METRIC_REQUESTS_TIMEOUT_AGG, k, v)));
+ limitRequests.forEach((k, v) ->
+
list.add(getGaugeMetricSample(MetricsKey.METRIC_REQUESTS_LIMIT_AGG, k, v)));
+ totalFailedRequests.forEach((k, v) ->
+
list.add(getGaugeMetricSample(MetricsKey.METRIC_REQUESTS_TOTAL_FAILED_AGG, k,
v)));
+
+ }
+
+ private GaugeMetricSample getGaugeMetricSample(MetricsKey
metricRequestsTotalAgg, MethodMetric k, TimeWindowCounter v) {
+ return new
GaugeMetricSample(metricRequestsTotalAgg.getNameByType(k.getSide()),
+ metricRequestsTotalAgg.getDescription(), k.getTags(), REQUESTS,
v::get);
}
private void collectQPS(List<MetricSample> list) {
- qps.forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.PROVIDER_METRIC_QPS, k.getTags(), QPS, () ->
v.get() / v.bucketLivedSeconds())));
+ qps.forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.METRIC_QPS.getNameByType(k.getSide()),
+ MetricsKey.METRIC_QPS.getDescription(), k.getTags(), QPS, () ->
v.get() / v.bucketLivedSeconds())));
}
private void collectRT(List<MetricSample> list) {
rt.forEach((k, v) -> {
- list.add(new GaugeMetricSample(MetricsKey.PROVIDER_METRIC_RT_P99,
k.getTags(), RT, () -> v.quantile(0.99)));
- list.add(new GaugeMetricSample(MetricsKey.PROVIDER_METRIC_RT_P95,
k.getTags(), RT, () -> v.quantile(0.95)));
+ list.add(new
GaugeMetricSample(MetricsKey.METRIC_RT_P99.getNameByType(k.getSide()),
+ MetricsKey.METRIC_RT_P99.getDescription(), k.getTags(), RT, ()
-> v.quantile(0.99)));
+ list.add(new
GaugeMetricSample(MetricsKey.METRIC_RT_P95.getNameByType(k.getSide()),
+ MetricsKey.METRIC_RT_P95.getDescription(), k.getTags(), RT, ()
-> v.quantile(0.95)));
});
}
}
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/MethodMetricsSampler.java
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/MethodMetricsSampler.java
index b915e80792..82f0693821 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/MethodMetricsSampler.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/collector/sample/MethodMetricsSampler.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.metrics.event.RTEvent;
import org.apache.dubbo.metrics.event.RequestEvent;
import org.apache.dubbo.metrics.model.MethodMetric;
import org.apache.dubbo.metrics.model.Metric;
+import org.apache.dubbo.metrics.model.MetricsCategory;
import org.apache.dubbo.metrics.model.MetricsKey;
import org.apache.dubbo.metrics.model.sample.GaugeMetricSample;
import org.apache.dubbo.metrics.model.sample.MetricSample;
@@ -31,11 +32,12 @@ import org.apache.dubbo.rpc.Invocation;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Supplier;
import static org.apache.dubbo.metrics.model.MetricsCategory.REQUESTS;
import static org.apache.dubbo.metrics.model.MetricsCategory.RT;
-public class MethodMetricsSampler extends
SimpleMetricsCountSampler<Invocation, MetricsEvent.Type, MethodMetric>{
+public class MethodMetricsSampler extends
SimpleMetricsCountSampler<Invocation, MetricsEvent.Type, MethodMetric> {
private DefaultMetricsCollector collector;
@@ -45,14 +47,14 @@ public class MethodMetricsSampler extends
SimpleMetricsCountSampler<Invocation,
@Override
protected void countConfigure(
- MetricsCountSampleConfigurer<Invocation, MetricsEvent.Type,
MethodMetric> sampleConfigure) {
+ MetricsCountSampleConfigurer<Invocation, MetricsEvent.Type,
MethodMetric> sampleConfigure) {
sampleConfigure.configureMetrics(configure -> new
MethodMetric(collector.getApplicationName(), configure.getSource()));
sampleConfigure.configureEventHandler(configure ->
collector.getEventMulticaster().publishEvent(new
RequestEvent(configure.getMetric(), configure.getMetricName())));
}
@Override
public void rtConfigure(
- MetricsCountSampleConfigurer<Invocation, MetricsEvent.Type,
MethodMetric> sampleConfigure) {
+ MetricsCountSampleConfigurer<Invocation, MetricsEvent.Type,
MethodMetric> sampleConfigure) {
sampleConfigure.configureMetrics(configure -> new
MethodMetric(collector.getApplicationName(), configure.getSource()));
sampleConfigure.configureEventHandler(configure ->
collector.getEventMulticaster().publishEvent(new RTEvent(configure.getMetric(),
configure.getRt())));
}
@@ -62,41 +64,49 @@ public class MethodMetricsSampler extends
SimpleMetricsCountSampler<Invocation,
List<MetricSample> metricSamples = new ArrayList<>();
collect(metricSamples);
-
collectRT(metricSamples);
return metricSamples;
}
private void collect(List<MetricSample> list) {
- count(list, MetricsEvent.Type.TOTAL,
MetricsKey.PROVIDER_METRIC_REQUESTS);
- count(list, MetricsEvent.Type.SUCCEED,
MetricsKey.PROVIDER_METRIC_REQUESTS_SUCCEED);
- count(list, MetricsEvent.Type.UNKNOWN_FAILED,
MetricsKey.PROVIDER_METRIC_REQUESTS_FAILED);
- count(list, MetricsEvent.Type.PROCESSING,
MetricsKey.PROVIDER_METRIC_REQUESTS_PROCESSING);
- count(list, MetricsEvent.Type.BUSINESS_FAILED,
MetricsKey.PROVIDER_METRIC_REQUEST_BUSINESS_FAILED);
- count(list, MetricsEvent.Type.REQUEST_TIMEOUT,
MetricsKey.PROVIDER_METRIC_REQUESTS_TIMEOUT);
- count(list, MetricsEvent.Type.REQUEST_LIMIT,
MetricsKey.PROVIDER_METRIC_REQUESTS_LIMIT);
- count(list, MetricsEvent.Type.TOTAL_FAILED,
MetricsKey.PROVIDER_METRIC_REQUESTS_TOTAL_FAILED);
+ count(list, MetricsEvent.Type.TOTAL, MetricsKey.METRIC_REQUESTS);
+ count(list, MetricsEvent.Type.SUCCEED,
MetricsKey.METRIC_REQUESTS_SUCCEED);
+ count(list, MetricsEvent.Type.UNKNOWN_FAILED,
MetricsKey.METRIC_REQUESTS_FAILED);
+ count(list, MetricsEvent.Type.PROCESSING,
MetricsKey.METRIC_REQUESTS_PROCESSING);
+ count(list, MetricsEvent.Type.BUSINESS_FAILED,
MetricsKey.METRIC_REQUEST_BUSINESS_FAILED);
+ count(list, MetricsEvent.Type.REQUEST_TIMEOUT,
MetricsKey.METRIC_REQUESTS_TIMEOUT);
+ count(list, MetricsEvent.Type.REQUEST_LIMIT,
MetricsKey.METRIC_REQUESTS_LIMIT);
+ count(list, MetricsEvent.Type.TOTAL_FAILED,
MetricsKey.METRIC_REQUESTS_TOTAL_FAILED);
}
private void collectRT(List<MetricSample> list) {
- this.getLastRT().forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.PROVIDER_METRIC_RT_LAST, k.getTags(), RT,
v::get)));
- this.getMinRT().forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.PROVIDER_METRIC_RT_MIN, k.getTags(), RT, v::get)));
- this.getMaxRT().forEach((k, v) -> list.add(new
GaugeMetricSample(MetricsKey.PROVIDER_METRIC_RT_MAX, k.getTags(), RT, v::get)));
+ this.getLastRT().forEach((k, v) ->
+ list.add(getGaugeMetricSample(MetricsKey.METRIC_RT_LAST, k, RT,
v::get)
+ ));
+ this.getMinRT().forEach((k, v) ->
+ list.add(getGaugeMetricSample(MetricsKey.METRIC_RT_MIN, k, RT,
v::get)));
+ this.getMaxRT().forEach((k, v) ->
+ list.add(getGaugeMetricSample(MetricsKey.METRIC_RT_MAX, k, RT,
v::get)));
this.getTotalRT().forEach((k, v) -> {
- list.add(new GaugeMetricSample(MetricsKey.PROVIDER_METRIC_RT_SUM,
k.getTags(), RT, v::get));
-
+ list.add(getGaugeMetricSample(MetricsKey.METRIC_RT_SUM, k, RT,
v::get));
AtomicLong avg = this.getAvgRT().get(k);
AtomicLong count = this.getRtCount().get(k);
avg.set(v.get() / count.get());
- list.add(new GaugeMetricSample(MetricsKey.PROVIDER_METRIC_RT_AVG,
k.getTags(), RT, avg::get));
+ list.add(getGaugeMetricSample(MetricsKey.METRIC_RT_AVG, k, RT,
avg::get));
});
}
+ private GaugeMetricSample getGaugeMetricSample(MetricsKey metricsKey,
MethodMetric methodMetric,
+ MetricsCategory
metricsCategory, Supplier<Number> get) {
+ return new
GaugeMetricSample(metricsKey.getNameByType(methodMetric.getSide()),
metricsKey.getDescription(),
+ methodMetric.getTags(), metricsCategory, get);
+ }
+
private <T extends Metric> void count(List<MetricSample> list,
MetricsEvent.Type eventType, MetricsKey metricsKey) {
- getCount(eventType).filter(e->!e.isEmpty())
- .ifPresent(map -> map.forEach((k, v) -> list.add(new
GaugeMetricSample(metricsKey, k.getTags(),
- REQUESTS, v::get))));
+ getCount(eventType).filter(e -> !e.isEmpty())
+ .ifPresent(map -> map.forEach((k, v) ->
+ list.add(getGaugeMetricSample(metricsKey, k, REQUESTS,
v::get))));
}
}
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/filter/MetricsFilter.java
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/filter/MetricsFilter.java
index 2f428dc016..51c89a40ae 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/filter/MetricsFilter.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/metrics/filter/MetricsFilter.java
@@ -27,9 +27,10 @@ import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.ScopeModelAware;
+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;
import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER;
-@Activate(group = PROVIDER, order = -1)
+@Activate(group = {CONSUMER, PROVIDER}, order = -1)
public class MetricsFilter implements Filter, BaseFilter.Listener,
ScopeModelAware {
private DefaultMetricsCollector collector = null;
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/TestMetricsInvoker.java
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/TestMetricsInvoker.java
new file mode 100644
index 0000000000..a9edf9507a
--- /dev/null
+++
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/TestMetricsInvoker.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.metrics;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.rpc.Invocation;
+import org.apache.dubbo.rpc.Invoker;
+import org.apache.dubbo.rpc.Result;
+import org.apache.dubbo.rpc.RpcException;
+
+public class TestMetricsInvoker implements Invoker {
+
+ private String side;
+
+ public TestMetricsInvoker(String side) {
+ this.side = side;
+ }
+
+ @Override
+ public Class getInterface() {
+ return null;
+ }
+
+ @Override
+ public Result invoke(Invocation invocation) throws RpcException {
+ return null;
+ }
+
+ @Override
+ public URL getUrl() {
+ return
URL.valueOf("test://test:11/test?accesslog=true&group=dubbo&version=1.1&side="+side);
+ }
+
+ @Override
+ public boolean isAvailable() {
+ return true;
+ }
+
+ @Override
+ public void destroy() {
+
+ }
+}
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollectorTest.java
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollectorTest.java
index 6baaa3af4e..c12e3ef335 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollectorTest.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/collector/AggregateMetricsCollectorTest.java
@@ -17,14 +17,18 @@
package org.apache.dubbo.metrics.collector;
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.MetricsConfig;
import org.apache.dubbo.config.nested.AggregationConfig;
+import org.apache.dubbo.metrics.TestMetricsInvoker;
import org.apache.dubbo.metrics.collector.sample.MethodMetricsSampler;
import org.apache.dubbo.metrics.event.MetricsEvent;
import org.apache.dubbo.metrics.model.MetricsKey;
import org.apache.dubbo.metrics.model.sample.GaugeMetricSample;
import org.apache.dubbo.metrics.model.sample.MetricSample;
+import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcInvocation;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.junit.jupiter.api.AfterEach;
@@ -53,6 +57,7 @@ class AggregateMetricsCollectorTest {
private String group;
private String version;
private RpcInvocation invocation;
+ private String side;
@BeforeEach
public void setup() {
@@ -81,6 +86,10 @@ class AggregateMetricsCollectorTest {
invocation.setTargetServiceUniqueName(group + "/" + interfaceName +
":" + version);
invocation.setAttachment(GROUP_KEY, group);
invocation.setAttachment(VERSION_KEY, version);
+ side = CommonConstants.CONSUMER;
+ invocation.setInvoker(new TestMetricsInvoker(side));
+
RpcContext.getServiceContext().setUrl(URL.valueOf("test://test:11/test?accesslog=true&group=dubbo&version=1.1&side="
+ side));
+
}
@AfterEach
@@ -117,12 +126,12 @@ class AggregateMetricsCollectorTest {
return number.longValue();
}));
-
Assertions.assertEquals(sampleMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_TOTAL_AGG.getName()),
1L);
-
Assertions.assertEquals(sampleMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_SUCCEED_AGG.getName()),
1L);
-
Assertions.assertEquals(sampleMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_FAILED_AGG.getName()),
1L);
-
Assertions.assertEquals(sampleMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_BUSINESS_FAILED_AGG.getName()),
1L);
+
Assertions.assertEquals(sampleMap.get(MetricsKey.METRIC_REQUESTS_TOTAL_AGG.getNameByType(side)),
1L);
+
Assertions.assertEquals(sampleMap.get(MetricsKey.METRIC_REQUESTS_SUCCEED_AGG.getNameByType(side)),
1L);
+
Assertions.assertEquals(sampleMap.get(MetricsKey.METRIC_REQUESTS_FAILED_AGG.getNameByType(side)),
1L);
+
Assertions.assertEquals(sampleMap.get(MetricsKey.METRIC_REQUESTS_BUSINESS_FAILED_AGG.getNameByType(side)),
1L);
-
Assertions.assertTrue(sampleMap.containsKey(MetricsKey.PROVIDER_METRIC_QPS.getName()));
+
Assertions.assertTrue(sampleMap.containsKey(MetricsKey.METRIC_QPS.getNameByType(side)));
}
@Test
@@ -150,7 +159,7 @@ class AggregateMetricsCollectorTest {
return number.longValue();
}));
-
Assertions.assertTrue(sampleMap.containsKey(MetricsKey.PROVIDER_METRIC_RT_P99.getName()));
-
Assertions.assertTrue(sampleMap.containsKey(MetricsKey.PROVIDER_METRIC_RT_P95.getName()));
+
Assertions.assertTrue(sampleMap.containsKey(MetricsKey.METRIC_RT_P99.getNameByType(side)));
+
Assertions.assertTrue(sampleMap.containsKey(MetricsKey.METRIC_RT_P95.getNameByType(side)));
}
}
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java
index 88b2177313..ea67b53677 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/filter/MetricsFilterTest.java
@@ -23,17 +23,15 @@ import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
-import org.apache.dubbo.common.constants.MetricsConstants;
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.metrics.TestMetricsInvoker;
import org.apache.dubbo.metrics.collector.DefaultMetricsCollector;
import org.apache.dubbo.metrics.model.MetricsKey;
import org.apache.dubbo.metrics.model.sample.GaugeMetricSample;
import org.apache.dubbo.metrics.model.sample.MetricSample;
-import org.apache.dubbo.rpc.AppResponse;
-import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.Result;
-import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.rpc.RpcInvocation;
+import org.apache.dubbo.rpc.*;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
@@ -61,11 +59,14 @@ class MetricsFilterTest {
private static final String METHOD_NAME = "mockMethod";
private static final String GROUP = "mockGroup";
private static final String VERSION = "1.0.0";
+ private String side;
+
@BeforeEach
public void setup() {
ApplicationConfig config = new ApplicationConfig();
config.setName("MockMetrics");
+ //RpcContext.getContext().setAttachment("MockMetrics","MockMetrics");
applicationModel = ApplicationModel.defaultModel();
applicationModel.getApplicationConfigManager().setApplication(config);
@@ -75,6 +76,10 @@ class MetricsFilterTest {
collector =
applicationModel.getBeanFactory().getOrRegisterBean(DefaultMetricsCollector.class);
filter.setApplicationModel(applicationModel);
+ side = CommonConstants.CONSUMER;
+ invocation.setInvoker(new TestMetricsInvoker(side));
+
RpcContext.getServiceContext().setUrl(URL.valueOf("test://test:11/test?accesslog=true&group=dubbo&version=1.1&side="
+ side));
+
}
@AfterEach
@@ -105,10 +110,10 @@ class MetricsFilterTest {
}
Map<String, MetricSample> metricsMap = getMetricsMap();
-
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.PROVIDER_METRIC_REQUESTS_FAILED.getName()));
-
Assertions.assertFalse(metricsMap.containsKey(MetricsKey.PROVIDER_METRIC_REQUESTS_SUCCEED.getName()));
+
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_FAILED.getNameByType(side)));
+
Assertions.assertFalse(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side)));
- MetricSample sample =
metricsMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_FAILED.getName());
+ MetricSample sample =
metricsMap.get(MetricsKey.METRIC_REQUESTS_FAILED.getNameByType(side));
Map<String, String> tags = sample.getTags();
Assertions.assertEquals(tags.get(TAG_INTERFACE_KEY), INTERFACE_NAME);
@@ -133,10 +138,10 @@ class MetricsFilterTest {
}
Map<String, MetricSample> metricsMap = getMetricsMap();
-
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.PROVIDER_METRIC_REQUEST_BUSINESS_FAILED.getName()));
-
Assertions.assertFalse(metricsMap.containsKey(MetricsKey.PROVIDER_METRIC_REQUESTS_SUCCEED.getName()));
+
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUEST_BUSINESS_FAILED.getNameByType(side)));
+
Assertions.assertFalse(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side)));
- MetricSample sample =
metricsMap.get(MetricsKey.PROVIDER_METRIC_REQUEST_BUSINESS_FAILED.getName());
+ MetricSample sample =
metricsMap.get(MetricsKey.METRIC_REQUEST_BUSINESS_FAILED.getNameByType(side));
Map<String, String> tags = sample.getTags();
@@ -165,13 +170,13 @@ class MetricsFilterTest {
}
}
Map<String, MetricSample> metricsMap = getMetricsMap();
-
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.PROVIDER_METRIC_REQUESTS_TIMEOUT.getName()));
-
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.PROVIDER_METRIC_REQUESTS_TOTAL_FAILED.getName()));
+
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_TIMEOUT.getNameByType(side)));
+
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_TOTAL_FAILED.getNameByType(side)));
- MetricSample timeoutSample =
metricsMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_TIMEOUT.getName());
+ MetricSample timeoutSample =
metricsMap.get(MetricsKey.METRIC_REQUESTS_TIMEOUT.getNameByType(side));
Assertions.assertSame(((GaugeMetricSample)
timeoutSample).getSupplier().get().longValue(), count);
- GaugeMetricSample failedSample =
(GaugeMetricSample)metricsMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_TOTAL_FAILED.getName());
+ GaugeMetricSample failedSample = (GaugeMetricSample)
metricsMap.get(MetricsKey.METRIC_REQUESTS_TOTAL_FAILED.getNameByType(side));
Assertions.assertSame(failedSample.getSupplier().get().longValue(),
count);
}
@@ -193,9 +198,9 @@ class MetricsFilterTest {
}
}
Map<String, MetricSample> metricsMap = getMetricsMap();
-
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.PROVIDER_METRIC_REQUESTS_LIMIT.getName()));
+
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_LIMIT.getNameByType(side)));
- MetricSample sample =
metricsMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_LIMIT.getName());
+ MetricSample sample =
metricsMap.get(MetricsKey.METRIC_REQUESTS_LIMIT.getNameByType(side));
Assertions.assertSame(((GaugeMetricSample)
sample).getSupplier().get().longValue(), count);
}
@@ -211,10 +216,10 @@ class MetricsFilterTest {
filter.onResponse(result, invoker, invocation);
Map<String, MetricSample> metricsMap = getMetricsMap();
-
Assertions.assertFalse(metricsMap.containsKey(MetricsKey.PROVIDER_METRIC_REQUEST_BUSINESS_FAILED.getName()));
-
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.PROVIDER_METRIC_REQUESTS_SUCCEED.getName()));
+
Assertions.assertFalse(metricsMap.containsKey(MetricsKey.METRIC_REQUEST_BUSINESS_FAILED.getNameByType(side)));
+
Assertions.assertTrue(metricsMap.containsKey(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side)));
- MetricSample sample =
metricsMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_SUCCEED.getName());
+ MetricSample sample =
metricsMap.get(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side));
Map<String, String> tags = sample.getTags();
Assertions.assertEquals(tags.get(TAG_INTERFACE_KEY), INTERFACE_NAME);
@@ -237,7 +242,7 @@ class MetricsFilterTest {
Map<String, MetricSample> metricsMap = getMetricsMap();
- MetricSample sample =
metricsMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_SUCCEED.getName());
+ MetricSample sample =
metricsMap.get(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side));
Map<String, String> tags = sample.getTags();
Assertions.assertEquals(tags.get(TAG_INTERFACE_KEY), INTERFACE_NAME);
@@ -260,7 +265,7 @@ class MetricsFilterTest {
Map<String, MetricSample> metricsMap = getMetricsMap();
- MetricSample sample =
metricsMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_SUCCEED.getName());
+ MetricSample sample =
metricsMap.get(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side));
Map<String, String> tags = sample.getTags();
Assertions.assertEquals(tags.get(TAG_INTERFACE_KEY), INTERFACE_NAME);
@@ -283,7 +288,7 @@ class MetricsFilterTest {
Map<String, MetricSample> metricsMap = getMetricsMap();
- MetricSample sample =
metricsMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_SUCCEED.getName());
+ MetricSample sample =
metricsMap.get(MetricsKey.METRIC_REQUESTS_SUCCEED.getNameByType(side));
Map<String, String> tags = sample.getTags();
Assertions.assertEquals(tags.get(TAG_INTERFACE_KEY), INTERFACE_NAME);
@@ -310,7 +315,7 @@ class MetricsFilterTest {
Map<String, MetricSample> metricsMap = getMetricsMap();
- MetricSample sample =
metricsMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_PROCESSING.getName());
+ MetricSample sample =
metricsMap.get(MetricsKey.METRIC_REQUESTS_PROCESSING.getNameByType(side));
Map<String, String> tags = sample.getTags();
Assertions.assertEquals(tags.get(TAG_INTERFACE_KEY), INTERFACE_NAME);
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/collector/DefaultMetricsCollectorTest.java
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/collector/DefaultMetricsCollectorTest.java
index 8e07144215..1dad4e792d 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/collector/DefaultMetricsCollectorTest.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/collector/DefaultMetricsCollectorTest.java
@@ -17,7 +17,10 @@
package org.apache.dubbo.metrics.metrics.collector;
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.metrics.TestMetricsInvoker;
import org.apache.dubbo.metrics.collector.DefaultMetricsCollector;
import org.apache.dubbo.metrics.collector.sample.MethodMetricsSampler;
import org.apache.dubbo.metrics.event.MetricsEvent;
@@ -27,6 +30,7 @@ import org.apache.dubbo.metrics.listener.MetricsListener;
import org.apache.dubbo.metrics.model.MetricsKey;
import org.apache.dubbo.metrics.model.sample.GaugeMetricSample;
import org.apache.dubbo.metrics.model.sample.MetricSample;
+import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcInvocation;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
@@ -35,7 +39,6 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;
@@ -57,7 +60,7 @@ class DefaultMetricsCollectorTest {
private String group;
private String version;
private RpcInvocation invocation;
- public static final String DUBBO_THREAD_METRIC_MARK =
"dubbo.thread.pool";
+ private String side;
@BeforeEach
public void setup() {
@@ -77,6 +80,11 @@ class DefaultMetricsCollectorTest {
invocation.setTargetServiceUniqueName(group + "/" + interfaceName +
":" + version);
invocation.setAttachment(GROUP_KEY, group);
invocation.setAttachment(VERSION_KEY, version);
+ side = CommonConstants.CONSUMER;
+
+ invocation.setInvoker(new TestMetricsInvoker(side));
+
RpcContext.getServiceContext().setUrl(URL.valueOf("test://test:11/test?accesslog=true&group=dubbo&version=1.1&side="+side));
+
}
@AfterEach
@@ -99,9 +107,6 @@ class DefaultMetricsCollectorTest {
List<MetricSample> samples = collector.collect();
for (MetricSample sample : samples) {
- if (sample.getName().contains(DUBBO_THREAD_METRIC_MARK)) {
- continue;
- }
Assertions.assertTrue(sample instanceof GaugeMetricSample);
GaugeMetricSample gaugeSample = (GaugeMetricSample) sample;
Map<String, String> tags = gaugeSample.getTags();
@@ -116,19 +121,12 @@ class DefaultMetricsCollectorTest {
methodMetricsCountSampler.dec(invocation,MetricsEvent.Type.PROCESSING);
samples = collector.collect();
- List<MetricSample> samples1 = new ArrayList<>();
- for (MetricSample sample : samples) {
- if (sample.getName().contains(DUBBO_THREAD_METRIC_MARK)) {
- continue;
- }
- samples1.add(sample);
- }
- Map<String, Long> sampleMap =
samples1.stream().collect(Collectors.toMap(MetricSample::getName, k -> {
+ Map<String, Long> sampleMap =
samples.stream().collect(Collectors.toMap(MetricSample::getName, k -> {
Number number = ((GaugeMetricSample) k).getSupplier().get();
return number.longValue();
}));
-
Assertions.assertEquals(sampleMap.get(MetricsKey.PROVIDER_METRIC_REQUESTS_PROCESSING.getName()),
0L);
+
Assertions.assertEquals(sampleMap.get(MetricsKey.METRIC_REQUESTS_PROCESSING.getNameByType(side)),
0L);
}
@Test
@@ -145,9 +143,6 @@ class DefaultMetricsCollectorTest {
List<MetricSample> samples = collector.collect();
for (MetricSample sample : samples) {
- if (sample.getName().contains(DUBBO_THREAD_METRIC_MARK)) {
- continue;
- }
Map<String, String> tags = sample.getTags();
Assertions.assertEquals(tags.get(TAG_INTERFACE_KEY),
interfaceName);
@@ -155,23 +150,17 @@ class DefaultMetricsCollectorTest {
Assertions.assertEquals(tags.get(TAG_GROUP_KEY), group);
Assertions.assertEquals(tags.get(TAG_VERSION_KEY), version);
}
- List<MetricSample> samples1 = new ArrayList<>();
- for (MetricSample sample : samples) {
- if (sample.getName().contains(DUBBO_THREAD_METRIC_MARK)) {
- continue;
- }
- samples1.add(sample);
- }
- Map<String, Long> sampleMap =
samples1.stream().collect(Collectors.toMap(MetricSample::getName, k -> {
+
+ Map<String, Long> sampleMap =
samples.stream().collect(Collectors.toMap(MetricSample::getName, k -> {
Number number = ((GaugeMetricSample) k).getSupplier().get();
return number.longValue();
}));
-
Assertions.assertEquals(sampleMap.get(MetricsKey.PROVIDER_METRIC_RT_LAST.getName()),
0L);
-
Assertions.assertEquals(sampleMap.get(MetricsKey.PROVIDER_METRIC_RT_MIN.getName()),
0L);
-
Assertions.assertEquals(sampleMap.get(MetricsKey.PROVIDER_METRIC_RT_MAX.getName()),
10L);
-
Assertions.assertEquals(sampleMap.get(MetricsKey.PROVIDER_METRIC_RT_AVG.getName()),
5L);
-
Assertions.assertEquals(sampleMap.get(MetricsKey.PROVIDER_METRIC_RT_SUM.getName()),
10L);
+
Assertions.assertEquals(sampleMap.get(MetricsKey.METRIC_RT_LAST.getNameByType(side)),
0L);
+
Assertions.assertEquals(sampleMap.get(MetricsKey.METRIC_RT_MIN.getNameByType(side)),
0L);
+
Assertions.assertEquals(sampleMap.get(MetricsKey.METRIC_RT_MAX.getNameByType(side)),
10L);
+
Assertions.assertEquals(sampleMap.get(MetricsKey.METRIC_RT_AVG.getNameByType(side)),
5L);
+
Assertions.assertEquals(sampleMap.get(MetricsKey.METRIC_RT_SUM.getNameByType(side)),
10L);
}
@Test
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/model/MethodMetricTest.java
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/model/MethodMetricTest.java
index c554c09d9b..6266a6860e 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/model/MethodMetricTest.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/model/MethodMetricTest.java
@@ -17,7 +17,9 @@
package org.apache.dubbo.metrics.metrics.model;
+import org.apache.dubbo.common.URL;
import org.apache.dubbo.metrics.model.MethodMetric;
+import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcInvocation;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
@@ -53,9 +55,11 @@ class MethodMetricTest {
group = "mockGroup";
version = "1.0.0";
invocation = new RpcInvocation(methodName, interfaceName,
"serviceKey", null, null);
+
invocation.setTargetServiceUniqueName(group + "/" + interfaceName +
":" + version);
invocation.setAttachment(GROUP_KEY, group);
invocation.setAttachment(VERSION_KEY, version);
+
RpcContext.getServiceContext().setUrl(URL.valueOf("test://test:11/test?accesslog=true&group=dubbo&version=1.1&side=consumer"));
}
@Test