From 5381221cefe9461eba0844ced800ac9a0b0be868 Mon Sep 17 00:00:00 2001 From: nisiyong Date: Sun, 13 Nov 2022 11:45:34 +0800 Subject: [PATCH 1/9] Support collecting dubbo thread pool metrics --- ...dChannelHandlerConstructorInterceptor.java | 84 +++++++++++++++++++ .../WrappedChannelHandlerInstrumentation.java | 61 ++++++++++++++ .../src/main/resources/skywalking-plugin.def | 1 + ...dChannelHandlerConstructorInterceptor.java | 84 +++++++++++++++++++ .../WrappedChannelHandlerInstrumentation.java | 61 ++++++++++++++ .../src/main/resources/skywalking-plugin.def | 1 + .../service-agent/java-agent/Plugin-list.md | 2 + 7 files changed, 294 insertions(+) create mode 100644 apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerConstructorInterceptor.java create mode 100644 apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerInstrumentation.java create mode 100644 apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerConstructorInterceptor.java create mode 100644 apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerInstrumentation.java diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerConstructorInterceptor.java b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerConstructorInterceptor.java new file mode 100644 index 0000000000..b99c4f7496 --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerConstructorInterceptor.java @@ -0,0 +1,84 @@ +/* + * 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.skywalking.apm.plugin.asf.dubbo; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.common.extension.ExtensionLoader; +import org.apache.dubbo.common.store.DataStore; +import org.apache.skywalking.apm.agent.core.meter.MeterFactory; +import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; +import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ThreadPoolExecutor; + +public class WrappedChannelHandlerConstructorInterceptor implements InstanceConstructorInterceptor { + private static final String METER_NAME = "thread_pool"; + private static final String METRIC_POOL_NAME_TAG_NAME = "pool_name"; + private static final String METRIC_TYPE_TAG_NAME = "metric_type"; + + @Override + public void onConstruct(EnhancedInstance objInst, Object[] allArguments) throws Throwable { + URL url = (URL) allArguments[1]; + + DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension(); + String port = Integer.toString(url.getPort()); + + final String componentKey = ExecutorService.class.getName(); + ExecutorService executor = (ExecutorService) dataStore.get(componentKey, port); + if (!(executor instanceof ThreadPoolExecutor)) { + return; + } + ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executor; + String threadPoolName = String.format("dubbo-provider-%s", port); + + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getCorePoolSize())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "core_pool_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getMaximumPoolSize())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "max_pool_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getLargestPoolSize())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "largest_pool_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getPoolSize())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "pool_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getQueue().size())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "queue_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getActiveCount())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "active_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getTaskCount())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "task_count") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getCompletedTaskCount())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "completed_task_count") + .build(); + } +} diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerInstrumentation.java b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerInstrumentation.java new file mode 100644 index 0000000000..4219adb0f5 --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerInstrumentation.java @@ -0,0 +1,61 @@ +/* + * 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.skywalking.apm.plugin.asf.dubbo; + +import net.bytebuddy.description.method.MethodDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint; +import org.apache.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint; +import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine; +import org.apache.skywalking.apm.agent.core.plugin.match.ClassMatch; + +import static net.bytebuddy.matcher.ElementMatchers.any; +import static org.apache.skywalking.apm.agent.core.plugin.match.NameMatch.byName; + +public class WrappedChannelHandlerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { + private static final String ENHANCE_CLASS = "org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler"; + private static final String CONSTRUCTOR_INTERCEPTOR = "org.apache.skywalking.apm.plugin.msf.asf.dubbo.WrappedChannelHandlerConstructorInterceptor"; + + @Override + protected ClassMatch enhanceClass() { + return byName(ENHANCE_CLASS); + } + + @Override + public ConstructorInterceptPoint[] getConstructorsInterceptPoints() { + return new ConstructorInterceptPoint[]{ + new ConstructorInterceptPoint() { + @Override + public ElementMatcher getConstructorMatcher() { + return any(); + } + + @Override + public String getConstructorInterceptor() { + return CONSTRUCTOR_INTERCEPTOR; + } + } + }; + } + + @Override + public InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() { + return new InstanceMethodsInterceptPoint[0]; + } +} diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def index f6b64e0ba3..4430351254 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def +++ b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def @@ -15,3 +15,4 @@ # limitations under the License. dubbo-2.7.x=org.apache.skywalking.apm.plugin.asf.dubbo.DubboInstrumentation +dubbo-threadpool-2.7.x=org.apache.skywalking.apm.plugin.msf.asf.dubbo.define.WrappedChannelHandlerInstrumentation diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerConstructorInterceptor.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerConstructorInterceptor.java new file mode 100644 index 0000000000..28a7c21bdc --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerConstructorInterceptor.java @@ -0,0 +1,84 @@ +/* + * 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.skywalking.apm.plugin.dubbo; + +import com.alibaba.dubbo.common.URL; +import com.alibaba.dubbo.common.extension.ExtensionLoader; +import com.alibaba.dubbo.common.store.DataStore; +import org.apache.skywalking.apm.agent.core.meter.MeterFactory; +import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; +import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ThreadPoolExecutor; + +public class WrappedChannelHandlerConstructorInterceptor implements InstanceConstructorInterceptor { + private static final String METER_NAME = "thread_pool"; + private static final String METRIC_POOL_NAME_TAG_NAME = "pool_name"; + private static final String METRIC_TYPE_TAG_NAME = "metric_type"; + + @Override + public void onConstruct(EnhancedInstance objInst, Object[] allArguments) throws Throwable { + URL url = (URL) allArguments[1]; + + DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension(); + String port = Integer.toString(url.getPort()); + + final String componentKey = ExecutorService.class.getName(); + ExecutorService executor = (ExecutorService) dataStore.get(componentKey, port); + if (!(executor instanceof ThreadPoolExecutor)) { + return; + } + ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executor; + String threadPoolName = String.format("dubbo-provider-%s", port); + + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getCorePoolSize())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "core_pool_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getMaximumPoolSize())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "max_pool_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getLargestPoolSize())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "largest_pool_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getPoolSize())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "pool_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getQueue().size())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "queue_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getActiveCount())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "active_size") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getTaskCount())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "task_count") + .build(); + MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getCompletedTaskCount())) + .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) + .tag(METRIC_TYPE_TAG_NAME, "completed_task_count") + .build(); + } +} diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerInstrumentation.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerInstrumentation.java new file mode 100644 index 0000000000..d68898a4be --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerInstrumentation.java @@ -0,0 +1,61 @@ +/* + * 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.skywalking.apm.plugin.dubbo; + +import net.bytebuddy.description.method.MethodDescription; +import net.bytebuddy.matcher.ElementMatcher; +import org.apache.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint; +import org.apache.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint; +import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine; +import org.apache.skywalking.apm.agent.core.plugin.match.ClassMatch; + +import static net.bytebuddy.matcher.ElementMatchers.any; +import static org.apache.skywalking.apm.agent.core.plugin.match.NameMatch.byName; + +public class WrappedChannelHandlerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { + private static final String ENHANCE_CLASS = "com.alibaba.dubbo.remoting.transport.dispatcher.WrappedChannelHandler"; + private static final String CONSTRUCTOR_INTERCEPTOR = "org.apache.skywalking.apm.plugin.msf.dubbo.WrappedChannelHandlerConstructorInterceptor"; + + @Override + protected ClassMatch enhanceClass() { + return byName(ENHANCE_CLASS); + } + + @Override + public ConstructorInterceptPoint[] getConstructorsInterceptPoints() { + return new ConstructorInterceptPoint[]{ + new ConstructorInterceptPoint() { + @Override + public ElementMatcher getConstructorMatcher() { + return any(); + } + + @Override + public String getConstructorInterceptor() { + return CONSTRUCTOR_INTERCEPTOR; + } + } + }; + } + + @Override + public InstanceMethodsInterceptPoint[] getInstanceMethodsInterceptPoints() { + return new InstanceMethodsInterceptPoint[0]; + } +} diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/resources/skywalking-plugin.def b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/resources/skywalking-plugin.def index aabf09193d..e3fac28450 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/resources/skywalking-plugin.def +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/resources/skywalking-plugin.def @@ -15,3 +15,4 @@ # limitations under the License. dubbo=org.apache.skywalking.apm.plugin.dubbo.DubboInstrumentation +dubbo-threadpool=org.apache.skywalking.apm.plugin.dubbo.WrappedChannelHandlerInstrumentation diff --git a/docs/en/setup/service-agent/java-agent/Plugin-list.md b/docs/en/setup/service-agent/java-agent/Plugin-list.md index 1390befff3..706f040ce8 100644 --- a/docs/en/setup/service-agent/java-agent/Plugin-list.md +++ b/docs/en/setup/service-agent/java-agent/Plugin-list.md @@ -15,6 +15,8 @@ - dubbo - dubbo-2.7.x - dubbo-3.x +- dubbo-threadpool +- dubbo-threadpool-2.7.x - ehcache-2.x - elastic-job-2.x - elasticjob-3.x From a5335f4b55995cb3a34c434c1f71c38a0068faea Mon Sep 17 00:00:00 2001 From: nisiyong Date: Mon, 14 Nov 2022 23:30:26 +0800 Subject: [PATCH 2/9] Add dubbo thread pool meter test case --- .../config/expectedData.yaml | 52 +++++++++++++++++++ .../dubbo-2.5.x-scenario/configuration.yml | 2 + .../config/expectedData.yaml | 52 +++++++++++++++++++ .../dubbo-2.7.x-scenario/configuration.yml | 2 + 4 files changed, 108 insertions(+) diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml b/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml index 8eaa181c6d..0541366e45 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml @@ -66,3 +66,55 @@ segmentItems: - {key: http.method, value: GET} - {key: http.status_code, value: '200'} skipAnalysis: 'false' +meterItems: + - serviceName: dubbo-2.5.x--thread-pool-scenario + meterSize: 5 + meters: + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: core_pool_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 1 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: max_pool_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 1 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: largest_pool_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 1 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: pool_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 0 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: queue_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 0 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: active_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 0 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: task_count} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 0 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: completed_task_count} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 0 \ No newline at end of file diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/configuration.yml b/test/plugin/scenarios/dubbo-2.5.x-scenario/configuration.yml index cf975f31d0..91fcc8161d 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/configuration.yml +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/configuration.yml @@ -18,3 +18,5 @@ type: jvm entryService: http://localhost:8080/dubbo-2.5.x-scenario/case/dubbo healthCheck: http://localhost:8080/dubbo-2.5.x-scenario/case/healthCheck startScript: ./bin/startup.sh +environment: + - SW_METER_REPORT_INTERVAL=1 \ No newline at end of file diff --git a/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml b/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml index 10fb8aabe9..94930cceca 100644 --- a/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml +++ b/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml @@ -69,3 +69,55 @@ segmentItems: - {key: http.method, value: GET} - {key: http.status_code, value: '200'} skipAnalysis: 'false' +meterItems: + - serviceName: dubbo-2.7.x--thread-pool-scenario + meterSize: 5 + meters: + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: core_pool_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 1 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: max_pool_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 1 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: largest_pool_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 1 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: pool_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 0 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: queue_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 0 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: active_size} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 0 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: task_count} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 0 + - meterId: + name: thread_pool + tags: + - {name: metric_type, value: completed_task_count} + - {name: pool_name, value: dubbo-provider-20080} + singleValue: ge 0 diff --git a/test/plugin/scenarios/dubbo-2.7.x-scenario/configuration.yml b/test/plugin/scenarios/dubbo-2.7.x-scenario/configuration.yml index 98f24d2b53..572a573676 100644 --- a/test/plugin/scenarios/dubbo-2.7.x-scenario/configuration.yml +++ b/test/plugin/scenarios/dubbo-2.7.x-scenario/configuration.yml @@ -18,3 +18,5 @@ type: jvm entryService: http://localhost:8080/dubbo-2.7.x-scenario/case/dubbo healthCheck: http://localhost:8080/dubbo-2.7.x-scenario/case/healthCheck startScript: ./bin/startup.sh +environment: + - SW_METER_REPORT_INTERVAL=1 From 906e05adbff6727dbf66fe7a9da3e09086a21e3b Mon Sep 17 00:00:00 2001 From: nisiyong Date: Tue, 15 Nov 2022 00:34:37 +0800 Subject: [PATCH 3/9] WIP: Fix dubbo thread pool meter test case --- .../dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def | 2 +- .../scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml | 2 +- .../scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def index 4430351254..5a759c3402 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def +++ b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def @@ -15,4 +15,4 @@ # limitations under the License. dubbo-2.7.x=org.apache.skywalking.apm.plugin.asf.dubbo.DubboInstrumentation -dubbo-threadpool-2.7.x=org.apache.skywalking.apm.plugin.msf.asf.dubbo.define.WrappedChannelHandlerInstrumentation +dubbo-threadpool-2.7.x=org.apache.skywalking.apm.plugin.asf.dubbo.WrappedChannelHandlerInstrumentation diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml b/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml index 0541366e45..b9c04fdd1d 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml @@ -67,7 +67,7 @@ segmentItems: - {key: http.status_code, value: '200'} skipAnalysis: 'false' meterItems: - - serviceName: dubbo-2.5.x--thread-pool-scenario + - serviceName: dubbo-2.5.x-thread-pool-scenario meterSize: 5 meters: - meterId: diff --git a/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml b/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml index 94930cceca..63b31aca3a 100644 --- a/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml +++ b/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml @@ -70,7 +70,7 @@ segmentItems: - {key: http.status_code, value: '200'} skipAnalysis: 'false' meterItems: - - serviceName: dubbo-2.7.x--thread-pool-scenario + - serviceName: dubbo-2.7.x-thread-pool-scenario meterSize: 5 meters: - meterId: From 507960abefa182f37f57772cf527eb60abb5bcb1 Mon Sep 17 00:00:00 2001 From: nisiyong Date: Tue, 15 Nov 2022 21:59:37 +0800 Subject: [PATCH 4/9] Fix dubbo thread pool plugin but has not support version >= `2.7.5` --- .../asf/dubbo/WrappedChannelHandlerInstrumentation.java | 2 +- .../plugin/dubbo/WrappedChannelHandlerInstrumentation.java | 2 +- .../scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml | 6 +++--- .../scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerInstrumentation.java b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerInstrumentation.java index 4219adb0f5..71d053c282 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerInstrumentation.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerInstrumentation.java @@ -30,7 +30,7 @@ public class WrappedChannelHandlerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { private static final String ENHANCE_CLASS = "org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler"; - private static final String CONSTRUCTOR_INTERCEPTOR = "org.apache.skywalking.apm.plugin.msf.asf.dubbo.WrappedChannelHandlerConstructorInterceptor"; + private static final String CONSTRUCTOR_INTERCEPTOR = "org.apache.skywalking.apm.plugin.asf.dubbo.WrappedChannelHandlerConstructorInterceptor"; @Override protected ClassMatch enhanceClass() { diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerInstrumentation.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerInstrumentation.java index d68898a4be..17578b46cb 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerInstrumentation.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerInstrumentation.java @@ -30,7 +30,7 @@ public class WrappedChannelHandlerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { private static final String ENHANCE_CLASS = "com.alibaba.dubbo.remoting.transport.dispatcher.WrappedChannelHandler"; - private static final String CONSTRUCTOR_INTERCEPTOR = "org.apache.skywalking.apm.plugin.msf.dubbo.WrappedChannelHandlerConstructorInterceptor"; + private static final String CONSTRUCTOR_INTERCEPTOR = "org.apache.skywalking.apm.plugin.dubbo.WrappedChannelHandlerConstructorInterceptor"; @Override protected ClassMatch enhanceClass() { diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml b/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml index b9c04fdd1d..b854885904 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml @@ -67,8 +67,8 @@ segmentItems: - {key: http.status_code, value: '200'} skipAnalysis: 'false' meterItems: - - serviceName: dubbo-2.5.x-thread-pool-scenario - meterSize: 5 + - serviceName: dubbo-2.5.x-scenario + meterSize: ge 8 meters: - meterId: name: thread_pool @@ -117,4 +117,4 @@ meterItems: tags: - {name: metric_type, value: completed_task_count} - {name: pool_name, value: dubbo-provider-20080} - singleValue: ge 0 \ No newline at end of file + singleValue: ge 0 diff --git a/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml b/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml index 63b31aca3a..90e7bb29c7 100644 --- a/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml +++ b/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml @@ -70,8 +70,8 @@ segmentItems: - {key: http.status_code, value: '200'} skipAnalysis: 'false' meterItems: - - serviceName: dubbo-2.7.x-thread-pool-scenario - meterSize: 5 + - serviceName: dubbo-2.7.x-scenario + meterSize: ge 8 meters: - meterId: name: thread_pool From 81656b009288197328afeeea336e49c16979d2e4 Mon Sep 17 00:00:00 2001 From: nisiyong Date: Wed, 16 Nov 2022 01:39:19 +0800 Subject: [PATCH 5/9] Change the enhanced class and fix the test cases --- ...AbstractServerConstructorInterceptor.java} | 19 ++++++++-------- ...ava => AbstractServerInstrumentation.java} | 6 ++--- .../src/main/resources/skywalking-plugin.def | 2 +- ...AbstractServerConstructorInterceptor.java} | 19 ++++++++-------- ...ava => AbstractServerInstrumentation.java} | 6 ++--- .../src/main/resources/skywalking-plugin.def | 2 +- .../config/expectedData.yaml | 22 +++++++++---------- .../apm/testcase/dubbo/Application.java | 4 ++-- .../config/expectedData.yaml | 22 +++++++++---------- .../apm/testcase/dubbo/Application.java | 4 ++-- 10 files changed, 54 insertions(+), 52 deletions(-) rename apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/{WrappedChannelHandlerConstructorInterceptor.java => AbstractServerConstructorInterceptor.java} (85%) rename apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/{WrappedChannelHandlerInstrumentation.java => AbstractServerInstrumentation.java} (91%) rename apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/{WrappedChannelHandlerConstructorInterceptor.java => AbstractServerConstructorInterceptor.java} (85%) rename apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/{WrappedChannelHandlerInstrumentation.java => AbstractServerInstrumentation.java} (91%) diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerConstructorInterceptor.java b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/AbstractServerConstructorInterceptor.java similarity index 85% rename from apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerConstructorInterceptor.java rename to apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/AbstractServerConstructorInterceptor.java index b99c4f7496..75b331e770 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerConstructorInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/AbstractServerConstructorInterceptor.java @@ -19,34 +19,35 @@ package org.apache.skywalking.apm.plugin.asf.dubbo; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.extension.ExtensionLoader; -import org.apache.dubbo.common.store.DataStore; +import org.apache.dubbo.remoting.transport.AbstractServer; import org.apache.skywalking.apm.agent.core.meter.MeterFactory; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor; +import java.lang.reflect.Field; import java.util.concurrent.ExecutorService; import java.util.concurrent.ThreadPoolExecutor; -public class WrappedChannelHandlerConstructorInterceptor implements InstanceConstructorInterceptor { +public class AbstractServerConstructorInterceptor implements InstanceConstructorInterceptor { private static final String METER_NAME = "thread_pool"; private static final String METRIC_POOL_NAME_TAG_NAME = "pool_name"; private static final String METRIC_TYPE_TAG_NAME = "metric_type"; @Override public void onConstruct(EnhancedInstance objInst, Object[] allArguments) throws Throwable { - URL url = (URL) allArguments[1]; + Field executorField = AbstractServer.class.getDeclaredField("executor"); + executorField.setAccessible(true); + ExecutorService executor = (ExecutorService) executorField.get(objInst); - DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension(); - String port = Integer.toString(url.getPort()); + URL url = (URL) allArguments[0]; + int port = url.getPort(); - final String componentKey = ExecutorService.class.getName(); - ExecutorService executor = (ExecutorService) dataStore.get(componentKey, port); if (!(executor instanceof ThreadPoolExecutor)) { return; } ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executor; - String threadPoolName = String.format("dubbo-provider-%s", port); + // TODO String.format("DubboServerHandler-%s:%s", host, port) will be better + String threadPoolName = String.format("DubboServerHandler-%s", port); MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getCorePoolSize())) .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerInstrumentation.java b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/AbstractServerInstrumentation.java similarity index 91% rename from apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerInstrumentation.java rename to apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/AbstractServerInstrumentation.java index 71d053c282..5db5962e89 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/WrappedChannelHandlerInstrumentation.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/java/org/apache/skywalking/apm/plugin/asf/dubbo/AbstractServerInstrumentation.java @@ -28,9 +28,9 @@ import static net.bytebuddy.matcher.ElementMatchers.any; import static org.apache.skywalking.apm.agent.core.plugin.match.NameMatch.byName; -public class WrappedChannelHandlerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { - private static final String ENHANCE_CLASS = "org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler"; - private static final String CONSTRUCTOR_INTERCEPTOR = "org.apache.skywalking.apm.plugin.asf.dubbo.WrappedChannelHandlerConstructorInterceptor"; +public class AbstractServerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { + private static final String ENHANCE_CLASS = "org.apache.dubbo.remoting.transport.AbstractServer"; + private static final String CONSTRUCTOR_INTERCEPTOR = "org.apache.skywalking.apm.plugin.asf.dubbo.AbstractServerConstructorInterceptor"; @Override protected ClassMatch enhanceClass() { diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def index 5a759c3402..725d2739a4 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def +++ b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/main/resources/skywalking-plugin.def @@ -15,4 +15,4 @@ # limitations under the License. dubbo-2.7.x=org.apache.skywalking.apm.plugin.asf.dubbo.DubboInstrumentation -dubbo-threadpool-2.7.x=org.apache.skywalking.apm.plugin.asf.dubbo.WrappedChannelHandlerInstrumentation +dubbo-threadpool-2.7.x=org.apache.skywalking.apm.plugin.asf.dubbo.AbstractServerInstrumentation diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerConstructorInterceptor.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/AbstractServerConstructorInterceptor.java similarity index 85% rename from apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerConstructorInterceptor.java rename to apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/AbstractServerConstructorInterceptor.java index 28a7c21bdc..99e53c66de 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerConstructorInterceptor.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/AbstractServerConstructorInterceptor.java @@ -19,34 +19,35 @@ package org.apache.skywalking.apm.plugin.dubbo; import com.alibaba.dubbo.common.URL; -import com.alibaba.dubbo.common.extension.ExtensionLoader; -import com.alibaba.dubbo.common.store.DataStore; +import com.alibaba.dubbo.remoting.transport.AbstractServer; import org.apache.skywalking.apm.agent.core.meter.MeterFactory; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor; +import java.lang.reflect.Field; import java.util.concurrent.ExecutorService; import java.util.concurrent.ThreadPoolExecutor; -public class WrappedChannelHandlerConstructorInterceptor implements InstanceConstructorInterceptor { +public class AbstractServerConstructorInterceptor implements InstanceConstructorInterceptor { private static final String METER_NAME = "thread_pool"; private static final String METRIC_POOL_NAME_TAG_NAME = "pool_name"; private static final String METRIC_TYPE_TAG_NAME = "metric_type"; @Override public void onConstruct(EnhancedInstance objInst, Object[] allArguments) throws Throwable { - URL url = (URL) allArguments[1]; + Field executorField = AbstractServer.class.getDeclaredField("executor"); + executorField.setAccessible(true); + ExecutorService executor = (ExecutorService) executorField.get(objInst); - DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension(); - String port = Integer.toString(url.getPort()); + URL url = (URL) allArguments[0]; + int port = url.getPort(); - final String componentKey = ExecutorService.class.getName(); - ExecutorService executor = (ExecutorService) dataStore.get(componentKey, port); if (!(executor instanceof ThreadPoolExecutor)) { return; } ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executor; - String threadPoolName = String.format("dubbo-provider-%s", port); + // TODO String.format("DubboServerHandler-%s:%s", host, port) will be better + String threadPoolName = String.format("DubboServerHandler-%s", port); MeterFactory.gauge(METER_NAME, () -> (double) (threadPoolExecutor.getCorePoolSize())) .tag(METRIC_POOL_NAME_TAG_NAME, threadPoolName) diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerInstrumentation.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/AbstractServerInstrumentation.java similarity index 91% rename from apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerInstrumentation.java rename to apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/AbstractServerInstrumentation.java index 17578b46cb..54bd8ee8ac 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/WrappedChannelHandlerInstrumentation.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/java/org/apache/skywalking/apm/plugin/dubbo/AbstractServerInstrumentation.java @@ -28,9 +28,9 @@ import static net.bytebuddy.matcher.ElementMatchers.any; import static org.apache.skywalking.apm.agent.core.plugin.match.NameMatch.byName; -public class WrappedChannelHandlerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { - private static final String ENHANCE_CLASS = "com.alibaba.dubbo.remoting.transport.dispatcher.WrappedChannelHandler"; - private static final String CONSTRUCTOR_INTERCEPTOR = "org.apache.skywalking.apm.plugin.dubbo.WrappedChannelHandlerConstructorInterceptor"; +public class AbstractServerInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { + private static final String ENHANCE_CLASS = "com.alibaba.dubbo.remoting.transport.AbstractServer"; + private static final String CONSTRUCTOR_INTERCEPTOR = "org.apache.skywalking.apm.plugin.dubbo.AbstractServerConstructorInterceptor"; @Override protected ClassMatch enhanceClass() { diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/resources/skywalking-plugin.def b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/resources/skywalking-plugin.def index e3fac28450..229c95c570 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/resources/skywalking-plugin.def +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/main/resources/skywalking-plugin.def @@ -15,4 +15,4 @@ # limitations under the License. dubbo=org.apache.skywalking.apm.plugin.dubbo.DubboInstrumentation -dubbo-threadpool=org.apache.skywalking.apm.plugin.dubbo.WrappedChannelHandlerInstrumentation +dubbo-threadpool=org.apache.skywalking.apm.plugin.dubbo.AbstractServerInstrumentation diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml b/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml index b854885904..15d9575dd7 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml @@ -32,7 +32,7 @@ segmentItems: tags: - {key: url, value: not null} refs: - - {parentEndpoint: GET:/dubbo-2.5.x-scenario/case/dubbo, networkAddress: 'localhost:20080', + - {parentEndpoint: GET:/dubbo-2.5.x-scenario/case/dubbo, networkAddress: 'localhost:20880', refType: CrossProcess, parentSpanId: 1, parentTraceSegmentId: not null, parentServiceInstance: not null, parentService: dubbo-2.5.x-scenario, traceId: not null} skipAnalysis: 'false' @@ -47,9 +47,9 @@ segmentItems: componentId: 3 isError: false spanType: Exit - peer: localhost:20080 + peer: localhost:20880 tags: - - {key: url, value: 'dubbo://localhost:20080/org.apache.skywalking.apm.testcase.dubbo.services.GreetService.doBusiness()'} + - {key: url, value: 'dubbo://localhost:20880/org.apache.skywalking.apm.testcase.dubbo.services.GreetService.doBusiness()'} skipAnalysis: 'false' - operationName: GET:/dubbo-2.5.x-scenario/case/dubbo parentSpanId: -1 @@ -74,47 +74,47 @@ meterItems: name: thread_pool tags: - {name: metric_type, value: core_pool_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 1 - meterId: name: thread_pool tags: - {name: metric_type, value: max_pool_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 1 - meterId: name: thread_pool tags: - {name: metric_type, value: largest_pool_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 1 - meterId: name: thread_pool tags: - {name: metric_type, value: pool_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 0 - meterId: name: thread_pool tags: - {name: metric_type, value: queue_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 0 - meterId: name: thread_pool tags: - {name: metric_type, value: active_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 0 - meterId: name: thread_pool tags: - {name: metric_type, value: task_count} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 0 - meterId: name: thread_pool tags: - {name: metric_type, value: completed_task_count} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 0 diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java b/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java index 1918964ce9..d3b74fdecb 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java @@ -44,7 +44,7 @@ public static class DubboConfiguration { private RegistryConfig registryConfig = new RegistryConfig("N/A"); - private ProtocolConfig protocolConfig = new ProtocolConfig("dubbo", 20080); + private ProtocolConfig protocolConfig = new ProtocolConfig("dubbo", 20880); @Bean(destroyMethod = "unexport") public ServiceConfig service() { @@ -65,7 +65,7 @@ public ReferenceConfig reference() { referenceConfig.setApplication(applicationConfig); referenceConfig.setInterface(GreetService.class); - referenceConfig.setUrl("dubbo://localhost:20080"); + referenceConfig.setUrl("dubbo://localhost:20880"); return referenceConfig; } diff --git a/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml b/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml index 90e7bb29c7..545e28c4b3 100644 --- a/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml +++ b/test/plugin/scenarios/dubbo-2.7.x-scenario/config/expectedData.yaml @@ -34,7 +34,7 @@ segmentItems: - {key: url, value: not null} - {key: arguments, value: helloWorld} refs: - - {parentEndpoint: GET:/dubbo-2.7.x-scenario/case/dubbo, networkAddress: 'localhost:20080', + - {parentEndpoint: GET:/dubbo-2.7.x-scenario/case/dubbo, networkAddress: 'localhost:20880', refType: CrossProcess, parentSpanId: 1, parentTraceSegmentId: not null, parentServiceInstance: not null, parentService: dubbo-2.7.x-scenario, traceId: not null} skipAnalysis: 'false' @@ -49,9 +49,9 @@ segmentItems: componentId: 3 isError: false spanType: Exit - peer: localhost:20080 + peer: localhost:20880 tags: - - {key: url, value: 'dubbo://localhost:20080/org.apache.skywalking.apm.testcase.dubbo.services.GreetService.doBusiness(String)'} + - {key: url, value: 'dubbo://localhost:20880/org.apache.skywalking.apm.testcase.dubbo.services.GreetService.doBusiness(String)'} - {key: arguments, value: helloWorld} skipAnalysis: 'false' - operationName: GET:/dubbo-2.7.x-scenario/case/dubbo @@ -77,47 +77,47 @@ meterItems: name: thread_pool tags: - {name: metric_type, value: core_pool_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 1 - meterId: name: thread_pool tags: - {name: metric_type, value: max_pool_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 1 - meterId: name: thread_pool tags: - {name: metric_type, value: largest_pool_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 1 - meterId: name: thread_pool tags: - {name: metric_type, value: pool_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 0 - meterId: name: thread_pool tags: - {name: metric_type, value: queue_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 0 - meterId: name: thread_pool tags: - {name: metric_type, value: active_size} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 0 - meterId: name: thread_pool tags: - {name: metric_type, value: task_count} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 0 - meterId: name: thread_pool tags: - {name: metric_type, value: completed_task_count} - - {name: pool_name, value: dubbo-provider-20080} + - {name: pool_name, value: DubboServerHandler-20880} singleValue: ge 0 diff --git a/test/plugin/scenarios/dubbo-2.7.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java b/test/plugin/scenarios/dubbo-2.7.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java index 933fee49e7..c12a9894e2 100644 --- a/test/plugin/scenarios/dubbo-2.7.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java +++ b/test/plugin/scenarios/dubbo-2.7.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java @@ -44,7 +44,7 @@ public static class DubboConfiguration { private RegistryConfig registryConfig = new RegistryConfig("N/A"); - private ProtocolConfig protocolConfig = new ProtocolConfig("dubbo", 20080); + private ProtocolConfig protocolConfig = new ProtocolConfig("dubbo", 20880); @Bean(destroyMethod = "unexport") public ServiceConfig service() { @@ -65,7 +65,7 @@ public ReferenceConfig reference() { referenceConfig.setApplication(applicationConfig); referenceConfig.setInterface(GreetService.class); - referenceConfig.setUrl("dubbo://localhost:20080"); + referenceConfig.setUrl("dubbo://localhost:20880"); return referenceConfig; } From d0108e17330d00544a18a41d4a80b44ac91dbe2d Mon Sep 17 00:00:00 2001 From: nisiyong Date: Wed, 16 Nov 2022 17:03:01 +0800 Subject: [PATCH 6/9] Rename `dubbo-2.5.x-scenario` to `dubbo-scenario` due to this scenario also support 2.6.x --- .github/workflows/plugins-test.0.yaml | 2 +- .../bin/startup.sh | 2 +- .../config/expectedData.yaml | 12 ++++++------ .../configuration.yml | 6 +++--- .../{dubbo-2.5.x-scenario => dubbo-scenario}/pom.xml | 6 +++--- .../src/main/assembly/assembly.xml | 4 ++-- .../skywalking/apm/testcase/dubbo/Application.java | 0 .../testcase/dubbo/controller/CaseController.java | 0 .../apm/testcase/dubbo/services/GreetService.java | 0 .../dubbo/services/impl/GreetServiceImpl.java | 0 .../src/main/resources/application.yaml | 2 +- .../support-version.list | 0 12 files changed, 17 insertions(+), 17 deletions(-) rename test/plugin/scenarios/{dubbo-2.5.x-scenario => dubbo-scenario}/bin/startup.sh (92%) rename test/plugin/scenarios/{dubbo-2.5.x-scenario => dubbo-scenario}/config/expectedData.yaml (90%) rename test/plugin/scenarios/{dubbo-2.5.x-scenario => dubbo-scenario}/configuration.yml (83%) rename test/plugin/scenarios/{dubbo-2.5.x-scenario => dubbo-scenario}/pom.xml (96%) rename test/plugin/scenarios/{dubbo-2.5.x-scenario => dubbo-scenario}/src/main/assembly/assembly.xml (95%) rename test/plugin/scenarios/{dubbo-2.5.x-scenario => dubbo-scenario}/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java (100%) rename test/plugin/scenarios/{dubbo-2.5.x-scenario => dubbo-scenario}/src/main/java/org/apache/skywalking/apm/testcase/dubbo/controller/CaseController.java (100%) rename test/plugin/scenarios/{dubbo-2.5.x-scenario => dubbo-scenario}/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/GreetService.java (100%) rename test/plugin/scenarios/{dubbo-2.5.x-scenario => dubbo-scenario}/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/impl/GreetServiceImpl.java (100%) rename test/plugin/scenarios/{dubbo-2.5.x-scenario => dubbo-scenario}/src/main/resources/application.yaml (95%) rename test/plugin/scenarios/{dubbo-2.5.x-scenario => dubbo-scenario}/support-version.list (100%) diff --git a/.github/workflows/plugins-test.0.yaml b/.github/workflows/plugins-test.0.yaml index ab768b74a3..fd3ff65f65 100644 --- a/.github/workflows/plugins-test.0.yaml +++ b/.github/workflows/plugins-test.0.yaml @@ -65,7 +65,7 @@ jobs: - cassandra-java-driver-3.x-scenario - customize-scenario - correlation-autotag-scenario - - dubbo-2.5.x-scenario + - dubbo-scenario - dubbo-2.7.x-scenario - dubbo-3.x-scenario - ehcache-2.x-scenario diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/bin/startup.sh b/test/plugin/scenarios/dubbo-scenario/bin/startup.sh similarity index 92% rename from test/plugin/scenarios/dubbo-2.5.x-scenario/bin/startup.sh rename to test/plugin/scenarios/dubbo-scenario/bin/startup.sh index 214b72d1c1..09806136ff 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/bin/startup.sh +++ b/test/plugin/scenarios/dubbo-scenario/bin/startup.sh @@ -18,4 +18,4 @@ home="$(cd "$(dirname $0)"; pwd)" -java -jar ${agent_opts} ${home}/../libs/dubbo-2.5.x-scenario.jar & \ No newline at end of file +java -jar ${agent_opts} ${home}/../libs/dubbo-scenario.jar & diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml b/test/plugin/scenarios/dubbo-scenario/config/expectedData.yaml similarity index 90% rename from test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml rename to test/plugin/scenarios/dubbo-scenario/config/expectedData.yaml index 15d9575dd7..67c413f2dd 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml +++ b/test/plugin/scenarios/dubbo-scenario/config/expectedData.yaml @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. segmentItems: -- serviceName: dubbo-2.5.x-scenario +- serviceName: dubbo-scenario segmentSize: ge 3 segments: - segmentId: not null @@ -32,9 +32,9 @@ segmentItems: tags: - {key: url, value: not null} refs: - - {parentEndpoint: GET:/dubbo-2.5.x-scenario/case/dubbo, networkAddress: 'localhost:20880', + - {parentEndpoint: GET:/dubbo-scenario/case/dubbo, networkAddress: 'localhost:20880', refType: CrossProcess, parentSpanId: 1, parentTraceSegmentId: not null, parentServiceInstance: not - null, parentService: dubbo-2.5.x-scenario, traceId: not null} + null, parentService: dubbo-scenario, traceId: not null} skipAnalysis: 'false' - segmentId: not null spans: @@ -51,7 +51,7 @@ segmentItems: tags: - {key: url, value: 'dubbo://localhost:20880/org.apache.skywalking.apm.testcase.dubbo.services.GreetService.doBusiness()'} skipAnalysis: 'false' - - operationName: GET:/dubbo-2.5.x-scenario/case/dubbo + - operationName: GET:/dubbo-scenario/case/dubbo parentSpanId: -1 spanId: 0 spanLayer: Http @@ -62,12 +62,12 @@ segmentItems: spanType: Entry peer: '' tags: - - {key: url, value: 'http://localhost:8080/dubbo-2.5.x-scenario/case/dubbo'} + - {key: url, value: 'http://localhost:8080/dubbo-scenario/case/dubbo'} - {key: http.method, value: GET} - {key: http.status_code, value: '200'} skipAnalysis: 'false' meterItems: - - serviceName: dubbo-2.5.x-scenario + - serviceName: dubbo-scenario meterSize: ge 8 meters: - meterId: diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/configuration.yml b/test/plugin/scenarios/dubbo-scenario/configuration.yml similarity index 83% rename from test/plugin/scenarios/dubbo-2.5.x-scenario/configuration.yml rename to test/plugin/scenarios/dubbo-scenario/configuration.yml index 91fcc8161d..b2dddb310d 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/configuration.yml +++ b/test/plugin/scenarios/dubbo-scenario/configuration.yml @@ -15,8 +15,8 @@ # limitations under the License. type: jvm -entryService: http://localhost:8080/dubbo-2.5.x-scenario/case/dubbo -healthCheck: http://localhost:8080/dubbo-2.5.x-scenario/case/healthCheck +entryService: http://localhost:8080/dubbo-scenario/case/dubbo +healthCheck: http://localhost:8080/dubbo-scenario/case/healthCheck startScript: ./bin/startup.sh environment: - - SW_METER_REPORT_INTERVAL=1 \ No newline at end of file + - SW_METER_REPORT_INTERVAL=1 diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/pom.xml b/test/plugin/scenarios/dubbo-scenario/pom.xml similarity index 96% rename from test/plugin/scenarios/dubbo-2.5.x-scenario/pom.xml rename to test/plugin/scenarios/dubbo-scenario/pom.xml index 949fd6606b..255787f20b 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/pom.xml +++ b/test/plugin/scenarios/dubbo-scenario/pom.xml @@ -22,7 +22,7 @@ 4.0.0 org.apache.skywalking - dubbo-2.5.x-scenario + dubbo-scenario 5.0.0 @@ -34,7 +34,7 @@ 2.5.4 - skywalking-dubbo-2.5.x-scenario + skywalking-dubbo-scenario @@ -63,7 +63,7 @@ - dubbo-2.5.x-scenario + dubbo-scenario org.springframework.boot diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/assembly/assembly.xml b/test/plugin/scenarios/dubbo-scenario/src/main/assembly/assembly.xml similarity index 95% rename from test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/assembly/assembly.xml rename to test/plugin/scenarios/dubbo-scenario/src/main/assembly/assembly.xml index 3e45d6da53..56c784fd04 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/assembly/assembly.xml +++ b/test/plugin/scenarios/dubbo-scenario/src/main/assembly/assembly.xml @@ -33,9 +33,9 @@ - ./target/dubbo-2.5.x-scenario.jar + ./target/dubbo-scenario.jar ./libs 0775 - \ No newline at end of file + diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java b/test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java similarity index 100% rename from test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java rename to test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/controller/CaseController.java b/test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/controller/CaseController.java similarity index 100% rename from test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/controller/CaseController.java rename to test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/controller/CaseController.java diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/GreetService.java b/test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/GreetService.java similarity index 100% rename from test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/GreetService.java rename to test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/GreetService.java diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/impl/GreetServiceImpl.java b/test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/impl/GreetServiceImpl.java similarity index 100% rename from test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/impl/GreetServiceImpl.java rename to test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/impl/GreetServiceImpl.java diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/resources/application.yaml b/test/plugin/scenarios/dubbo-scenario/src/main/resources/application.yaml similarity index 95% rename from test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/resources/application.yaml rename to test/plugin/scenarios/dubbo-scenario/src/main/resources/application.yaml index 5abf3df5bb..d6eec1fa26 100644 --- a/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/resources/application.yaml +++ b/test/plugin/scenarios/dubbo-scenario/src/main/resources/application.yaml @@ -17,5 +17,5 @@ server: port: 8080 servlet: - context-path: /dubbo-2.5.x-scenario + context-path: /dubbo-scenario diff --git a/test/plugin/scenarios/dubbo-2.5.x-scenario/support-version.list b/test/plugin/scenarios/dubbo-scenario/support-version.list similarity index 100% rename from test/plugin/scenarios/dubbo-2.5.x-scenario/support-version.list rename to test/plugin/scenarios/dubbo-scenario/support-version.list From a192192f5e9c8c6e2daf3faf49586877030c8e62 Mon Sep 17 00:00:00 2001 From: nisiyong Date: Wed, 16 Nov 2022 17:04:05 +0800 Subject: [PATCH 7/9] Update CHANGES.md --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 38a1fc722c..6097fc6698 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -8,6 +8,7 @@ Release Notes. * Polish test framework to support `arm64/v8` platforms * Fix wrong config name `plugin.toolkit.use_qualified_name_as_operation_name`, and system variable name `SW_PLUGIN_TOOLKIT_USE_QUALIFIED_NAME_AS_OPERATION_NAME:false`. They were **toolit**. * Rename `JDBI` to `JDBC` +* Support collecting dubbo thread pool metrics #### Documentation From babca9d699383e641487394a7ca590706b3571e7 Mon Sep 17 00:00:00 2001 From: nisiyong Date: Wed, 16 Nov 2022 20:05:49 +0800 Subject: [PATCH 8/9] Revert "Rename `dubbo-2.5.x-scenario` to `dubbo-scenario` due to this scenario also support 2.6.x" This reverts commit d0108e17330d00544a18a41d4a80b44ac91dbe2d. --- .github/workflows/plugins-test.0.yaml | 2 +- .../bin/startup.sh | 2 +- .../config/expectedData.yaml | 12 ++++++------ .../configuration.yml | 6 +++--- .../{dubbo-scenario => dubbo-2.5.x-scenario}/pom.xml | 6 +++--- .../src/main/assembly/assembly.xml | 4 ++-- .../skywalking/apm/testcase/dubbo/Application.java | 0 .../testcase/dubbo/controller/CaseController.java | 0 .../apm/testcase/dubbo/services/GreetService.java | 0 .../dubbo/services/impl/GreetServiceImpl.java | 0 .../src/main/resources/application.yaml | 2 +- .../support-version.list | 0 12 files changed, 17 insertions(+), 17 deletions(-) rename test/plugin/scenarios/{dubbo-scenario => dubbo-2.5.x-scenario}/bin/startup.sh (92%) rename test/plugin/scenarios/{dubbo-scenario => dubbo-2.5.x-scenario}/config/expectedData.yaml (90%) rename test/plugin/scenarios/{dubbo-scenario => dubbo-2.5.x-scenario}/configuration.yml (83%) rename test/plugin/scenarios/{dubbo-scenario => dubbo-2.5.x-scenario}/pom.xml (96%) rename test/plugin/scenarios/{dubbo-scenario => dubbo-2.5.x-scenario}/src/main/assembly/assembly.xml (95%) rename test/plugin/scenarios/{dubbo-scenario => dubbo-2.5.x-scenario}/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java (100%) rename test/plugin/scenarios/{dubbo-scenario => dubbo-2.5.x-scenario}/src/main/java/org/apache/skywalking/apm/testcase/dubbo/controller/CaseController.java (100%) rename test/plugin/scenarios/{dubbo-scenario => dubbo-2.5.x-scenario}/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/GreetService.java (100%) rename test/plugin/scenarios/{dubbo-scenario => dubbo-2.5.x-scenario}/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/impl/GreetServiceImpl.java (100%) rename test/plugin/scenarios/{dubbo-scenario => dubbo-2.5.x-scenario}/src/main/resources/application.yaml (95%) rename test/plugin/scenarios/{dubbo-scenario => dubbo-2.5.x-scenario}/support-version.list (100%) diff --git a/.github/workflows/plugins-test.0.yaml b/.github/workflows/plugins-test.0.yaml index fd3ff65f65..ab768b74a3 100644 --- a/.github/workflows/plugins-test.0.yaml +++ b/.github/workflows/plugins-test.0.yaml @@ -65,7 +65,7 @@ jobs: - cassandra-java-driver-3.x-scenario - customize-scenario - correlation-autotag-scenario - - dubbo-scenario + - dubbo-2.5.x-scenario - dubbo-2.7.x-scenario - dubbo-3.x-scenario - ehcache-2.x-scenario diff --git a/test/plugin/scenarios/dubbo-scenario/bin/startup.sh b/test/plugin/scenarios/dubbo-2.5.x-scenario/bin/startup.sh similarity index 92% rename from test/plugin/scenarios/dubbo-scenario/bin/startup.sh rename to test/plugin/scenarios/dubbo-2.5.x-scenario/bin/startup.sh index 09806136ff..214b72d1c1 100644 --- a/test/plugin/scenarios/dubbo-scenario/bin/startup.sh +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/bin/startup.sh @@ -18,4 +18,4 @@ home="$(cd "$(dirname $0)"; pwd)" -java -jar ${agent_opts} ${home}/../libs/dubbo-scenario.jar & +java -jar ${agent_opts} ${home}/../libs/dubbo-2.5.x-scenario.jar & \ No newline at end of file diff --git a/test/plugin/scenarios/dubbo-scenario/config/expectedData.yaml b/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml similarity index 90% rename from test/plugin/scenarios/dubbo-scenario/config/expectedData.yaml rename to test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml index 67c413f2dd..15d9575dd7 100644 --- a/test/plugin/scenarios/dubbo-scenario/config/expectedData.yaml +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/config/expectedData.yaml @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. segmentItems: -- serviceName: dubbo-scenario +- serviceName: dubbo-2.5.x-scenario segmentSize: ge 3 segments: - segmentId: not null @@ -32,9 +32,9 @@ segmentItems: tags: - {key: url, value: not null} refs: - - {parentEndpoint: GET:/dubbo-scenario/case/dubbo, networkAddress: 'localhost:20880', + - {parentEndpoint: GET:/dubbo-2.5.x-scenario/case/dubbo, networkAddress: 'localhost:20880', refType: CrossProcess, parentSpanId: 1, parentTraceSegmentId: not null, parentServiceInstance: not - null, parentService: dubbo-scenario, traceId: not null} + null, parentService: dubbo-2.5.x-scenario, traceId: not null} skipAnalysis: 'false' - segmentId: not null spans: @@ -51,7 +51,7 @@ segmentItems: tags: - {key: url, value: 'dubbo://localhost:20880/org.apache.skywalking.apm.testcase.dubbo.services.GreetService.doBusiness()'} skipAnalysis: 'false' - - operationName: GET:/dubbo-scenario/case/dubbo + - operationName: GET:/dubbo-2.5.x-scenario/case/dubbo parentSpanId: -1 spanId: 0 spanLayer: Http @@ -62,12 +62,12 @@ segmentItems: spanType: Entry peer: '' tags: - - {key: url, value: 'http://localhost:8080/dubbo-scenario/case/dubbo'} + - {key: url, value: 'http://localhost:8080/dubbo-2.5.x-scenario/case/dubbo'} - {key: http.method, value: GET} - {key: http.status_code, value: '200'} skipAnalysis: 'false' meterItems: - - serviceName: dubbo-scenario + - serviceName: dubbo-2.5.x-scenario meterSize: ge 8 meters: - meterId: diff --git a/test/plugin/scenarios/dubbo-scenario/configuration.yml b/test/plugin/scenarios/dubbo-2.5.x-scenario/configuration.yml similarity index 83% rename from test/plugin/scenarios/dubbo-scenario/configuration.yml rename to test/plugin/scenarios/dubbo-2.5.x-scenario/configuration.yml index b2dddb310d..91fcc8161d 100644 --- a/test/plugin/scenarios/dubbo-scenario/configuration.yml +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/configuration.yml @@ -15,8 +15,8 @@ # limitations under the License. type: jvm -entryService: http://localhost:8080/dubbo-scenario/case/dubbo -healthCheck: http://localhost:8080/dubbo-scenario/case/healthCheck +entryService: http://localhost:8080/dubbo-2.5.x-scenario/case/dubbo +healthCheck: http://localhost:8080/dubbo-2.5.x-scenario/case/healthCheck startScript: ./bin/startup.sh environment: - - SW_METER_REPORT_INTERVAL=1 + - SW_METER_REPORT_INTERVAL=1 \ No newline at end of file diff --git a/test/plugin/scenarios/dubbo-scenario/pom.xml b/test/plugin/scenarios/dubbo-2.5.x-scenario/pom.xml similarity index 96% rename from test/plugin/scenarios/dubbo-scenario/pom.xml rename to test/plugin/scenarios/dubbo-2.5.x-scenario/pom.xml index 255787f20b..949fd6606b 100644 --- a/test/plugin/scenarios/dubbo-scenario/pom.xml +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/pom.xml @@ -22,7 +22,7 @@ 4.0.0 org.apache.skywalking - dubbo-scenario + dubbo-2.5.x-scenario 5.0.0 @@ -34,7 +34,7 @@ 2.5.4 - skywalking-dubbo-scenario + skywalking-dubbo-2.5.x-scenario @@ -63,7 +63,7 @@ - dubbo-scenario + dubbo-2.5.x-scenario org.springframework.boot diff --git a/test/plugin/scenarios/dubbo-scenario/src/main/assembly/assembly.xml b/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/assembly/assembly.xml similarity index 95% rename from test/plugin/scenarios/dubbo-scenario/src/main/assembly/assembly.xml rename to test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/assembly/assembly.xml index 56c784fd04..3e45d6da53 100644 --- a/test/plugin/scenarios/dubbo-scenario/src/main/assembly/assembly.xml +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/assembly/assembly.xml @@ -33,9 +33,9 @@ - ./target/dubbo-scenario.jar + ./target/dubbo-2.5.x-scenario.jar ./libs 0775 - + \ No newline at end of file diff --git a/test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java b/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java similarity index 100% rename from test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java rename to test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/Application.java diff --git a/test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/controller/CaseController.java b/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/controller/CaseController.java similarity index 100% rename from test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/controller/CaseController.java rename to test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/controller/CaseController.java diff --git a/test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/GreetService.java b/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/GreetService.java similarity index 100% rename from test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/GreetService.java rename to test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/GreetService.java diff --git a/test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/impl/GreetServiceImpl.java b/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/impl/GreetServiceImpl.java similarity index 100% rename from test/plugin/scenarios/dubbo-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/impl/GreetServiceImpl.java rename to test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/java/org/apache/skywalking/apm/testcase/dubbo/services/impl/GreetServiceImpl.java diff --git a/test/plugin/scenarios/dubbo-scenario/src/main/resources/application.yaml b/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/resources/application.yaml similarity index 95% rename from test/plugin/scenarios/dubbo-scenario/src/main/resources/application.yaml rename to test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/resources/application.yaml index d6eec1fa26..5abf3df5bb 100644 --- a/test/plugin/scenarios/dubbo-scenario/src/main/resources/application.yaml +++ b/test/plugin/scenarios/dubbo-2.5.x-scenario/src/main/resources/application.yaml @@ -17,5 +17,5 @@ server: port: 8080 servlet: - context-path: /dubbo-scenario + context-path: /dubbo-2.5.x-scenario diff --git a/test/plugin/scenarios/dubbo-scenario/support-version.list b/test/plugin/scenarios/dubbo-2.5.x-scenario/support-version.list similarity index 100% rename from test/plugin/scenarios/dubbo-scenario/support-version.list rename to test/plugin/scenarios/dubbo-2.5.x-scenario/support-version.list From 9474f0c2c12e38d7d0fe942af28d6e277a1a5877 Mon Sep 17 00:00:00 2001 From: nisiyong Date: Thu, 17 Nov 2022 08:44:29 +0800 Subject: [PATCH 9/9] Update Supported-list.md --- docs/en/setup/service-agent/java-agent/Supported-list.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/setup/service-agent/java-agent/Supported-list.md b/docs/en/setup/service-agent/java-agent/Supported-list.md index 95bf1af210..0d43e9424e 100644 --- a/docs/en/setup/service-agent/java-agent/Supported-list.md +++ b/docs/en/setup/service-agent/java-agent/Supported-list.md @@ -151,6 +151,7 @@ The meter plugin provides the advanced metrics collections, which are not a part * Thread Pool * [Undertow](https://github.com/undertow-io/undertow) 2.1.x -> 2.6.x * [Tomcat](https://github.com/apache/tomcat) 7.0.x -> 10.0.x + * [Dubbo](https://github.com/apache/dubbo) 2.5.x -> 2.7.x ___ ¹Due to license incompatibilities/restrictions these plugins are hosted and released in 3rd part repository, go to [SkyAPM java plugin extension repository](https://github.com/SkyAPM/java-plugin-extensions) to get these.