This is an automated email from the ASF dual-hosted git repository.

zhaojinchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new f52f4846ce4 Add plugin type in advice (#23619)
f52f4846ce4 is described below

commit f52f4846ce4cdce734dd79dcad1f94e1c50d408d
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Jan 18 03:34:36 2023 +0800

    Add plugin type in advice (#23619)
    
    * Add plugin type on MethodAdvisorConfiguration
    
    * Add plugin type in advice
---
 .../agent/api/advice/type/ConstructorAdvice.java   |  3 +-
 .../api/advice/type/InstanceMethodAdvice.java      |  9 +++--
 .../agent/api/advice/type/StaticMethodAdvice.java  |  9 +++--
 .../advisor/executor/AdviceExecutorFactory.java    | 40 ++++++++++++++++------
 .../executor/type/ConstructorAdviceExecutor.java   | 12 ++++---
 .../type/InstanceMethodAdviceExecutor.java         | 23 +++++++++----
 .../executor/type/StaticMethodAdviceExecutor.java  | 24 ++++++++-----
 .../config/yaml/fixture/YamlAdviceFixture.java     | 14 ++++----
 .../shardingsphere/fixture/advice/BarAdvice.java   | 14 ++++----
 .../shardingsphere/fixture/advice/FooAdvice.java   | 14 ++++----
 .../file/advice/MetaDataContextsFactoryAdvice.java |  4 +--
 .../core/advice/RouteResultCountAdvice.java        |  2 +-
 .../metrics/core/advice/SQLParseCountAdvice.java   |  2 +-
 .../metrics/core/advice/SQLRouteCountAdvice.java   |  2 +-
 .../proxy/CommitTransactionsCountAdvice.java       |  2 +-
 .../proxy/CurrentConnectionsCountAdvice.java       |  2 +-
 .../advice/proxy/ExecuteErrorsCountAdvice.java     |  2 +-
 .../proxy/ExecuteLatencyHistogramAdvice.java       |  4 +--
 .../core/advice/proxy/RequestsCountAdvice.java     |  2 +-
 .../proxy/RollbackTransactionsCountAdvice.java     |  2 +-
 .../core/advice/RouteResultCountAdviceTest.java    |  2 +-
 .../core/advice/SQLParseCountAdviceTest.java       |  2 +-
 .../core/advice/SQLRouteCountAdviceTest.java       |  2 +-
 .../proxy/CommitTransactionsCountAdviceTest.java   |  2 +-
 .../proxy/CurrentConnectionsCountAdviceTest.java   |  6 ++--
 .../advice/proxy/ExecuteErrorsCountAdviceTest.java |  2 +-
 .../proxy/ExecuteLatencyHistogramAdviceTest.java   |  4 +--
 .../core/advice/proxy/RequestsCountAdviceTest.java |  2 +-
 .../proxy/RollbackTransactionsCountAdviceTest.java |  2 +-
 .../jaeger/advice/CommandExecutorTaskAdvice.java   |  6 ++--
 .../jaeger/advice/JDBCExecutorCallbackAdvice.java  |  6 ++--
 .../jaeger/advice/SQLParserEngineAdvice.java       |  6 ++--
 .../advice/CommandExecutorTaskAdviceTest.java      | 10 +++---
 .../advice/JDBCExecutorCallbackAdviceTest.java     | 10 +++---
 .../jaeger/advice/SQLParserEngineAdviceTest.java   | 10 +++---
 .../advice/CommandExecutorTaskAdvice.java          |  6 ++--
 .../advice/JDBCExecutorCallbackAdvice.java         |  9 ++---
 .../advice/SQLParserEngineAdvice.java              |  6 ++--
 .../advice/CommandExecutorTaskAdviceTest.java      | 10 +++---
 .../advice/JDBCExecutorCallbackAdviceTest.java     | 10 +++---
 .../advice/SQLParserEngineAdviceTest.java          | 10 +++---
 .../advice/CommandExecutorTaskAdvice.java          |  6 ++--
 .../advice/JDBCExecutorCallbackAdvice.java         |  6 ++--
 .../opentracing/advice/SQLParserEngineAdvice.java  |  6 ++--
 .../advice/CommandExecutorTaskAdviceTest.java      | 10 +++---
 .../advice/JDBCExecutorCallbackAdviceTest.java     | 10 +++---
 .../advice/SQLParserEngineAdviceTest.java          | 10 +++---
 .../zipkin/advice/CommandExecutorTaskAdvice.java   |  6 ++--
 .../zipkin/advice/JDBCExecutorCallbackAdvice.java  |  6 ++--
 .../zipkin/advice/SQLParserEngineAdvice.java       |  6 ++--
 .../advice/CommandExecutorTaskAdviceTest.java      | 10 +++---
 .../advice/JDBCExecutorCallbackAdviceTest.java     | 10 +++---
 .../zipkin/advice/SQLParserEngineAdviceTest.java   | 10 +++---
 53 files changed, 226 insertions(+), 179 deletions(-)

diff --git 
a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/ConstructorAdvice.java
 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/ConstructorAdvice.java
index dcb22b7df85..8d8b4c3ca1b 100644
--- 
a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/ConstructorAdvice.java
+++ 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/ConstructorAdvice.java
@@ -31,6 +31,7 @@ public interface ConstructorAdvice extends AgentAdvice {
      *
      * @param target intercepted target object
      * @param args all arguments of the intercepted constructor
+     * @param pluginType plugin type
      */
-    void onConstructor(TargetAdviceObject target, Object[] args);
+    void onConstructor(TargetAdviceObject target, Object[] args, String 
pluginType);
 }
diff --git 
a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/InstanceMethodAdvice.java
 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/InstanceMethodAdvice.java
index efbaed5a503..9bd880a9f14 100644
--- 
a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/InstanceMethodAdvice.java
+++ 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/InstanceMethodAdvice.java
@@ -34,8 +34,9 @@ public interface InstanceMethodAdvice extends AgentAdvice {
      * @param target the target object
      * @param method the target method
      * @param args all method arguments
+     * @param pluginType plugin type
      */
-    default void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    default void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, String pluginType) {
     }
     
     /**
@@ -46,8 +47,9 @@ public interface InstanceMethodAdvice extends AgentAdvice {
      * @param method the target method
      * @param args all method arguments
      * @param result original call result
+     * @param pluginType plugin type
      */
-    default void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    default void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, String pluginType) {
     }
     
     /**
@@ -57,7 +59,8 @@ public interface InstanceMethodAdvice extends AgentAdvice {
      * @param method the target method
      * @param args all method arguments
      * @param throwable exception from target method
+     * @param pluginType plugin type
      */
-    default void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    default void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, String pluginType) {
     }
 }
diff --git 
a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/StaticMethodAdvice.java
 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/StaticMethodAdvice.java
index 26d9b35d23a..5b0c6c25d2b 100644
--- 
a/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/StaticMethodAdvice.java
+++ 
b/agent/api/src/main/java/org/apache/shardingsphere/agent/api/advice/type/StaticMethodAdvice.java
@@ -33,8 +33,9 @@ public interface StaticMethodAdvice extends AgentAdvice {
      * @param clazz the target class
      * @param method the target method
      * @param args all method arguments
+     * @param pluginType plugin type
      */
-    default void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args) {
+    default void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args, String pluginType) {
     }
     
     /**
@@ -45,8 +46,9 @@ public interface StaticMethodAdvice extends AgentAdvice {
      * @param method the target method
      * @param args all method arguments
      * @param result original call result
+     * @param pluginType plugin type
      */
-    default void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result) {
+    default void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result, String pluginType) {
     }
     
     /**
@@ -56,7 +58,8 @@ public interface StaticMethodAdvice extends AgentAdvice {
      * @param method the target method
      * @param args all method arguments
      * @param throwable exception from target method
+     * @param pluginType plugin type
      */
-    default void onThrowing(final Class<?> clazz, final Method method, final 
Object[] args, final Throwable throwable) {
+    default void onThrowing(final Class<?> clazz, final Method method, final 
Object[] args, final Throwable throwable, String pluginType) {
     }
 }
diff --git 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/AdviceExecutorFactory.java
 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/AdviceExecutorFactory.java
index 10f247e59e4..cceed737468 100644
--- 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/AdviceExecutorFactory.java
+++ 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/AdviceExecutorFactory.java
@@ -19,18 +19,19 @@ package 
org.apache.shardingsphere.agent.core.advisor.executor;
 
 import net.bytebuddy.description.method.MethodDescription.InDefinedShape;
 import org.apache.shardingsphere.agent.api.advice.AgentAdvice;
-import org.apache.shardingsphere.agent.api.advice.type.ConstructorAdvice;
-import org.apache.shardingsphere.agent.api.advice.type.InstanceMethodAdvice;
-import org.apache.shardingsphere.agent.api.advice.type.StaticMethodAdvice;
+import 
org.apache.shardingsphere.agent.core.advisor.config.AdvisorConfiguration;
+import 
org.apache.shardingsphere.agent.core.advisor.config.MethodAdvisorConfiguration;
 import 
org.apache.shardingsphere.agent.core.advisor.executor.type.ConstructorAdviceExecutor;
+import 
org.apache.shardingsphere.agent.core.advisor.executor.type.InstanceMethodAdviceExecutor;
 import 
