diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/EnhanceClazz4Interceptor.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/EnhanceClazz4Interceptor.java index deeabc5775e5dfcdd6f7ad699c88680a75cf9579..b024ff9f2023c04b6717b544ab91ae279401a15c 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/EnhanceClazz4Interceptor.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/EnhanceClazz4Interceptor.java @@ -121,6 +121,7 @@ public class EnhanceClazz4Interceptor { InterceptPoint[] methodNameList = define.getBeInterceptedMethods(); ClassMethodInterceptor classMethodInterceptor = new ClassMethodInterceptor( interceptor); + for (InterceptPoint method : methodNameList) { logger.debug("prepare to enhance class {} method [{}] ", enhanceOriginClassName, method.getMethodName()); @@ -134,6 +135,9 @@ public class EnhanceClazz4Interceptor { named(method.getMethodName()).and( takesArguments(method.getArgNum()))).intercept( MethodDelegation.to(classMethodInterceptor)); + } else if("*".equals(method.getMethodName())){ + newClassBuilder = newClassBuilder.method(any()).intercept( + MethodDelegation.to(classMethodInterceptor)); } else { newClassBuilder = newClassBuilder.method( named(method.getMethodName())).intercept( diff --git a/skywalking-sdk-plugin/pom.xml b/skywalking-sdk-plugin/pom.xml index e8c170c98cb3348826498760f4b93bd9a47548ed..3e7a1aabdd72715ccfd8c5c863231c767ead8b36 100644 --- a/skywalking-sdk-plugin/pom.xml +++ b/skywalking-sdk-plugin/pom.xml @@ -16,6 +16,7 @@ httpclient-4.3.x-plugin httpClient-4.x-plugin httpClient-4.x-plugin-dubbox-rest-attachment + jedis-2.x-plugin pom diff --git a/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/pom.xml b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..8fa4dc6aa31b226ebe7df7310b655601341cf612 --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/pom.xml @@ -0,0 +1,70 @@ + + + 4.0.0 + + com.ai.cloud + skywalking-sdk-plugin + 1.0-SNAPSHOT + + + skywalking-jedis-2.x-plugin + jar + + jedis-2.x-plugin + http://maven.apache.org + + + UTF-8 + + + + + com.ai.cloud + skywalking-api + 1.0-SNAPSHOT + + + + redis.clients + jedis + 2.8.1 + + + + org.apache.logging.log4j + log4j-core + 2.4.1 + test + + + + junit + junit + 4.12 + test + + + + + + + maven-compiler-plugin + + 1.7 + 1.7 + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-resources-plugin + 2.4.3 + + ${project.build.sourceEncoding} + + + + + diff --git a/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/java/org/skywalking/jedis/v2/plugin/JedisInterceptor.java b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/java/org/skywalking/jedis/v2/plugin/JedisInterceptor.java new file mode 100644 index 0000000000000000000000000000000000000000..29709315005b3a8e464f8556182b7a24ae0272bd --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/java/org/skywalking/jedis/v2/plugin/JedisInterceptor.java @@ -0,0 +1,35 @@ +package org.skywalking.jedis.v2.plugin; + +import com.ai.cloud.skywalking.plugin.interceptor.ConstructorInvokeContext; +import com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext; +import com.ai.cloud.skywalking.plugin.interceptor.IAroundInterceptor; +import com.ai.cloud.skywalking.plugin.interceptor.MethodInvokeContext; + +public class JedisInterceptor implements IAroundInterceptor{ + + @Override + public void onConstruct(EnhancedClassInstanceContext context, + ConstructorInvokeContext interceptorContext) { + + } + + @Override + public void beforeMethod(EnhancedClassInstanceContext context, + MethodInvokeContext interceptorContext) { + + } + + @Override + public Object afterMethod(EnhancedClassInstanceContext context, + MethodInvokeContext interceptorContext, Object ret) { + return ret; + } + + @Override + public void handleMethodException(Throwable t, + EnhancedClassInstanceContext context, + MethodInvokeContext interceptorContext, Object ret) { + + } + +} diff --git a/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/java/org/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/java/org/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java new file mode 100644 index 0000000000000000000000000000000000000000..7c54cad3b1b95c9257e0e63338b9cc50d317868f --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/java/org/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java @@ -0,0 +1,26 @@ +package org.skywalking.jedis.v2.plugin.define; + +import org.skywalking.jedis.v2.plugin.JedisInterceptor; + +import com.ai.cloud.skywalking.plugin.interceptor.IAroundInterceptor; +import com.ai.cloud.skywalking.plugin.interceptor.InterceptPoint; +import com.ai.cloud.skywalking.plugin.interceptor.InterceptorDefine; + +public class JedisPluginDefine implements InterceptorDefine { + + @Override + public String getBeInterceptedClassName() { + return "redis.clients.jedis.Jedis"; + } + + @Override + public InterceptPoint[] getBeInterceptedMethods() { + return new InterceptPoint[] { new InterceptPoint("*") }; + } + + @Override + public IAroundInterceptor instance() { + return new JedisInterceptor(); + } + +} diff --git a/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/resources/skywalking-plugin.def b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/resources/skywalking-plugin.def new file mode 100644 index 0000000000000000000000000000000000000000..bb7284192f7ca48323d8be008ccf98a3baced73b --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/resources/skywalking-plugin.def @@ -0,0 +1 @@ +org.skywalking.jedis.v2.plugin.define.JedisPluginDefine \ No newline at end of file diff --git a/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/java/org/skywalking/jedis/v2/plugin/JedisTest.java b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/java/org/skywalking/jedis/v2/plugin/JedisTest.java new file mode 100644 index 0000000000000000000000000000000000000000..3e82005643193af29945f7ef752e3e8966d9c298 --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/java/org/skywalking/jedis/v2/plugin/JedisTest.java @@ -0,0 +1,23 @@ +package org.skywalking.jedis.v2.plugin; + +import java.lang.reflect.InvocationTargetException; +import java.sql.SQLException; + +import org.junit.Test; + +import com.ai.cloud.skywalking.plugin.TracingBootstrap; + +public class JedisTest { + + @Test + public void test() throws IllegalAccessException, + IllegalArgumentException, InvocationTargetException, + NoSuchMethodException, SecurityException, ClassNotFoundException { + TracingBootstrap + .main(new String[] { "org.skywalking.jedis.v2.plugin.JedisTest" }); + } + + public static void main(String[] args) throws ClassNotFoundException, + SQLException, InterruptedException {} + +} diff --git a/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/resources/log4j2.xml b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/resources/log4j2.xml new file mode 100644 index 0000000000000000000000000000000000000000..4e2af7485ab84c52a49dd7a350ce08515279fbc1 --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/resources/log4j2.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/resources/sky-walking.auth b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/resources/sky-walking.auth new file mode 100644 index 0000000000000000000000000000000000000000..c794ea37c6eab65dc8961cf7d320e10a00f84871 --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/resources/sky-walking.auth @@ -0,0 +1,47 @@ +#skyWalking用户ID +skywalking.user_id=123 +#skyWalking应用编码 +skywalking.application_code=test +#skywalking auth的环境变量名字 +skywalking.auth_system_env_name=SKYWALKING_RUN +#skywalking数据编码 +skywalking.charset=UTF-8 + +#是否打印数据 +buriedpoint.printf=true +#埋点异常的最大长度 +buriedpoint.max_exception_stack_length=4000 +#业务字段的最大长度 +buriedpoint.businesskey_max_length=300 +#过滤异常 +buriedpoint.exclusive_exceptions=java.lang.RuntimeException + +#最大发送者的连接数阀比例 +sender.connect_percent=100 +#发送服务端配置 +sender.servers_addr=127.0.0.1:34000 +#最大发送的副本数量 +sender.max_copy_num=2 +#发送的最大长度 +sender.max_send_length=20000 +#当没有Sender时,尝试获取sender的等待周期 +sender.retry_get_sender_wait_interval=2000 +#是否开启发送消息 +sender.is_off=false + + +#最大消费线程数 +consumer.max_consumer=2 +#消费者最大等待时间 +consumer.max_wait_time=5 +#发送失败等待时间 +consumer.consumer_fail_retry_wait_interval=50 + +#每个Buffer的最大个数 +buffer.buffer_max_size=18000 +#Buffer池的最大长度 +buffer.pool_size=5 + +#发送检查线程检查周期 +senderchecker.check_polling_time=200 +