From c02c3f3ed11ce5a4c098710b4a30ab5826181f5b Mon Sep 17 00:00:00 2001 From: wusheng Date: Thu, 17 Mar 2016 17:27:44 +0800 Subject: [PATCH] =?UTF-8?q?1.plugin=E5=A2=9E=E5=8A=A0=E5=AF=B9=E4=BA=8E?= =?UTF-8?q?=E6=8B=A6=E6=88=AA=E6=89=80=E6=9C=89=E6=96=B9=E6=B3=95=E7=9A=84?= =?UTF-8?q?=E6=94=AF=E6=8C=81=202.jedis=E6=8F=92=E4=BB=B6=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B=EF=BC=8C=E4=B8=8A=E4=BC=A0=E5=9F=BA=E6=9C=AC=E5=B7=A5?= =?UTF-8?q?=E7=A8=8B=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../interceptor/EnhanceClazz4Interceptor.java | 4 ++ skywalking-sdk-plugin/pom.xml | 1 + .../skywalking-jedis-2.x-plugin/pom.xml | 70 +++++++++++++++++++ .../jedis/v2/plugin/JedisInterceptor.java | 35 ++++++++++ .../v2/plugin/define/JedisPluginDefine.java | 26 +++++++ .../src/main/resources/skywalking-plugin.def | 1 + .../skywalking/jedis/v2/plugin/JedisTest.java | 23 ++++++ .../src/test/resources/log4j2.xml | 16 +++++ .../src/test/resources/sky-walking.auth | 47 +++++++++++++ 9 files changed, 223 insertions(+) create mode 100644 skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/pom.xml create mode 100644 skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/java/org/skywalking/jedis/v2/plugin/JedisInterceptor.java create mode 100644 skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/java/org/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java create mode 100644 skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/main/resources/skywalking-plugin.def create mode 100644 skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/java/org/skywalking/jedis/v2/plugin/JedisTest.java create mode 100644 skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/resources/log4j2.xml create mode 100644 skywalking-sdk-plugin/skywalking-jedis-2.x-plugin/src/test/resources/sky-walking.auth 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 deeabc577..b024ff9f2 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 e8c170c98..3e7a1aabd 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 000000000..8fa4dc6aa --- /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 000000000..297093150 --- /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 000000000..7c54cad3b --- /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 000000000..bb7284192 --- /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 000000000..3e8200564 --- /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 000000000..4e2af7485 --- /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 000000000..c794ea37c --- /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 +