org.apache.shardingsphere.agent.core.advisor.executor.type.StaticMethodAdviceExecutor;
 import org.apache.shardingsphere.agent.core.classloader.ClassLoaderContext;
-import 
org.apache.shardingsphere.agent.core.advisor.config.AdvisorConfiguration;
-import 
org.apache.shardingsphere.agent.core.advisor.executor.type.InstanceMethodAdviceExecutor;
 
 import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Optional;
-import java.util.stream.Collectors;
 
 /**
  * Advice executor factory.
@@ -53,16 +54,21 @@ public final class AdviceExecutorFactory {
      * @return found advice executor
      */
     public Optional<AdviceExecutor> findMatchedAdviceExecutor(final 
InDefinedShape methodDescription) {
-        Collection<AgentAdvice> advices = advisorConfig.getAdvisors().stream()
-                .filter(each -> 
each.getPointcut().matches(methodDescription)).map(each -> 
adviceFactory.getAdvice(each.getAdviceClassName())).collect(Collectors.toList());
+        Map<String, Collection<AgentAdvice>> advices = new HashMap<>();
+        for (MethodAdvisorConfiguration each : advisorConfig.getAdvisors()) {
+            if (each.getPointcut().matches(methodDescription)) {
+                advices.computeIfAbsent(each.getPluginType(), key -> new 
LinkedList<>());
+                
advices.get(each.getPluginType()).add(adviceFactory.getAdvice(each.getAdviceClassName()));
+            }
+        }
         if (isConstructor(methodDescription)) {
-            return Optional.of(new 
ConstructorAdviceExecutor(advices.stream().map(each -> (ConstructorAdvice) 
each).collect(Collectors.toList())));
+            return Optional.of(new 
ConstructorAdviceExecutor(convert(advices)));
         }
         if (isStaticMethod(methodDescription)) {
-            return Optional.of(new 
StaticMethodAdviceExecutor(advices.stream().map(each -> (StaticMethodAdvice) 
each).collect(Collectors.toList())));
+            return Optional.of(new 
StaticMethodAdviceExecutor(convert(advices)));
         }
         if (isMethod(methodDescription)) {
-            return Optional.of(new 
InstanceMethodAdviceExecutor(advices.stream().map(each -> 
(InstanceMethodAdvice) each).collect(Collectors.toList())));
+            return Optional.of(new 
InstanceMethodAdviceExecutor(convert(advices)));
         }
         return Optional.empty();
     }
@@ -78,4 +84,16 @@ public final class AdviceExecutorFactory {
     private boolean isMethod(final InDefinedShape methodDescription) {
         return !(methodDescription.isAbstract() || 
methodDescription.isSynthetic());
     }
+    
+    @SuppressWarnings("unchecked")
+    private <T extends AgentAdvice> Map<String, Collection<T>> convert(final 
Map<String, Collection<AgentAdvice>> advices) {
+        Map<String, Collection<T>> result = new HashMap<>();
+        for (Entry<String, Collection<AgentAdvice>> entry : 
advices.entrySet()) {
+            result.put(entry.getKey(), new LinkedList<>());
+            for (AgentAdvice each : entry.getValue()) {
+                result.get(entry.getKey()).add((T) each);
+            }
+        }
+        return result;
+    }
 }
diff --git 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/ConstructorAdviceExecutor.java
 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/ConstructorAdviceExecutor.java
index 5265a9cb042..543c4efc56d 100644
--- 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/ConstructorAdviceExecutor.java
+++ 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/ConstructorAdviceExecutor.java
@@ -28,12 +28,14 @@ import net.bytebuddy.implementation.bind.annotation.This;
 import net.bytebuddy.matcher.ElementMatchers;
 import org.apache.shardingsphere.agent.api.advice.TargetAdviceObject;
 import org.apache.shardingsphere.agent.api.advice.type.ConstructorAdvice;
+import org.apache.shardingsphere.agent.core.advisor.executor.AdviceExecutor;
 import org.apache.shardingsphere.agent.core.log.LoggerFactory;
 import org.apache.shardingsphere.agent.core.log.LoggerFactory.Logger;
 import org.apache.shardingsphere.agent.core.plugin.PluginContext;
-import org.apache.shardingsphere.agent.core.advisor.executor.AdviceExecutor;
 
 import java.util.Collection;
