From 1c3cf43e47e76656731f832521690ceb5169eb69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E6=A0=91=E5=BC=BA=2E=E4=BF=A1=E6=81=AF=E6=8A=80?= =?UTF-8?q?=E6=9C=AF=E4=B8=AD=E5=BF=83=2E=E6=9E=B6=E6=9E=84=E9=83=A8?= Date: Fri, 1 Jul 2016 17:00:41 +0800 Subject: [PATCH 1/4] add logback plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 于树强.信息技术中心.架构部 --- .../skywalking-log/logback-plugin/pom.xml | 55 +++++++++++++++++++ .../log/logback/LogbackPatternConverter.java | 22 ++++++++ .../logback/TraceIdPatternLogbackLayout.java | 12 ++++ .../src/test/java/com/ai/LogbackMain.java | 25 +++++++++ .../src/test/resources/logback.xml | 14 +++++ 5 files changed, 128 insertions(+) create mode 100644 skywalking-collector/skywalking-log/logback-plugin/pom.xml create mode 100644 skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/LogbackPatternConverter.java create mode 100644 skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/TraceIdPatternLogbackLayout.java create mode 100644 skywalking-collector/skywalking-log/logback-plugin/src/test/java/com/ai/LogbackMain.java create mode 100644 skywalking-collector/skywalking-log/logback-plugin/src/test/resources/logback.xml diff --git a/skywalking-collector/skywalking-log/logback-plugin/pom.xml b/skywalking-collector/skywalking-log/logback-plugin/pom.xml new file mode 100644 index 000000000..c5d865877 --- /dev/null +++ b/skywalking-collector/skywalking-log/logback-plugin/pom.xml @@ -0,0 +1,55 @@ + + 4.0.0 + + com.ai.cloud + skywalking-log + 1.0-Final + + logback-plugin + logback-plugin + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + ch.qos.logback + logback-classic + 1.1.5 + compile + + + com.ai.cloud + skywalking-api + 1.0-Final + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.4.3 + + ${project.build.sourceEncoding} + + + + + + + + bintray-wu-sheng-sky-walking-repository + wu-sheng-sky-walking-repository + https://api.bintray.com/maven/wu-sheng/skywalking/com.ai.cloud.skywalking-log4j-1.x-plugin/;publish=1 + + + \ No newline at end of file diff --git a/skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/LogbackPatternConverter.java b/skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/LogbackPatternConverter.java new file mode 100644 index 000000000..95180313f --- /dev/null +++ b/skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/LogbackPatternConverter.java @@ -0,0 +1,22 @@ +package com.ai.cloud.skywalking.plugin.log.logback; +import ch.qos.logback.classic.pattern.ClassicConverter; +import ch.qos.logback.classic.spi.ILoggingEvent; + +import com.ai.cloud.skywalking.api.Tracing; +import com.ai.cloud.skywalking.conf.AuthDesc; +/** + * + * @author yushuqiang + * + */ +public class LogbackPatternConverter extends ClassicConverter { + + @Override + public String convert(ILoggingEvent event) { + if (AuthDesc.isAuth()) { + return "TID:" + Tracing.getTraceId(); + } + + return "TID: N/A"+" "+event.toString(); + } +} \ No newline at end of file diff --git a/skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/TraceIdPatternLogbackLayout.java b/skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/TraceIdPatternLogbackLayout.java new file mode 100644 index 000000000..9e46dfc8b --- /dev/null +++ b/skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/TraceIdPatternLogbackLayout.java @@ -0,0 +1,12 @@ +package com.ai.cloud.skywalking.plugin.log.logback; +import ch.qos.logback.classic.PatternLayout; +/** + * + * @author yushuqiang + * + */ +public class TraceIdPatternLogbackLayout extends PatternLayout { + static { + defaultConverterMap.put("tid",LogbackPatternConverter.class.getName()); + } +} \ No newline at end of file diff --git a/skywalking-collector/skywalking-log/logback-plugin/src/test/java/com/ai/LogbackMain.java b/skywalking-collector/skywalking-log/logback-plugin/src/test/java/com/ai/LogbackMain.java new file mode 100644 index 000000000..5daff3170 --- /dev/null +++ b/skywalking-collector/skywalking-log/logback-plugin/src/test/java/com/ai/LogbackMain.java @@ -0,0 +1,25 @@ +package com.ai; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.joran.JoranConfigurator; +import ch.qos.logback.core.joran.spi.JoranException; +import ch.qos.logback.core.util.StatusPrinter; +public class LogbackMain { + + static Logger logger = LoggerFactory.getLogger(LogbackMain.class); + + public static void main(String[] args) throws JoranException { + LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); + + JoranConfigurator configurator = new JoranConfigurator(); + configurator.setContext(lc); + lc.reset(); + configurator.doConfigure("E:\\testdubbo\\GTrace\\GTrace-client\\src\\test\\resources\\logback.xml"); + StatusPrinter.printInCaseOfErrorsOrWarnings(lc); + + logger.info("Hello world11"); + } + +} diff --git a/skywalking-collector/skywalking-log/logback-plugin/src/test/resources/logback.xml b/skywalking-collector/skywalking-log/logback-plugin/src/test/resources/logback.xml new file mode 100644 index 000000000..5033c927a --- /dev/null +++ b/skywalking-collector/skywalking-log/logback-plugin/src/test/resources/logback.xml @@ -0,0 +1,14 @@ + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n + + + + + + + \ No newline at end of file From 35df0f9448fc2b5a7bb8ea712d885f96d13b57b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E6=A0=91=E5=BC=BA=2E=E4=BF=A1=E6=81=AF=E6=8A=80?= =?UTF-8?q?=E6=9C=AF=E4=B8=AD=E5=BF=83=2E=E6=9E=B6=E6=9E=84=E9=83=A8?= Date: Fri, 1 Jul 2016 17:12:51 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 于树强.信息技术中心.架构部 --- .../skywalking/plugin/log/logback/LogbackPatternConverter.java | 2 +- .../logback-plugin/src/test/java/com/ai/LogbackMain.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/LogbackPatternConverter.java b/skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/LogbackPatternConverter.java index 95180313f..17ab9f5ba 100644 --- a/skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/LogbackPatternConverter.java +++ b/skywalking-collector/skywalking-log/logback-plugin/src/main/java/com/ai/cloud/skywalking/plugin/log/logback/LogbackPatternConverter.java @@ -17,6 +17,6 @@ public class LogbackPatternConverter extends ClassicConverter { return "TID:" + Tracing.getTraceId(); } - return "TID: N/A"+" "+event.toString(); + return "TID: N/A"; } } \ No newline at end of file diff --git a/skywalking-collector/skywalking-log/logback-plugin/src/test/java/com/ai/LogbackMain.java b/skywalking-collector/skywalking-log/logback-plugin/src/test/java/com/ai/LogbackMain.java index 5daff3170..386d0200a 100644 --- a/skywalking-collector/skywalking-log/logback-plugin/src/test/java/com/ai/LogbackMain.java +++ b/skywalking-collector/skywalking-log/logback-plugin/src/test/java/com/ai/LogbackMain.java @@ -16,7 +16,7 @@ public class LogbackMain { JoranConfigurator configurator = new JoranConfigurator(); configurator.setContext(lc); lc.reset(); - configurator.doConfigure("E:\\testdubbo\\GTrace\\GTrace-client\\src\\test\\resources\\logback.xml"); + configurator.doConfigure("E:\\testdubbo\\sky-walking\\skywalking-collector\\skywalking-log\\logback-plugin\\src\\test\\resources\\logback.xml"); StatusPrinter.printInCaseOfErrorsOrWarnings(lc); logger.info("Hello world11"); From 2f86b1b3ee58e09b576f6d0d641e7a40b593abba Mon Sep 17 00:00:00 2001 From: wusheng Date: Fri, 1 Jul 2016 17:29:54 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E7=9A=84httpclient-dubbo-attachment=E3=80=82=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E9=80=82=E9=85=8D=E6=97=B6=EF=BC=8C=E7=94=B1=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=87=AA=E8=BA=AB=E6=8E=A7=E5=88=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- skywalking-collector/skywalking-agent/pom.xml | 5 -- .../README.md | 10 --- .../pom.xml | 79 ------------------- .../DubboxRestHeadSetterAttachment.java | 32 -------- .../src/main/resources/skywalking-plugin.def | 1 - .../rest/attachment/TestHttpClientV43.java | 60 -------------- .../src/test/resources/log4j2.xml | 16 ---- .../src/test/resources/sky-walking.auth | 47 ----------- .../skywalking-sdk-plugin/pom.xml | 1 - 9 files changed, 251 deletions(-) delete mode 100644 skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/README.md delete mode 100644 skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/pom.xml delete mode 100644 skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/main/java/org/skywalking/httpClient/v4/plugin/dubbox/rest/attachment/DubboxRestHeadSetterAttachment.java delete mode 100644 skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/main/resources/skywalking-plugin.def delete mode 100644 skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/java/test/skywalking/httpClient/v4x/plugin/dubbox/rest/attachment/TestHttpClientV43.java delete mode 100644 skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/log4j2.xml delete mode 100644 skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/sky-walking.auth diff --git a/skywalking-collector/skywalking-agent/pom.xml b/skywalking-collector/skywalking-agent/pom.xml index 5d2ca53cb..c37d2e744 100644 --- a/skywalking-collector/skywalking-agent/pom.xml +++ b/skywalking-collector/skywalking-agent/pom.xml @@ -39,11 +39,6 @@ skywalking-httpClient-4.x-plugin 1.0-Final - - com.ai.cloud - skywalking-httpClient-4.x-plugin-dubbox-rest-attachment - 1.0-Final - com.ai.cloud skywalking-dubbo-plugin diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/README.md b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/README.md deleted file mode 100644 index bb27dc2f2..000000000 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# 追踪通过httpClient调用dubbox发布的rest服务? -- 使用httpClient-4.x-plugin插件,[查看](../mysql-plugin) -- 引入所需插件 -```xml - - com.ai.cloud - skywalking-httpClient-4.x-plugin-dubbox-rest-attachment - {latest_version} - -``` diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/pom.xml b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/pom.xml deleted file mode 100644 index 7fef952c3..000000000 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/pom.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - 4.0.0 - - com.ai.cloud - skywalking-sdk-plugin - 1.0-Final - - - skywalking-httpClient-4.x-plugin-dubbox-rest-attachment - jar - - httpClient-4.x-plugin-dubbox-rest-attachment - http://maven.apache.org - - - UTF-8 - - - - - com.ai.cloud - skywalking-httpClient-4.x-plugin - 1.0-Final - compile - - - - - org.apache.httpcomponents - httpclient - 4.3 - test - - - - - org.apache.logging.log4j - log4j-core - 2.4.1 - test - - - - junit - junit - 4.12 - test - - - - - - org.apache.maven.plugins - maven-resources-plugin - 2.4.3 - - ${project.build.sourceEncoding} - - - - - - - - bintray-wu-sheng-sky-walking-repository - wu-sheng-sky-walking-repository - https://api.bintray.com/maven/wu-sheng/skywalking/com.ai.cloud.skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/;publish=1 - - - diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/main/java/org/skywalking/httpClient/v4/plugin/dubbox/rest/attachment/DubboxRestHeadSetterAttachment.java b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/main/java/org/skywalking/httpClient/v4/plugin/dubbox/rest/attachment/DubboxRestHeadSetterAttachment.java deleted file mode 100644 index e93e2c50b..000000000 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/main/java/org/skywalking/httpClient/v4/plugin/dubbox/rest/attachment/DubboxRestHeadSetterAttachment.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.skywalking.httpClient.v4.plugin.dubbox.rest.attachment; - -import org.skywalking.httpClient.v4.plugin.HttpClientExecuteInterceptor; - -import com.ai.cloud.skywalking.plugin.interceptor.MethodMatcher; -import com.ai.cloud.skywalking.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine; -import com.ai.cloud.skywalking.plugin.interceptor.enhance.IntanceMethodsAroundInterceptor; - -public class DubboxRestHeadSetterAttachment extends ClassInstanceMethodsEnhancePluginDefine { - - /** - * this method is called as InterceptorPluginDefine
- * don't return be intercepted classname,
- * just run as a pre setter of attribute:HttpClientExecuteInterceptor.TRACE_HEAD_NAME - */ - @Override - public String getBeInterceptedClassName() { - HttpClientExecuteInterceptor.TRACE_HEAD_NAME = "Dubbo-Attachments"; - return null; - } - - @Override - public MethodMatcher[] getInstanceMethodsMatchers() { - return null; - } - - @Override - public IntanceMethodsAroundInterceptor getInstanceMethodsInterceptor() { - return null; - } - -} diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/main/resources/skywalking-plugin.def b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/main/resources/skywalking-plugin.def deleted file mode 100644 index fbb5519f6..000000000 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/main/resources/skywalking-plugin.def +++ /dev/null @@ -1 +0,0 @@ -org.skywalking.httpClient.v4.plugin.dubbox.rest.attachment.DubboxRestHeadSetterAttachment \ No newline at end of file diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/java/test/skywalking/httpClient/v4x/plugin/dubbox/rest/attachment/TestHttpClientV43.java b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/java/test/skywalking/httpClient/v4x/plugin/dubbox/rest/attachment/TestHttpClientV43.java deleted file mode 100644 index ab4bfc609..000000000 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/java/test/skywalking/httpClient/v4x/plugin/dubbox/rest/attachment/TestHttpClientV43.java +++ /dev/null @@ -1,60 +0,0 @@ -package test.skywalking.httpClient.v4x.plugin.dubbox.rest.attachment; - -import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.sql.SQLException; - -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.util.EntityUtils; -import org.junit.Test; - -import com.ai.cloud.skywalking.plugin.TracingBootstrap; - -public class TestHttpClientV43 { - @Test - public void testsql() throws IllegalAccessException, - IllegalArgumentException, InvocationTargetException, - NoSuchMethodException, SecurityException, ClassNotFoundException { - TracingBootstrap - .main(new String[] { "test.skywalking.httpClient.v4x.plugin.dubbox.rest.attachment.TestHttpClientV43" }); - } - - public static void main(String[] args) throws ClassNotFoundException, - SQLException, InterruptedException { - HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); - // HttpClient - CloseableHttpClient closeableHttpClient = httpClientBuilder.build(); - - HttpGet httpGet = new HttpGet("http://www.baidu.com"); - System.out.println(httpGet.getRequestLine()); - try { - // 执行get请求 - HttpResponse httpResponse = closeableHttpClient.execute(httpGet); - // 获取响应消息实体 - HttpEntity entity = httpResponse.getEntity(); - // 响应状态 - System.out.println("status:" + httpResponse.getStatusLine()); - // 判断响应实体是否为空 - if (entity != null) { - System.out.println("contentEncoding:" - + entity.getContentEncoding()); - System.out.println("response content:" - + EntityUtils.toString(entity)); - } - } catch (IOException e) { - e.printStackTrace(); - } finally { - try { // 关闭流并释放资源 - closeableHttpClient.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - Thread.sleep(5*1000); - } -} diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/log4j2.xml b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/log4j2.xml deleted file mode 100644 index 4e2af7485..000000000 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/log4j2.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/sky-walking.auth b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/sky-walking.auth deleted file mode 100644 index cc8b1c7bb..000000000 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/sky-walking.auth +++ /dev/null @@ -1,47 +0,0 @@ -#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 - - - - -#最大消费线程数 -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 - diff --git a/skywalking-collector/skywalking-sdk-plugin/pom.xml b/skywalking-collector/skywalking-sdk-plugin/pom.xml index f342e4b54..78806644f 100644 --- a/skywalking-collector/skywalking-sdk-plugin/pom.xml +++ b/skywalking-collector/skywalking-sdk-plugin/pom.xml @@ -16,7 +16,6 @@ jdbc-plugin web-plugin httpClient-4.x-plugin - httpClient-4.x-plugin-dubbox-rest-attachment jedis-2.x-plugin pom From 3ee2676268f7179304fc4c3302cf0c8c72dd2674 Mon Sep 17 00:00:00 2001 From: wusheng Date: Fri, 1 Jul 2016 17:58:13 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E8=A7=81=E8=AF=81=E8=80=85=E7=B1=BB=E7=9A=84=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82=E7=94=A8=E4=BA=8E=E5=90=8E=E6=9C=9F=E6=A0=87=E5=AE=9A?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E7=89=88=E6=9C=AC=E7=9A=84=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractClassEnhancePluginDefine.java | 67 +++++++++++++------ .../ai/cloud/matcher/TestMatcherDefine.java | 2 +- .../cloud/plugin/TestInterceptorDefine.java | 2 +- .../plugin/dubbo/DubboPluginDefine.java | 2 +- .../AbstractHttpClientPluginDefine.java | 2 +- .../DefaultRequestDirectorPluginDefine.java | 2 +- .../InternalHttpClientPluginDefine.java | 2 +- .../define/MinimalHttpClientPluginDefine.java | 2 +- .../define/JedisClusterPluginDefine.java | 2 +- .../v2/plugin/define/JedisPluginDefine.java | 2 +- 10 files changed, 54 insertions(+), 31 deletions(-) diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/AbstractClassEnhancePluginDefine.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/AbstractClassEnhancePluginDefine.java index c97275bac..1d39d737e 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/AbstractClassEnhancePluginDefine.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/AbstractClassEnhancePluginDefine.java @@ -1,27 +1,26 @@ package com.ai.cloud.skywalking.plugin.interceptor; -import static com.ai.cloud.skywalking.plugin.PluginBootstrap.CLASS_TYPE_POOL; - import com.ai.cloud.skywalking.logging.LogManager; import com.ai.cloud.skywalking.logging.Logger; +import com.ai.cloud.skywalking.plugin.IPlugin; +import com.ai.cloud.skywalking.plugin.PluginException; +import com.ai.cloud.skywalking.util.StringUtil; import net.bytebuddy.ByteBuddy; import net.bytebuddy.dynamic.ClassFileLocator; import net.bytebuddy.dynamic.DynamicType; import net.bytebuddy.dynamic.loading.ClassLoadingStrategy; import net.bytebuddy.pool.TypePool.Resolution; -import com.ai.cloud.skywalking.plugin.IPlugin; -import com.ai.cloud.skywalking.plugin.PluginException; -import com.ai.cloud.skywalking.util.StringUtil; +import static com.ai.cloud.skywalking.plugin.PluginBootstrap.CLASS_TYPE_POOL; public abstract class AbstractClassEnhancePluginDefine implements IPlugin { - private static Logger logger = LogManager.getLogger(AbstractClassEnhancePluginDefine.class); - - @Override - public void define() throws PluginException { - String interceptorDefineClassName = this.getClass().getName(); - - String enhanceOriginClassName = getBeInterceptedClassName(); + private static Logger logger = LogManager.getLogger(AbstractClassEnhancePluginDefine.class); + + @Override + public void define() throws PluginException { + String interceptorDefineClassName = this.getClass().getName(); + + String enhanceOriginClassName = enhanceClassName(); if (StringUtil.isEmpty(enhanceOriginClassName)) { logger.warn("classname of being intercepted is not defined by {}.", interceptorDefineClassName); @@ -38,13 +37,27 @@ public abstract class AbstractClassEnhancePluginDefine implements IPlugin { return; } + /** + * find witness classes for enhance class + */ + String[] witnessClasses = witnessClasses(); + if(witnessClasses != null) { + for (String witnessClass : witnessClasses) { + Resolution witnessClassResolution = CLASS_TYPE_POOL.describe(witnessClass); + if (!witnessClassResolution.isResolved()) { + logger.warn("enhance class {} by plugin {} is not working. Because witness class {} is not existed.", enhanceOriginClassName, interceptorDefineClassName, witnessClass); + return; + } + } + } + /** * find origin class source code for interceptor */ DynamicType.Builder newClassBuilder = new ByteBuddy() .rebase(resolution.resolve(), ClassFileLocator.ForClassLoader.ofClassPath()); - + newClassBuilder = this.enhance(enhanceOriginClassName, newClassBuilder); /** @@ -59,14 +72,24 @@ public abstract class AbstractClassEnhancePluginDefine implements IPlugin { logger.debug("enhance class {} by {} completely.", enhanceOriginClassName, interceptorDefineClassName); - } - - protected abstract DynamicType.Builder enhance(String enhanceOriginClassName, DynamicType.Builder newClassBuilder) throws PluginException; + } - /** - * 返回要被增强的类,应当返回类全名 - * - * @return - */ - protected abstract String getBeInterceptedClassName(); + protected abstract DynamicType.Builder enhance(String enhanceOriginClassName, DynamicType.Builder newClassBuilder) throws PluginException; + + /** + * 返回要被增强的类,应当返回类全名 + * + * @return + */ + protected abstract String enhanceClassName(); + + /** + * 返回一个类名的列表 + * 如果列表中的类在JVM中存在,则enhance可以会尝试生效 + * + * @return + */ + protected String[] witnessClasses(){ + return new String[]{}; + } } diff --git a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestMatcherDefine.java b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestMatcherDefine.java index cb4f1b825..b092b7ce7 100644 --- a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestMatcherDefine.java +++ b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestMatcherDefine.java @@ -10,7 +10,7 @@ import com.ai.cloud.skywalking.plugin.interceptor.matcher.PrivateMethodMatcher; */ public class TestMatcherDefine extends ClassInstanceMethodsEnhancePluginDefine { @Override - public String getBeInterceptedClassName() { + public String enhanceClassName() { return "test.ai.cloud.matcher.TestMatcherClass"; } diff --git a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestInterceptorDefine.java b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestInterceptorDefine.java index 31bc788b5..c18b13e8b 100644 --- a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestInterceptorDefine.java +++ b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestInterceptorDefine.java @@ -9,7 +9,7 @@ import com.ai.cloud.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher; public class TestInterceptorDefine extends ClassEnhancePluginDefine { @Override - public String getBeInterceptedClassName() { + public String enhanceClassName() { return "test.ai.cloud.plugin.BeInterceptedClass"; } diff --git a/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/DubboPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/DubboPluginDefine.java index 508445c5c..f727b885d 100644 --- a/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/DubboPluginDefine.java +++ b/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/DubboPluginDefine.java @@ -17,7 +17,7 @@ public class DubboPluginDefine extends ClassStaticMethodsEnhancePluginDefine { } @Override - protected String getBeInterceptedClassName() { + protected String enhanceClassName() { return "com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper"; } } diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/AbstractHttpClientPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/AbstractHttpClientPluginDefine.java index 055a20a38..bfc560385 100644 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/AbstractHttpClientPluginDefine.java +++ b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/AbstractHttpClientPluginDefine.java @@ -6,7 +6,7 @@ import com.ai.cloud.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher; public class AbstractHttpClientPluginDefine extends HttpClientPluginDefine { @Override - public String getBeInterceptedClassName() { + public String enhanceClassName() { return "org.apache.http.impl.client.AbstractHttpClient"; } diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/DefaultRequestDirectorPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/DefaultRequestDirectorPluginDefine.java index 03f3aeb39..d713d8e21 100644 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/DefaultRequestDirectorPluginDefine.java +++ b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/DefaultRequestDirectorPluginDefine.java @@ -10,7 +10,7 @@ public class DefaultRequestDirectorPluginDefine extends HttpClientPluginDefine { * since 4.3, this class is Deprecated. */ @Override - public String getBeInterceptedClassName() { + public String enhanceClassName() { return "org.apache.http.impl.client.DefaultRequestDirector"; } diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/InternalHttpClientPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/InternalHttpClientPluginDefine.java index 84db0b610..ebe4973b6 100644 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/InternalHttpClientPluginDefine.java +++ b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/InternalHttpClientPluginDefine.java @@ -10,7 +10,7 @@ public class InternalHttpClientPluginDefine extends HttpClientPluginDefine { } @Override - public String getBeInterceptedClassName() { + public String enhanceClassName() { return "org.apache.http.impl.client.InternalHttpClient"; } diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/MinimalHttpClientPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/MinimalHttpClientPluginDefine.java index aa5067d8e..17bc9adc3 100644 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/MinimalHttpClientPluginDefine.java +++ b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/org/skywalking/httpClient/v4/plugin/define/MinimalHttpClientPluginDefine.java @@ -10,7 +10,7 @@ public class MinimalHttpClientPluginDefine extends HttpClientPluginDefine { } @Override - public String getBeInterceptedClassName() { + public String enhanceClassName() { return "org.apache.http.impl.client.MinimalHttpClient"; } diff --git a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java index d5e98567b..63fdd97c3 100644 --- a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java +++ b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java @@ -9,7 +9,7 @@ import com.ai.cloud.skywalking.plugin.interceptor.matcher.AnyMethodsMatcher; public class JedisClusterPluginDefine extends ClassInstanceMethodsEnhancePluginDefine { @Override - public String getBeInterceptedClassName() { + public String enhanceClassName() { return "redis.clients.jedis.JedisCluster"; } diff --git a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java index bb86d12a2..8ce663b75 100644 --- a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java +++ b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java @@ -11,7 +11,7 @@ import com.ai.cloud.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher; public class JedisPluginDefine extends ClassInstanceMethodsEnhancePluginDefine { @Override - public String getBeInterceptedClassName() { + public String enhanceClassName() { return "redis.clients.jedis.Jedis"; }