+import java.util.Map;
+import java.util.Map.Entry;
 
 /**
  * Constructor advice executor.
@@ -43,7 +45,7 @@ public final class ConstructorAdviceExecutor implements 
AdviceExecutor {
     
     private static final Logger LOGGER = 
LoggerFactory.getLogger(ConstructorAdviceExecutor.class);
     
-    private final Collection<ConstructorAdvice> advices;
+    private final Map<String, Collection<ConstructorAdvice>> advices;
     
     /**
      * Advice constructor.
@@ -56,8 +58,10 @@ public final class ConstructorAdviceExecutor implements 
AdviceExecutor {
         boolean adviceEnabled = PluginContext.isPluginEnabled();
         try {
             if (adviceEnabled) {
-                for (ConstructorAdvice each : advices) {
-                    each.onConstructor(target, args);
+                for (Entry<String, Collection<ConstructorAdvice>> entry : 
advices.entrySet()) {
+                    for (ConstructorAdvice each : entry.getValue()) {
+                        each.onConstructor(target, args, entry.getKey());
+                    }
                 }
             }
             // CHECKSTYLE:OFF
diff --git 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/InstanceMethodAdviceExecutor.java
 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/InstanceMethodAdviceExecutor.java
index b0e354b0373..4497e31a96f 100644
--- 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/InstanceMethodAdviceExecutor.java
+++ 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/InstanceMethodAdviceExecutor.java
@@ -37,6 +37,8 @@ import 
org.apache.shardingsphere.agent.core.plugin.PluginContext;
 
 import java.lang.reflect.Method;
 import java.util.Collection;
+import java.util.Map;
+import java.util.Map.Entry;
 import java.util.concurrent.Callable;
 
 /**
@@ -47,7 +49,7 @@ public final class InstanceMethodAdviceExecutor implements 
AdviceExecutor {
     
     private static final Logger LOGGER = 
LoggerFactory.getLogger(InstanceMethodAdviceExecutor.class);
     
-    private final Collection<InstanceMethodAdvice> advices;
+    private final Map<String, Collection<InstanceMethodAdvice>> advices;
     
     /**
      * Advice instance method.
@@ -85,8 +87,10 @@ public final class InstanceMethodAdviceExecutor implements 
AdviceExecutor {
     
     private void adviceBefore(final TargetAdviceObject target, final Method 
method, final Object[] args) {
         try {
-            for (InstanceMethodAdvice each : advices) {
-                each.beforeMethod(target, method, args);
+            for (Entry<String, Collection<InstanceMethodAdvice>> entry : 
advices.entrySet()) {
+                for (InstanceMethodAdvice each : entry.getValue()) {
+                    each.beforeMethod(target, method, args, entry.getKey());
+                }
             }
             // CHECKSTYLE:OFF
         } catch (final Throwable ex) {
@@ -97,8 +101,10 @@ public final class InstanceMethodAdviceExecutor implements 
AdviceExecutor {
     
     private void adviceThrow(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable ex) {
         try {
-            for (InstanceMethodAdvice each : advices) {
-                each.onThrowing(target, method, args, ex);
+            for (Entry<String, Collection<InstanceMethodAdvice>> entry : 
advices.entrySet()) {
+                for (InstanceMethodAdvice each : entry.getValue()) {
+                    each.onThrowing(target, method, args, ex, entry.getKey());
+                }
             }
             // CHECKSTYLE:OFF
         } catch (final Throwable ignored) {
@@ -109,8 +115,11 @@ public final class InstanceMethodAdviceExecutor implements 
AdviceExecutor {
     
     private void adviceAfter(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
         try {
-            for (InstanceMethodAdvice each : advices) {
-                each.afterMethod(target, method, args, result);
+            for (Entry<String, Collection<InstanceMethodAdvice>> entry : 
advices.entrySet()) {
+                for (InstanceMethodAdvice each : entry.getValue()) {
+                    each.afterMethod(target, method, args, result, 
entry.getKey());
+                }
+                
             }
             // CHECKSTYLE:OFF
         } catch (final Throwable ex) {
diff --git 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/StaticMethodAdviceExecutor.java
 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/StaticMethodAdviceExecutor.java
index 11a6a40b49a..35f51cff893 100644
--- 
a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/StaticMethodAdviceExecutor.java
+++ 
b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/advisor/executor/type/StaticMethodAdviceExecutor.java
@@ -28,13 +28,15 @@ import 
net.bytebuddy.implementation.bind.annotation.RuntimeType;
 import net.bytebuddy.implementation.bind.annotation.SuperCall;
 import net.bytebuddy.matcher.ElementMatchers;
 import org.apache.shardingsphere.agent.api.advice.type.StaticMethodAdvice;
+import org.apache.shardingsphere.agent.core.advisor.executor.AdviceExecutor;
 import org.apache.shardingsphere.agent.core.log.LoggerFactory;
 import org.apache.shardingsphere.agent.core.log.LoggerFactory.Logger;
 import org.apache.shardingsphere.agent.core.plugin.PluginContext;
-import org.apache.shardingsphere.agent.core.advisor.executor.AdviceExecutor;
 
 import java.lang.reflect.Method;
 import java.util.Collection;
+import java.util.Map;
+import java.util.Map.Entry;
 import java.util.concurrent.Callable;
 
 /**
@@ -45,7 +47,7 @@ public final class StaticMethodAdviceExecutor implements 
AdviceExecutor {
     
     private static final Logger LOGGER = 
LoggerFactory.getLogger(StaticMethodAdviceExecutor.class);
     
-    private final Collection<StaticMethodAdvice> executors;
+    private final Map<String, Collection<StaticMethodAdvice>> advices;
     
     /**
      * Advice static method.
@@ -83,8 +85,10 @@ public final class StaticMethodAdviceExecutor implements 
AdviceExecutor {
     
     private void adviceBefore(final Class<?> klass, final Method method, final 
Object[] args) {
         try {
-            for (StaticMethodAdvice each : executors) {
-                each.beforeMethod(klass, method, args);
+            for (Entry<String, Collection<StaticMethodAdvice>> entry : 
advices.entrySet()) {
+                for (StaticMethodAdvice each : entry.getValue()) {
+                    each.beforeMethod(klass, method, args, entry.getKey());
+                }
             }
             // CHECKSTYLE:OFF
         } catch (final Throwable ex) {
@@ -95,8 +99,10 @@ public final class StaticMethodAdviceExecutor implements 
AdviceExecutor {
     
     private void adviceThrow(final Class<?> klass, final Method method, final 
Object[] args, final Throwable ex) {
         try {
-            for (StaticMethodAdvice each : executors) {
-                each.onThrowing(klass, method, args, ex);
+            for (Entry<String, Collection<StaticMethodAdvice>> entry : 
advices.entrySet()) {
+                for (StaticMethodAdvice each : entry.getValue()) {
+                    each.onThrowing(klass, method, args, ex, entry.getKey());
+                }
             }
             // CHECKSTYLE:OFF
         } catch (final Throwable ignored) {
@@ -107,8 +113,10 @@ public final class StaticMethodAdviceExecutor implements 
AdviceExecutor {
     
     private void adviceAfter(final Class<?> klass, final Method method, final 
Object[] args, final Object result) {
         try {
-            for (StaticMethodAdvice each : executors) {
-                each.afterMethod(klass, method, args, result);
+            for (Entry<String, Collection<StaticMethodAdvice>> entry : 
advices.entrySet()) {
+                for (StaticMethodAdvice each : entry.getValue()) {
+                    each.afterMethod(klass, method, args, result, 
entry.getKey());
+                }
             }
             // CHECKSTYLE:OFF
         } catch (final Throwable ex) {
diff --git 
a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/advisor/config/yaml/fixture/YamlAdviceFixture.java
 
b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/advisor/config/yaml/fixture/YamlAdviceFixture.java
index f804c7d1b6c..292d2ed724d 100644
--- 
a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/advisor/config/yaml/fixture/YamlAdviceFixture.java
+++ 
b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/advisor/config/yaml/fixture/YamlAdviceFixture.java
@@ -27,30 +27,30 @@ import java.lang.reflect.Method;
 public final class YamlAdviceFixture implements ConstructorAdvice, 
InstanceMethodAdvice, StaticMethodAdvice {
     
     @Override
-    public void onConstructor(final TargetAdviceObject target, final Object[] 
args) {
+    public void onConstructor(final TargetAdviceObject target, final Object[] 
args, final String pluginType) {
     }
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
     }
     
     @Override
-    public void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args) {
+    public void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args, final String pluginType) {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
     }
     
     @Override
-    public void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result) {
+    public void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result, final String pluginType) {
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
     }
     
     @Override
-    public void onThrowing(final Class<?> clazz, final Method method, final 
Object[] args, final Throwable throwable) {
+    public void onThrowing(final Class<?> clazz, final Method method, final 
Object[] args, final Throwable throwable, final String pluginType) {
     }
 }
diff --git 
a/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/BarAdvice.java
 
b/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/BarAdvice.java
index bd74dc37427..87cbf574d7a 100644
--- 
a/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/BarAdvice.java
+++ 
b/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/BarAdvice.java
@@ -29,42 +29,42 @@ import java.util.List;
 public final class BarAdvice implements ConstructorAdvice, 
InstanceMethodAdvice, StaticMethodAdvice {
     
     @Override
-    public void onConstructor(final TargetAdviceObject target, final Object[] 
args) {
+    public void onConstructor(final TargetAdviceObject target, final Object[] 
args, final String pluginType) {
         ((List<String>) args[0]).add("bar constructor");
     }
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar before instance method");
     }
     
     @Override
-    public void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args) {
+    public void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar before static method");
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar after instance method");
     }
     
     @Override
-    public void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result) {
+    public void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar after static method");
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar throw instance method exception");
     }
     
     @Override
-    public void onThrowing(final Class<?> clazz, final Method method, final 
Object[] args, final Throwable throwable) {
+    public void onThrowing(final Class<?> clazz, final Method method, final 
Object[] args, final Throwable throwable, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("bar throw static method exception");
     }
diff --git 
a/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/FooAdvice.java
 
b/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/FooAdvice.java
index f29271a872a..04baee22f7f 100644
--- 
a/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/FooAdvice.java
+++ 
b/agent/core/src/test/java/org/apache/shardingsphere/fixture/advice/FooAdvice.java
@@ -29,42 +29,42 @@ import java.util.List;
 public final class FooAdvice implements ConstructorAdvice, 
InstanceMethodAdvice, StaticMethodAdvice {
     
     @Override
-    public void onConstructor(final TargetAdviceObject target, final Object[] 
args) {
+    public void onConstructor(final TargetAdviceObject target, final Object[] 
args, final String pluginType) {
         ((List<String>) args[0]).add("foo constructor");
     }
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo before instance method");
     }
     
     @Override
-    public void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args) {
+    public void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo before static method");
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo after instance method");
     }
     
     @Override
-    public void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result) {
+    public void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo after static method");
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo throw instance method exception");
     }
     
     @Override
-    public void onThrowing(final Class<?> clazz, final Method method, final 
Object[] args, final Throwable throwable) {
+    public void onThrowing(final Class<?> clazz, final Method method, final 
Object[] args, final Throwable throwable, final String pluginType) {
         List<String> queue = (List<String>) args[0];
         queue.add("foo throw static method exception");
     }
diff --git 
a/agent/plugins/logging/type/file/src/main/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdvice.java
 
b/agent/plugins/logging/type/file/src/main/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdvice.java
index da0004eabbd..c0ef497ec14 100644
--- 
a/agent/plugins/logging/type/file/src/main/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdvice.java
+++ 
b/agent/plugins/logging/type/file/src/main/java/org/apache/shardingsphere/agent/plugin/logging/file/advice/MetaDataContextsFactoryAdvice.java
@@ -32,12 +32,12 @@ public final class MetaDataContextsFactoryAdvice implements 
StaticMethodAdvice {
     private final MethodTimeRecorder methodTimeRecorder = new 
MethodTimeRecorder(MetaDataContextsFactoryAdvice.class);
     
     @Override
-    public void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args) {
+    public void beforeMethod(final Class<?> clazz, final Method method, final 
Object[] args, final String pluginType) {
         methodTimeRecorder.record(method);
     }
     
     @Override
-    public void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result) {
+    public void afterMethod(final Class<?> clazz, final Method method, final 
Object[] args, final Object result, final String pluginType) {
         log.info("Build meta data contexts finished, cost {} milliseconds.", 
methodTimeRecorder.getElapsedTimeAndClean(method));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
index dbc83bae331..bdb9e9429fc 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdvice.java
@@ -37,7 +37,7 @@ public final class RouteResultCountAdvice implements 
InstanceMethodAdvice {
     private static final String ROUTED_TABLES_METRIC_KEY = 
"routed_tables_total";
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         if (null == result) {
             return;
         }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdvice.java
index bd9bc63e9f7..e56565d0a3a 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdvice.java
@@ -67,7 +67,7 @@ public final class SQLParseCountAdvice implements 
InstanceMethodAdvice {
     private static final String PARSED_RUL_METRIC_KEY = "parsed_rul_total";
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         SQLStatement sqlStatement = (SQLStatement) result;
         countSQL(sqlStatement);
         countDistSQL(sqlStatement);
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdvice.java
index 88add124e2f..a60df1c32b4 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdvice.java
@@ -44,7 +44,7 @@ public final class SQLRouteCountAdvice implements 
InstanceMethodAdvice {
     private static final String ROUTED_SELECT_SQL_METRIC_KEY = 
"routed_select_sql_total";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         QueryContext queryContext = (QueryContext) args[1];
         SQLStatement sqlStatement = 
queryContext.getSqlStatementContext().getSqlStatement();
         if (sqlStatement instanceof InsertStatement) {
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdvice.java
index 61adb4aaee4..3eb84683a42 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdvice.java
@@ -32,7 +32,7 @@ public final class CommitTransactionsCountAdvice implements 
InstanceMethodAdvice
     private static final String PROXY_COMMIT_TRANSACTIONS_METRIC_KEY = 
"proxy_commit_transactions_total";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         
MetricsCollectorRegistry.<CounterMetricsCollector>get(PROXY_COMMIT_TRANSACTIONS_METRIC_KEY).inc();
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdvice.java
index 883c11a90e3..e7360d94f86 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdvice.java
@@ -32,7 +32,7 @@ public final class CurrentConnectionsCountAdvice implements 
InstanceMethodAdvice
     private static final String PROXY_CURRENT_CONNECTIONS_METRIC_KEY = 
"proxy_current_connections";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         switch (method.getName()) {
             case "channelActive":
                 
MetricsCollectorRegistry.<GaugeMetricsCollector>get(PROXY_CURRENT_CONNECTIONS_METRIC_KEY).inc();
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdvice.java
index 61cb73a6b6d..35716d62eda 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdvice.java
@@ -32,7 +32,7 @@ public final class ExecuteErrorsCountAdvice implements 
InstanceMethodAdvice {
     private static final String PROXY_EXECUTE_ERRORS_METRIC_KEY = 
"proxy_execute_errors_total";
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         
MetricsCollectorRegistry.<CounterMetricsCollector>get(PROXY_EXECUTE_ERRORS_METRIC_KEY).inc();
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdvice.java
index 4a09f47c16b..ddb56aa255d 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdvice.java
@@ -35,12 +35,12 @@ public final class ExecuteLatencyHistogramAdvice implements 
InstanceMethodAdvice
     private final MethodTimeRecorder methodTimeRecorder = new 
MethodTimeRecorder(ExecuteLatencyHistogramAdvice.class);
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         methodTimeRecorder.record(method);
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         
MetricsCollectorRegistry.<HistogramMetricsCollector>get(PROXY_EXECUTE_LATENCY_MILLIS_METRIC_KEY).observe(methodTimeRecorder.getElapsedTimeAndClean(method));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdvice.java
index 19fe44fe745..56f91c4b3d0 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdvice.java
@@ -32,7 +32,7 @@ public final class RequestsCountAdvice implements 
InstanceMethodAdvice {
     private static final String PROXY_REQUESTS_METRIC_KEY = 
"proxy_requests_total";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         
MetricsCollectorRegistry.<CounterMetricsCollector>get(PROXY_REQUESTS_METRIC_KEY).inc();
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdvice.java
 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdvice.java
index 2dd4d291c1e..13dec9c463e 100644
--- 
a/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdvice.java
+++ 
b/agent/plugins/metrics/core/src/main/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdvice.java
@@ -32,7 +32,7 @@ public final class RollbackTransactionsCountAdvice implements 
InstanceMethodAdvi
     private static final String PROXY_ROLLBACK_TRANSACTIONS_METRIC_KEY = 
"proxy_rollback_transactions_total";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         
MetricsCollectorRegistry.<CounterMetricsCollector>get(PROXY_ROLLBACK_TRANSACTIONS_METRIC_KEY).inc();
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
index 29a58f09115..3ed3015d66a 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/RouteResultCountAdviceTest.java
@@ -46,7 +46,7 @@ public final class RouteResultCountAdviceTest extends 
MetricsAdviceBaseTest {
         RouteMapper dataSourceMapper = new RouteMapper("logic_db", "ds_0");
         RouteMapper tableMapper = new RouteMapper("t_order", "t_order_0");
         routeContext.getRouteUnits().add(new RouteUnit(dataSourceMapper, 
Collections.singleton(tableMapper)));
-        new RouteResultCountAdvice().afterMethod(new MockTargetAdviceObject(), 
mock(Method.class), new Object[]{}, routeContext);
+        new RouteResultCountAdvice().afterMethod(new MockTargetAdviceObject(), 
mock(Method.class), new Object[]{}, routeContext, "FIXTURE");
         MetricsCollectorFixture wrapper = 
MetricsCollectorRegistry.get("routed_data_sources_total");
         assertThat(wrapper.getValue(), is(1d));
         wrapper = MetricsCollectorRegistry.get("routed_tables_total");
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
index 7629142874f..8bf61e3e6c2 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLParseCountAdviceTest.java
@@ -122,7 +122,7 @@ public final class SQLParseCountAdviceTest extends 
MetricsAdviceBaseTest {
     }
     
     private void assertParse(final String metricIds, final SQLStatement 
sqlStatement) {
-        new SQLParseCountAdvice().afterMethod(new MockTargetAdviceObject(), 
mock(Method.class), new Object[]{}, sqlStatement);
+        new SQLParseCountAdvice().afterMethod(new MockTargetAdviceObject(), 
mock(Method.class), new Object[]{}, sqlStatement, "FIXTURE");
         assertThat(((MetricsCollectorFixture) 
MetricsCollectorRegistry.get(metricIds)).getValue(), is(1d));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
index 2f81a28f7d8..a2c37548ce8 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
@@ -73,7 +73,7 @@ public final class SQLRouteCountAdviceTest extends 
MetricsAdviceBaseTest {
     }
     
     public void assertRoute(final String metricId, final QueryContext 
queryContext) {
-        advice.beforeMethod(new MockTargetAdviceObject(), mock(Method.class), 
new Object[]{new ConnectionContext(), queryContext});
+        advice.beforeMethod(new MockTargetAdviceObject(), mock(Method.class), 
new Object[]{new ConnectionContext(), queryContext}, "FIXTURE");
         assertThat(((MetricsCollectorFixture) 
MetricsCollectorRegistry.get(metricId)).getValue(), is(1d));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
index 6dd7af02a56..53aab8a874d 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CommitTransactionsCountAdviceTest.java
@@ -43,7 +43,7 @@ public final class CommitTransactionsCountAdviceTest extends 
MetricsAdviceBaseTe
     
     @Test
     public void assertMethod() {
-        advice.beforeMethod(new MockTargetAdviceObject(), mock(Method.class), 
new Object[]{});
+        advice.beforeMethod(new MockTargetAdviceObject(), mock(Method.class), 
new Object[]{}, "FIXTURE");
         assertThat(((MetricsCollectorFixture) 
MetricsCollectorRegistry.get(PROXY_COMMIT_TRANSACTIONS_METRIC_KEY)).getValue(), 
is(1D));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
index bf87d1ede68..d7488f881fb 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/CurrentConnectionsCountAdviceTest.java
@@ -43,9 +43,9 @@ public final class CurrentConnectionsCountAdviceTest extends 
MetricsAdviceBaseTe
     @Test
     public void assertCountCurrentConnections() {
         MockTargetAdviceObject targetObject = new MockTargetAdviceObject();
-        advice.beforeMethod(targetObject, mockMethod("channelActive"), new 
Object[]{});
-        advice.beforeMethod(targetObject, mockMethod("channelActive"), new 
Object[]{});
-        advice.beforeMethod(targetObject, mockMethod("channelInactive"), new 
Object[]{});
+        advice.beforeMethod(targetObject, mockMethod("channelActive"), new 
Object[]{}, "FIXTURE");
+        advice.beforeMethod(targetObject, mockMethod("channelActive"), new 
Object[]{}, "FIXTURE");
+        advice.beforeMethod(targetObject, mockMethod("channelInactive"), new 
Object[]{}, "FIXTURE");
         assertThat(((MetricsCollectorFixture) 
MetricsCollectorRegistry.get("proxy_current_connections")).getValue(), is(1d));
     }
     
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
index 4795ce424b2..0e81153d5e4 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteErrorsCountAdviceTest.java
@@ -40,7 +40,7 @@ public final class ExecuteErrorsCountAdviceTest extends 
MetricsAdviceBaseTest {
     @Test
     public void assertCountExecuteErrors() {
         MockTargetAdviceObject targetObject = new MockTargetAdviceObject();
-        new ExecuteErrorsCountAdvice().afterMethod(targetObject, 
mock(Method.class), new Object[]{}, null);
+        new ExecuteErrorsCountAdvice().afterMethod(targetObject, 
mock(Method.class), new Object[]{}, null, "FIXTURE");
         assertThat(((MetricsCollectorFixture) 
MetricsCollectorRegistry.get("proxy_execute_errors_total")).getValue(), is(1d));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
index 9aea4911f41..fb3897dd64d 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/ExecuteLatencyHistogramAdviceTest.java
@@ -42,9 +42,9 @@ public final class ExecuteLatencyHistogramAdviceTest extends 
MetricsAdviceBaseTe
         ExecuteLatencyHistogramAdvice advice = new 
ExecuteLatencyHistogramAdvice();
         MockTargetAdviceObject targetObject = new MockTargetAdviceObject();
         Method method = mock(Method.class);
-        advice.beforeMethod(targetObject, method, new Object[]{});
+        advice.beforeMethod(targetObject, method, new Object[]{}, "FIXTURE");
         Thread.sleep(500L);
-        advice.afterMethod(targetObject, method, new Object[]{}, null);
+        advice.afterMethod(targetObject, method, new Object[]{}, null, 
"FIXTURE");
         assertThat(((MetricsCollectorFixture) 
MetricsCollectorRegistry.get("proxy_execute_latency_millis")).getValue(), 
greaterThanOrEqualTo(500D));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
index f752e8dd9be..f9d655e2961 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RequestsCountAdviceTest.java
@@ -42,7 +42,7 @@ public final class RequestsCountAdviceTest extends 
MetricsAdviceBaseTest {
     @Test
     public void assertCountRequests() {
         MockTargetAdviceObject targetObject = new MockTargetAdviceObject();
-        advice.beforeMethod(targetObject, mock(Method.class), new Object[]{});
+        advice.beforeMethod(targetObject, mock(Method.class), new Object[]{}, 
"FIXTURE");
         assertThat(((MetricsCollectorFixture) 
MetricsCollectorRegistry.get("proxy_requests_total")).getValue(), is(1d));
     }
 }
diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
index 8b55e26b1ab..e3a5dfabead 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/proxy/RollbackTransactionsCountAdviceTest.java
@@ -41,7 +41,7 @@ public final class RollbackTransactionsCountAdviceTest 
extends MetricsAdviceBase
     
     @Test
     public void assertMethod() {
-        advice.beforeMethod(new MockTargetAdviceObject(), mock(Method.class), 
new Object[]{});
+        advice.beforeMethod(new MockTargetAdviceObject(), mock(Method.class), 
new Object[]{}, "FIXTURE");
         assertThat(((MetricsCollectorFixture) 
MetricsCollectorRegistry.get("proxy_rollback_transactions_total")).getValue(), 
is(1D));
     }
 }
diff --git 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdvice.java
 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdvice.java
index f13b8df5522..0a2e1ee5336 100644
--- 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdvice.java
+++ 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdvice.java
@@ -39,7 +39,7 @@ public final class CommandExecutorTaskAdvice implements 
InstanceMethodAdvice {
     private static final String OPERATION_NAME = "/ShardingSphere/rootInvoke/";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         Scope scope = GlobalTracer.get().buildSpan(OPERATION_NAME)
                 .withTag(Tags.COMPONENT.getKey(), 
JaegerConstants.COMPONENT_NAME)
                 .startActive(true);
@@ -47,7 +47,7 @@ public final class CommandExecutorTaskAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         ExecutorDataMap.getValue().remove(JaegerConstants.ROOT_SPAN);
         BackendConnection connection = 
AgentReflectionUtil.<ConnectionSession>getFieldValue(target, 
"connectionSession").getBackendConnection();
         Scope scope = GlobalTracer.get().scopeManager().active();
@@ -56,7 +56,7 @@ public final class CommandExecutorTaskAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         JaegerErrorSpan.setError(GlobalTracer.get().activeSpan(), throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdvice.java
 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdvice.java
index 97390597ddf..4e454370f6a 100644
--- 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdvice.java
+++ 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdvice.java
@@ -48,7 +48,7 @@ public final class JDBCExecutorCallbackAdvice implements 
InstanceMethodAdvice {
     @Override
     @SneakyThrows({ReflectiveOperationException.class, SQLException.class})
     @SuppressWarnings("unchecked")
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         Span rootSpan = (Span) ((Map<String, Object>) 
args[2]).get(JaegerConstants.ROOT_SPAN);
         Tracer.SpanBuilder builder = 
GlobalTracer.get().buildSpan(OPERATION_NAME);
         if (null != rootSpan) {
@@ -71,12 +71,12 @@ public final class JDBCExecutorCallbackAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         ((Scope) target.getAttachment()).close();
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         JaegerErrorSpan.setError(GlobalTracer.get().activeSpan(), throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/SQLParserEngineAdvice.java
 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/SQLParserEngineAdvice.java
index e59335fcf3a..01f3ec23c77 100644
--- 
a/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/SQLParserEngineAdvice.java
+++ 
b/agent/plugins/tracing/type/jaeger/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/SQLParserEngineAdvice.java
@@ -35,7 +35,7 @@ public final class SQLParserEngineAdvice implements 
InstanceMethodAdvice {
     private static final String OPERATION_NAME = "/ShardingSphere/parseSQL/";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         Scope scope = GlobalTracer.get().buildSpan(OPERATION_NAME)
                 .withTag(Tags.COMPONENT.getKey(), 
JaegerConstants.COMPONENT_NAME)
                 .withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT)
@@ -45,12 +45,12 @@ public final class SQLParserEngineAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         ((Scope) target.getAttachment()).close();
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         JaegerErrorSpan.setError(GlobalTracer.get().activeSpan(), throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdviceTest.java
 
b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdviceTest.java
index 95db716ff67..baef15b2352 100644
--- 
a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdviceTest.java
+++ 
b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/CommandExecutorTaskAdviceTest.java
@@ -53,8 +53,8 @@ public final class CommandExecutorTaskAdviceTest extends 
AbstractCommandExecutor
     @Test
     public void assertMethod() {
         CommandExecutorTaskAdvice advice = new CommandExecutorTaskAdvice();
-        advice.beforeMethod(getTargetObject(), null, new Object[]{});
-        advice.afterMethod(getTargetObject(), null, new Object[]{}, null);
+        advice.beforeMethod(getTargetObject(), null, new Object[]{}, "Jaeger");
+        advice.afterMethod(getTargetObject(), null, new Object[]{}, null, 
"Jaeger");
         List<MockSpan> spans = COLLECTOR.finishedSpans();
         assertThat(spans.size(), is(1));
         assertTrue(spans.get(0).logEntries().isEmpty());
@@ -65,9 +65,9 @@ public final class CommandExecutorTaskAdviceTest extends 
AbstractCommandExecutor
     @Test
     public void assertExceptionHandle() {
         CommandExecutorTaskAdvice advice = new CommandExecutorTaskAdvice();
-        advice.beforeMethod(getTargetObject(), null, new Object[]{});
-        advice.onThrowing(getTargetObject(), null, new Object[]{}, new 
IOException());
-        advice.afterMethod(getTargetObject(), null, new Object[]{}, null);
+        advice.beforeMethod(getTargetObject(), null, new Object[]{}, "Jaeger");
+        advice.onThrowing(getTargetObject(), null, new Object[]{}, new 
IOException(), "Jaeger");
+        advice.afterMethod(getTargetObject(), null, new Object[]{}, null, 
"Jaeger");
         List<MockSpan> spans = COLLECTOR.finishedSpans();
         assertThat(spans.size(), is(1));
         MockSpan span = spans.get(0);
diff --git 
a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdviceTest.java
 
b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdviceTest.java
index 6fcbc9c7407..3e102d7382b 100644
--- 
a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdviceTest.java
+++ 
b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/JDBCExecutorCallbackAdviceTest.java
@@ -46,8 +46,8 @@ public final class JDBCExecutorCallbackAdviceTest extends 
AbstractJDBCExecutorCa
     @Test
     public void assertMethod() {
         JDBCExecutorCallbackAdvice advice = new JDBCExecutorCallbackAdvice();
-        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()});
-        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null);
+        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, "Jaeger");
+        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null, "Jaeger");
         List<MockSpan> spans = COLLECTOR.finishedSpans();
         assertThat(spans.size(), is(1));
         MockSpan span = spans.get(0);
@@ -63,9 +63,9 @@ public final class JDBCExecutorCallbackAdviceTest extends 
AbstractJDBCExecutorCa
     @Test
     public void assertExceptionHandle() {
         JDBCExecutorCallbackAdvice advice = new JDBCExecutorCallbackAdvice();
-        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()});
-        advice.onThrowing(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, new IOException());
-        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null);
+        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, "Jaeger");
+        advice.onThrowing(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, new IOException(), 
"Jaeger");
+        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null, "Jaeger");
         List<MockSpan> spans = COLLECTOR.finishedSpans();
         assertThat(spans.size(), is(1));
         MockSpan span = spans.get(0);
diff --git 
a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/SQLParserEngineAdviceTest.java
 
b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/SQLParserEngineAdviceTest.java
index 5e558039e68..80d1ab13878 100644
--- 
a/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/SQLParserEngineAdviceTest.java
+++ 
b/agent/plugins/tracing/type/jaeger/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/jaeger/advice/SQLParserEngineAdviceTest.java
@@ -41,8 +41,8 @@ public final class SQLParserEngineAdviceTest extends 
AbstractSQLParserEngineAdvi
     
     @Test
     public void assertMethod() {
-        ADVICE.beforeMethod(getTargetObject(), null, new Object[]{"select 1"});
-        ADVICE.afterMethod(getTargetObject(), null, new Object[]{}, null);
+        ADVICE.beforeMethod(getTargetObject(), null, new Object[]{"select 1"}, 
"Jaeger");
+        ADVICE.afterMethod(getTargetObject(), null, new Object[]{}, null, 
"Jaeger");
         List<MockSpan> spans = COLLECTOR.finishedSpans();
         assertThat(spans.size(), is(1));
         assertTrue(spans.get(0).logEntries().isEmpty());
@@ -51,9 +51,9 @@ public final class SQLParserEngineAdviceTest extends 
AbstractSQLParserEngineAdvi
     
     @Test
     public void assertExceptionHandle() {
-        ADVICE.beforeMethod(getTargetObject(), null, new Object[]{"select 1"});
-        ADVICE.onThrowing(getTargetObject(), null, new Object[]{}, new 
IOException());
-        ADVICE.afterMethod(getTargetObject(), null, new Object[]{}, null);
+        ADVICE.beforeMethod(getTargetObject(), null, new Object[]{"select 1"}, 
"Jaeger");
+        ADVICE.onThrowing(getTargetObject(), null, new Object[]{}, new 
IOException(), "Jaeger");
+        ADVICE.afterMethod(getTargetObject(), null, new Object[]{}, null, 
"Jaeger");
         List<MockSpan> spans = COLLECTOR.finishedSpans();
         assertThat(spans.size(), is(1));
         MockSpan span = spans.get(0);
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/CommandExecutorTaskAdvice.java
 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/CommandExecutorTaskAdvice.java
index c4f9f4d65af..2266fd0e9b5 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/CommandExecutorTaskAdvice.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/CommandExecutorTaskAdvice.java
@@ -37,7 +37,7 @@ public class CommandExecutorTaskAdvice implements 
InstanceMethodAdvice {
     private static final String OPERATION_NAME = "/ShardingSphere/rootInvoke/";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         SpanBuilder spanBuilder = 
GlobalOpenTelemetry.getTracer("shardingsphere-agent")
                 .spanBuilder(OPERATION_NAME)
                 .setAttribute(OpenTelemetryConstants.COMPONENT, 
OpenTelemetryConstants.COMPONENT_NAME)
@@ -48,13 +48,13 @@ public class CommandExecutorTaskAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         ((Span) target.getAttachment()).end();
         ExecutorDataMap.getValue().remove(OpenTelemetryConstants.ROOT_SPAN);
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         ((Span) 
target.getAttachment()).setStatus(StatusCode.ERROR).recordException(throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdvice.java
 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdvice.java
index 6043f259c0f..c86b593d1a3 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdvice.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdvice.java
@@ -35,6 +35,7 @@ import 
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.J
 
 import java.lang.reflect.Method;
 import java.sql.DatabaseMetaData;
+import java.sql.SQLException;
 import java.util.Map;
 
 /**
@@ -45,9 +46,9 @@ public class JDBCExecutorCallbackAdvice implements 
InstanceMethodAdvice {
     private static final String OPERATION_NAME = "/ShardingSphere/executeSQL/";
     
     @Override
-    @SneakyThrows
+    @SneakyThrows({ReflectiveOperationException.class, SQLException.class})
     @SuppressWarnings("unchecked")
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         Span root = (Span) ((Map<String, Object>) 
args[2]).get(OpenTelemetryConstants.ROOT_SPAN);
         Tracer tracer = GlobalOpenTelemetry.getTracer("shardingsphere-agent");
         SpanBuilder spanBuilder = tracer.spanBuilder(OPERATION_NAME);
@@ -69,12 +70,12 @@ public class JDBCExecutorCallbackAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         ((Span) target.getAttachment()).end();
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         ((Span) 
target.getAttachment()).setStatus(StatusCode.ERROR).recordException(throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/SQLParserEngineAdvice.java
 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/SQLParserEngineAdvice.java
index b2bbcc8733e..083488803a4 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/SQLParserEngineAdvice.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/SQLParserEngineAdvice.java
@@ -38,7 +38,7 @@ public class SQLParserEngineAdvice implements 
InstanceMethodAdvice {
     private static final String OPERATION_NAME = "/ShardingSphere/parseSQL/";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         Span root = (Span) 
ExecutorDataMap.getValue().get(OpenTelemetryConstants.ROOT_SPAN);
         Tracer tracer = GlobalOpenTelemetry.getTracer("shardingsphere-agent");
         SpanBuilder spanBuilder = tracer.spanBuilder(OPERATION_NAME)
@@ -52,12 +52,12 @@ public class SQLParserEngineAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         ((Span) target.getAttachment()).end();
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         ((Span) 
target.getAttachment()).setStatus(StatusCode.ERROR).recordException(throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/CommandExecutorTaskAdviceTest.java
 
b/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/CommandExecutorTaskAdviceTest.java
index 5517bcc9573..deb9b104e58 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/CommandExecutorTaskAdviceTest.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/CommandExecutorTaskAdviceTest.java
@@ -41,8 +41,8 @@ public final class CommandExecutorTaskAdviceTest extends 
AbstractCommandExecutor
     @Test
     public void assertMethod() {
         CommandExecutorTaskAdvice advice = new CommandExecutorTaskAdvice();
-        advice.beforeMethod(getTargetObject(), null, new Object[]{});
-        advice.afterMethod(getTargetObject(), null, new Object[]{}, null);
+        advice.beforeMethod(getTargetObject(), null, new Object[]{}, 
"OpenTelemetry");
+        advice.afterMethod(getTargetObject(), null, new Object[]{}, null, 
"OpenTelemetry");
         List<SpanData> spanItems = COLLECTOR.getSpanItems();
         assertThat(spanItems.size(), is(1));
         SpanData spanData = spanItems.get(0);
@@ -54,9 +54,9 @@ public final class CommandExecutorTaskAdviceTest extends 
AbstractCommandExecutor
     @Test
     public void assertExceptionHandle() {
         CommandExecutorTaskAdvice advice = new CommandExecutorTaskAdvice();
-        advice.beforeMethod(getTargetObject(), null, new Object[]{});
-        advice.onThrowing(getTargetObject(), null, new Object[]{}, new 
IOException());
-        advice.afterMethod(getTargetObject(), null, new Object[]{}, null);
+        advice.beforeMethod(getTargetObject(), null, new Object[]{}, 
"OpenTelemetry");
+        advice.onThrowing(getTargetObject(), null, new Object[]{}, new 
IOException(), "OpenTelemetry");
+        advice.afterMethod(getTargetObject(), null, new Object[]{}, null, 
"OpenTelemetry");
         List<SpanData> spanItems = COLLECTOR.getSpanItems();
         assertThat(spanItems.size(), is(1));
         SpanData spanData = spanItems.get(0);
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdviceTest.java
 
b/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdviceTest.java
index f93c03af4be..44b3179c7b9 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdviceTest.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/JDBCExecutorCallbackAdviceTest.java
@@ -41,8 +41,8 @@ public final class JDBCExecutorCallbackAdviceTest extends 
AbstractJDBCExecutorCa
     @Test
     public void assertMethod() {
         JDBCExecutorCallbackAdvice advice = new JDBCExecutorCallbackAdvice();
-        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()});
-        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null);
+        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, "OpenTelemetry");
+        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null, "OpenTelemetry");
         List<SpanData> spanItems = COLLECTOR.getSpanItems();
         assertThat(spanItems.size(), is(1));
         SpanData spanData = spanItems.get(0);
@@ -57,9 +57,9 @@ public final class JDBCExecutorCallbackAdviceTest extends 
AbstractJDBCExecutorCa
     @Test
     public void assertExceptionHandle() {
         JDBCExecutorCallbackAdvice advice = new JDBCExecutorCallbackAdvice();
-        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()});
-        advice.onThrowing(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, new IOException());
-        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null);
+        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, "OpenTelemetry");
+        advice.onThrowing(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, new IOException(), 
"OpenTelemetry");
+        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null, "OpenTelemetry");
         List<SpanData> spanItems = COLLECTOR.getSpanItems();
         assertThat(spanItems.size(), is(1));
         SpanData spanData = spanItems.get(0);
diff --git 
a/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/SQLParserEngineAdviceTest.java
 
b/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/SQLParserEngineAdviceTest.java
index 4e49d4fb9c2..6dab97a5cb5 100644
--- 
a/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/SQLParserEngineAdviceTest.java
+++ 
b/agent/plugins/tracing/type/opentelemetry/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentelemetry/advice/SQLParserEngineAdviceTest.java
@@ -60,8 +60,8 @@ public final class SQLParserEngineAdviceTest extends 
AbstractSQLParserEngineAdvi
     
     @Test
     public void assertMethod() {
-        advice.beforeMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true});
-        advice.afterMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, null);
+        advice.beforeMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, "OpenTelemetry");
+        advice.afterMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, null, "OpenTelemetry");
         parentSpan.end();
         List<SpanData> spanItems = COLLECTOR.getSpanItems();
         assertThat(spanItems.size(), is(2));
@@ -75,9 +75,9 @@ public final class SQLParserEngineAdviceTest extends 
AbstractSQLParserEngineAdvi
     
     @Test
     public void assertExceptionHandle() {
-        advice.beforeMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true});
-        advice.onThrowing(getTargetObject(), null, new Object[]{SQL_STATEMENT, 
true}, new IOException());
-        advice.afterMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, null);
+        advice.beforeMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, "OpenTelemetry");
+        advice.onThrowing(getTargetObject(), null, new Object[]{SQL_STATEMENT, 
true}, new IOException(), "OpenTelemetry");
+        advice.afterMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, null, "OpenTelemetry");
         parentSpan.end();
         List<SpanData> spanItems = COLLECTOR.getSpanItems();
         assertThat(spanItems.size(), is(2));
diff --git 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdvice.java
 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdvice.java
index 5dfb0788d7c..cfe0b72e7b1 100644
--- 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdvice.java
+++ 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdvice.java
@@ -38,7 +38,7 @@ public final class CommandExecutorTaskAdvice implements 
InstanceMethodAdvice {
     private static final String ROOT_SPAN = "ot_root_span_";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         Scope scope = GlobalTracer.get().buildSpan(OPERATION_NAME)
                 .withTag(Tags.COMPONENT.getKey(), 
ShardingSphereTags.COMPONENT_NAME)
                 .startActive(true);
@@ -46,13 +46,13 @@ public final class CommandExecutorTaskAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         GlobalTracer.get().scopeManager().active().close();
         ExecutorDataMap.getValue().remove(ROOT_SPAN);
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         OpenTracingErrorSpan.setError(GlobalTracer.get().activeSpan(), 
throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdvice.java
 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdvice.java
index 51b9c7a0d05..872041c49f4 100644
--- 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdvice.java
+++ 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdvice.java
@@ -41,7 +41,7 @@ public final class JDBCExecutorCallbackAdvice implements 
InstanceMethodAdvice {
     
     @Override
     @SuppressWarnings("unchecked")
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         Span root = (Span) ((Map<String, Object>) 
args[2]).get("ot_root_span_");
         Tracer.SpanBuilder builder = 
GlobalTracer.get().buildSpan(OPERATION_NAME);
         if ((boolean) args[1]) {
@@ -60,12 +60,12 @@ public final class JDBCExecutorCallbackAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         ((Scope) target.getAttachment()).close();
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         OpenTracingErrorSpan.setError(GlobalTracer.get().activeSpan(), 
throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdvice.java
 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdvice.java
index 77af8e130b5..28d5e62431e 100644
--- 
a/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdvice.java
+++ 
b/agent/plugins/tracing/type/opentracing/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdvice.java
@@ -35,7 +35,7 @@ public final class SQLParserEngineAdvice implements 
InstanceMethodAdvice {
     private static final String OPERATION_NAME = "/ShardingSphere/parseSQL/";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         Scope scope = GlobalTracer.get().buildSpan(OPERATION_NAME)
                 .withTag(Tags.COMPONENT.getKey(), 
ShardingSphereTags.COMPONENT_NAME)
                 .withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT)
@@ -45,12 +45,12 @@ public final class SQLParserEngineAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         ((Scope) target.getAttachment()).close();
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         OpenTracingErrorSpan.setError(GlobalTracer.get().activeSpan(), 
throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdviceTest.java
 
b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdviceTest.java
index 4dc2f03302d..582c3043afa 100644
--- 
a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdviceTest.java
+++ 
b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/CommandExecutorTaskAdviceTest.java
@@ -64,8 +64,8 @@ public final class CommandExecutorTaskAdviceTest {
     @Test
     public void assertMethod() {
         MockTargetAdviceObject targetObject = new MockTargetAdviceObject();
-        ADVICE.beforeMethod(targetObject, executeCommandMethod, new 
Object[]{});
-        ADVICE.afterMethod(targetObject, executeCommandMethod, new Object[]{}, 
null);
+        ADVICE.beforeMethod(targetObject, executeCommandMethod, new 
Object[]{}, "OpenTracing");
+        ADVICE.afterMethod(targetObject, executeCommandMethod, new Object[]{}, 
null, "OpenTracing");
         List<MockSpan> spans = tracer.finishedSpans();
         assertThat(spans.size(), is(1));
         assertTrue(spans.get(0).logEntries().isEmpty());
@@ -75,9 +75,9 @@ public final class CommandExecutorTaskAdviceTest {
     @Test
     public void assertExceptionHandle() {
         MockTargetAdviceObject targetObject = new MockTargetAdviceObject();
-        ADVICE.beforeMethod(targetObject, executeCommandMethod, new 
Object[]{});
-        ADVICE.onThrowing(targetObject, executeCommandMethod, new Object[]{}, 
new IOException());
-        ADVICE.afterMethod(targetObject, executeCommandMethod, new Object[]{}, 
null);
+        ADVICE.beforeMethod(targetObject, executeCommandMethod, new 
Object[]{}, "OpenTracing");
+        ADVICE.onThrowing(targetObject, executeCommandMethod, new Object[]{}, 
new IOException(), "OpenTracing");
+        ADVICE.afterMethod(targetObject, executeCommandMethod, new Object[]{}, 
null, "OpenTracing");
         List<MockSpan> spans = tracer.finishedSpans();
         assertThat(spans.size(), is(1));
         MockSpan span = spans.get(0);
diff --git 
a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdviceTest.java
 
b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdviceTest.java
index ba42946499f..aebe343c613 100644
--- 
a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdviceTest.java
+++ 
b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/JDBCExecutorCallbackAdviceTest.java
@@ -69,8 +69,8 @@ public final class JDBCExecutorCallbackAdviceTest {
         JDBCExecutionUnit executionUnit = mock(JDBCExecutionUnit.class);
         when(executionUnit.getExecutionUnit()).thenReturn(new 
ExecutionUnit("mock.db", new SQLUnit("select 1", Collections.emptyList())));
         JDBCExecutorCallbackAdvice advice = new JDBCExecutorCallbackAdvice();
-        advice.beforeMethod(targetObject, executeMethod, new 
Object[]{executionUnit, false, extraMap});
-        advice.afterMethod(targetObject, executeMethod, new 
Object[]{executionUnit, false, extraMap}, null);
+        advice.beforeMethod(targetObject, executeMethod, new 
Object[]{executionUnit, false, extraMap}, "OpenTracing");
+        advice.afterMethod(targetObject, executeMethod, new 
Object[]{executionUnit, false, extraMap}, null, "OpenTracing");
         List<MockSpan> spans = tracer.finishedSpans();
         assertThat(spans.size(), is(1));
         MockSpan span = spans.get(0);
@@ -90,9 +90,9 @@ public final class JDBCExecutorCallbackAdviceTest {
         JDBCExecutionUnit executionUnit = mock(JDBCExecutionUnit.class);
         when(executionUnit.getExecutionUnit()).thenReturn(new 
ExecutionUnit("mock.db", new SQLUnit("select 1", Collections.emptyList())));
         JDBCExecutorCallbackAdvice advice = new JDBCExecutorCallbackAdvice();
-        advice.beforeMethod(targetObject, executeMethod, new 
Object[]{executionUnit, false, extraMap});
-        advice.onThrowing(targetObject, executeMethod, new 
Object[]{executionUnit, false, extraMap}, new IOException());
-        advice.afterMethod(targetObject, executeMethod, new 
Object[]{executionUnit, false, extraMap}, null);
+        advice.beforeMethod(targetObject, executeMethod, new 
Object[]{executionUnit, false, extraMap}, "OpenTracing");
+        advice.onThrowing(targetObject, executeMethod, new 
Object[]{executionUnit, false, extraMap}, new IOException(), "OpenTracing");
+        advice.afterMethod(targetObject, executeMethod, new 
Object[]{executionUnit, false, extraMap}, null, "OpenTracing");
         List<MockSpan> spans = tracer.finishedSpans();
         assertThat(spans.size(), is(1));
         MockSpan span = spans.get(0);
diff --git 
a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdviceTest.java
 
b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdviceTest.java
index d0587b308a3..7db4d9bf4ba 100644
--- 
a/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdviceTest.java
+++ 
b/agent/plugins/tracing/type/opentracing/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/opentracing/advice/SQLParserEngineAdviceTest.java
@@ -61,8 +61,8 @@ public final class SQLParserEngineAdviceTest {
     @Test
     public void assertMethod() {
         MockTargetAdviceObject targetObject = new MockTargetAdviceObject();
-        ADVICE.beforeMethod(targetObject, parserMethod, new Object[]{"select 
1"});
-        ADVICE.afterMethod(targetObject, parserMethod, new Object[]{}, null);
+        ADVICE.beforeMethod(targetObject, parserMethod, new Object[]{"select 
1"}, "OpenTracing");
+        ADVICE.afterMethod(targetObject, parserMethod, new Object[]{}, null, 
"OpenTracing");
         List<MockSpan> spans = tracer.finishedSpans();
         assertThat(spans.size(), is(1));
         assertTrue(spans.get(0).logEntries().isEmpty());
@@ -72,9 +72,9 @@ public final class SQLParserEngineAdviceTest {
     @Test
     public void assertExceptionHandle() {
         MockTargetAdviceObject targetObject = new MockTargetAdviceObject();
-        ADVICE.beforeMethod(targetObject, parserMethod, new Object[]{"select 
1"});
-        ADVICE.onThrowing(targetObject, parserMethod, new Object[]{}, new 
IOException());
-        ADVICE.afterMethod(targetObject, parserMethod, new Object[]{}, null);
+        ADVICE.beforeMethod(targetObject, parserMethod, new Object[]{"select 
1"}, "OpenTracing");
+        ADVICE.onThrowing(targetObject, parserMethod, new Object[]{}, new 
IOException(), "OpenTracing");
+        ADVICE.afterMethod(targetObject, parserMethod, new Object[]{}, null, 
"OpenTracing");
         List<MockSpan> spans = tracer.finishedSpans();
         assertThat(spans.size(), is(1));
         MockSpan span = spans.get(0);
diff --git 
a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java
 
b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java
index c2a30778478..5196ec29e29 100644
--- 
a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java
+++ 
b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java
@@ -37,14 +37,14 @@ public final class CommandExecutorTaskAdvice implements 
InstanceMethodAdvice {
     private static final String OPERATION_NAME = "/ShardingSphere/rootInvoke/";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         Span span = Tracing.currentTracer().newTrace().name(OPERATION_NAME);
         span.tag(ZipkinConstants.Tags.COMPONENT, 
ZipkinConstants.COMPONENT_NAME).kind(Span.Kind.CLIENT).tag(ZipkinConstants.Tags.DB_TYPE,
 ZipkinConstants.DB_TYPE_VALUE).start();
         ExecutorDataMap.getValue().put(ZipkinConstants.ROOT_SPAN, span);
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         BackendConnection connection = 
AgentReflectionUtil.<ConnectionSession>getFieldValue(target, 
"connectionSession").getBackendConnection();
         Span span = (Span) 
ExecutorDataMap.getValue().remove(ZipkinConstants.ROOT_SPAN);
         span.tag(ZipkinConstants.Tags.CONNECTION_COUNT, 
String.valueOf(connection.getConnectionSize()));
@@ -52,7 +52,7 @@ public final class CommandExecutorTaskAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         ((Span) 
ExecutorDataMap.getValue().get(ZipkinConstants.ROOT_SPAN)).error(throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdvice.java
 
b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdvice.java
index 779292c4d67..2cf21fd6e06 100644
--- 
a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdvice.java
+++ 
b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdvice.java
@@ -44,7 +44,7 @@ public final class JDBCExecutorCallbackAdvice implements 
InstanceMethodAdvice {
     @Override
     @SneakyThrows({ReflectiveOperationException.class, SQLException.class})
     @SuppressWarnings("unchecked")
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         Span root = (Span) ((Map<String, Object>) 
args[2]).get(ZipkinConstants.ROOT_SPAN);
         Span span = null == root ? 
Tracing.currentTracer().nextSpan().name(OPERATION_NAME) : 
Tracing.currentTracer().newChild(root.context()).name(OPERATION_NAME);
         span.tag(ZipkinConstants.Tags.COMPONENT, 
ZipkinConstants.COMPONENT_NAME);
@@ -64,12 +64,12 @@ public final class JDBCExecutorCallbackAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         ((Span) target.getAttachment()).finish();
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         ((Span) target.getAttachment()).error(throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/SQLParserEngineAdvice.java
 
b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/SQLParserEngineAdvice.java
index 160a9d0c84b..0cc82d00986 100644
--- 
a/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/SQLParserEngineAdvice.java
+++ 
b/agent/plugins/tracing/type/zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/SQLParserEngineAdvice.java
@@ -35,7 +35,7 @@ public final class SQLParserEngineAdvice implements 
InstanceMethodAdvice {
     private static final String OPERATION_NAME = "/ShardingSphere/parseSQL/";
     
     @Override
-    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args) {
+    public void beforeMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final String pluginType) {
         TraceContext parentContext = ((Span) 
ExecutorDataMap.getValue().get(ZipkinConstants.ROOT_SPAN)).context();
         Span span = 
Tracing.currentTracer().newChild(parentContext).name(OPERATION_NAME);
         span.tag(ZipkinConstants.Tags.COMPONENT, 
ZipkinConstants.COMPONENT_NAME);
@@ -46,12 +46,12 @@ public final class SQLParserEngineAdvice implements 
InstanceMethodAdvice {
     }
     
     @Override
-    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result) {
+    public void afterMethod(final TargetAdviceObject target, final Method 
method, final Object[] args, final Object result, final String pluginType) {
         ((Span) target.getAttachment()).finish();
     }
     
     @Override
-    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable) {
+    public void onThrowing(final TargetAdviceObject target, final Method 
method, final Object[] args, final Throwable throwable, final String 
pluginType) {
         ((Span) target.getAttachment()).error(throwable);
     }
 }
diff --git 
a/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdviceTest.java
 
b/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdviceTest.java
index 72503689ae3..1172d0550dd 100644
--- 
a/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdviceTest.java
+++ 
b/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdviceTest.java
@@ -38,8 +38,8 @@ public final class CommandExecutorTaskAdviceTest extends 
AbstractCommandExecutor
     @Test
     public void assertMethod() {
         CommandExecutorTaskAdvice advice = new CommandExecutorTaskAdvice();
-        advice.beforeMethod(getTargetObject(), null, new Object[]{});
-        advice.afterMethod(getTargetObject(), null, new Object[]{}, null);
+        advice.beforeMethod(getTargetObject(), null, new Object[]{}, "Zipkin");
+        advice.afterMethod(getTargetObject(), null, new Object[]{}, null, 
"Zipkin");
         Span span = COLLECTOR.pop();
         Map<String, String> tags = span.tags();
         assertThat(tags.get(ZipkinConstants.Tags.DB_TYPE), 
is(ZipkinConstants.DB_TYPE_VALUE));
@@ -51,9 +51,9 @@ public final class CommandExecutorTaskAdviceTest extends 
AbstractCommandExecutor
     @Test
     public void assertExceptionHandle() {
         CommandExecutorTaskAdvice advice = new CommandExecutorTaskAdvice();
-        advice.beforeMethod(getTargetObject(), null, new Object[]{});
-        advice.onThrowing(getTargetObject(), null, new Object[]{}, new 
IOException());
-        advice.afterMethod(getTargetObject(), null, new Object[]{}, null);
+        advice.beforeMethod(getTargetObject(), null, new Object[]{}, "Zipkin");
+        advice.onThrowing(getTargetObject(), null, new Object[]{}, new 
IOException(), "Zipkin");
+        advice.afterMethod(getTargetObject(), null, new Object[]{}, null, 
"Zipkin");
         Span span = COLLECTOR.pop();
         Map<String, String> tags = span.tags();
         assertThat(tags.get("error"), is("IOException"));
diff --git 
a/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdviceTest.java
 
b/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdviceTest.java
index 6784e55ce4a..61e44fee3b5 100644
--- 
a/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdviceTest.java
+++ 
b/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/JDBCExecutorCallbackAdviceTest.java
@@ -45,8 +45,8 @@ public final class JDBCExecutorCallbackAdviceTest extends 
AbstractJDBCExecutorCa
     @Test
     public void assertMethod() {
         JDBCExecutorCallbackAdvice advice = new JDBCExecutorCallbackAdvice();
-        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()});
-        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null);
+        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, "Zipkin");
+        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null, "Zipkin");
         Span span = COLLECTOR.pop();
         assertThat(span.name(), 
is("/ShardingSphere/executeSQL/".toLowerCase()));
         Map<String, String> tags = span.tags();
@@ -62,9 +62,9 @@ public final class JDBCExecutorCallbackAdviceTest extends 
AbstractJDBCExecutorCa
     @Test
     public void assertExceptionHandle() {
         JDBCExecutorCallbackAdvice advice = new JDBCExecutorCallbackAdvice();
-        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()});
-        advice.onThrowing(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, new IOException());
-        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null);
+        advice.beforeMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, "Zipkin");
+        advice.onThrowing(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, new IOException(), 
"Zipkin");
+        advice.afterMethod(getTargetObject(), null, new 
Object[]{getExecutionUnit(), false, getExtraMap()}, null, "Zipkin");
         Span span = COLLECTOR.pop();
         assertThat(span.name(), 
is("/ShardingSphere/executeSQL/".toLowerCase()));
         Map<String, String> tags = span.tags();
diff --git 
a/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/SQLParserEngineAdviceTest.java
 
b/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/SQLParserEngineAdviceTest.java
index e17a83ec1f8..065ab961025 100644
--- 
a/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/SQLParserEngineAdviceTest.java
+++ 
b/agent/plugins/tracing/type/zipkin/src/test/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/SQLParserEngineAdviceTest.java
@@ -54,8 +54,8 @@ public final class SQLParserEngineAdviceTest extends 
AbstractSQLParserEngineAdvi
     
     @Test
     public void assertMethod() {
-        advice.beforeMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true});
-        advice.afterMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, null);
+        advice.beforeMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, "Zipkin");
+        advice.afterMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, null, "Zipkin");
         parentSpan.finish();
         zipkin2.Span span = COLLECTOR.pop();
         assertNotNull(span.parentId());
@@ -66,9 +66,9 @@ public final class SQLParserEngineAdviceTest extends 
AbstractSQLParserEngineAdvi
     
     @Test
     public void assertExceptionHandle() {
-        advice.beforeMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true});
-        advice.onThrowing(getTargetObject(), null, new Object[]{SQL_STATEMENT, 
true}, new IOException());
-        advice.afterMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, null);
+        advice.beforeMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, "Zipkin");
+        advice.onThrowing(getTargetObject(), null, new Object[]{SQL_STATEMENT, 
true}, new IOException(), "Zipkin");
+        advice.afterMethod(getTargetObject(), null, new 
Object[]{SQL_STATEMENT, true}, null, "Zipkin");
         parentSpan.finish();
         zipkin2.Span span = COLLECTOR.pop();
         assertNotNull(span.parentId());

Reply via email to