diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginCfg.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginCfg.java index a0ea8cc981781cb5375828fca217878fc0128c6a..01355211bd793d8bcf9bf9a649509a359c3579d2 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginCfg.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginCfg.java @@ -6,7 +6,6 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; -import java.util.Set; import com.ai.cloud.skywalking.util.StringUtil; 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 07b399eb82c65a5ad3286eff811e77bdd4f68aee..deeabc5775e5dfcdd6f7ad699c88680a75cf9579 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 @@ -21,6 +21,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.ai.cloud.skywalking.plugin.PluginCfg; +import com.ai.cloud.skywalking.util.StringUtil; public class EnhanceClazz4Interceptor { private static Logger logger = LogManager @@ -57,6 +58,11 @@ public class EnhanceClazz4Interceptor { interceptorDefineClassName).newInstance(); String enhanceOriginClassName = define.getBeInterceptedClassName(); + if(StringUtil.isEmpty(enhanceOriginClassName)){ + logger.warn("classname of being intercepted is not defined by {}.", + interceptorDefineClassName); + return; + } logger.debug("prepare to enhance class {} by {}.", enhanceOriginClassName, interceptorDefineClassName); diff --git a/skywalking-sdk-plugin/pom.xml b/skywalking-sdk-plugin/pom.xml index 5205d807587a74f2daf77be93d2cee139b87dd67..e8c170c98cb3348826498760f4b93bd9a47548ed 100644 --- a/skywalking-sdk-plugin/pom.xml +++ b/skywalking-sdk-plugin/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 com.ai.cloud @@ -13,8 +14,9 @@ web-plugin httpclient-4.2.x-plugin httpclient-4.3.x-plugin - httpClient-4.x-plugin - + httpClient-4.x-plugin + httpClient-4.x-plugin-dubbox-rest-attachment + pom skywalking-sdk-plugin diff --git a/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/pom.xml b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..b4f389a3dc3ee7cf4ea9a682fbf0c30684efab11 --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/pom.xml @@ -0,0 +1,79 @@ + + + 4.0.0 + + com.ai.cloud + skywalking-sdk-plugin + 1.0-SNAPSHOT + + + skywalking-httpClient-4.x-plugin-dubbox-rest-attachment + jar + + httpclient-4.x-plugin + http://maven.apache.org + + + UTF-8 + + + + + com.ai.cloud + skywalking-httpClient-4.x-plugin + 1.0-SNAPSHOT + compile + + + + + org.apache.httpcomponents + httpclient + 4.3 + test + + + + + 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-httpClient-4.x-plugin-dubbox-rest-attachment/src/main/java/org/skywalking/httpClient/v4/plugin/dubbox/rest/attachment/DubboxRestHeadSetterAttachment.java b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/main/java/org/skywalking/httpClient/v4/plugin/dubbox/rest/attachment/DubboxRestHeadSetterAttachment.java new file mode 100644 index 0000000000000000000000000000000000000000..6f46e7cf6e212fdd4b1cfceb68eccab91634a5e8 --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/main/java/org/skywalking/httpClient/v4/plugin/dubbox/rest/attachment/DubboxRestHeadSetterAttachment.java @@ -0,0 +1,32 @@ +package org.skywalking.httpClient.v4.plugin.dubbox.rest.attachment; + +import org.skywalking.httpClient.v4.plugin.HttpClientExecuteInterceptor; + +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 DubboxRestHeadSetterAttachment implements InterceptorDefine { + + /** + * this method is called as InterceptorDefine
+ * 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 InterceptPoint[] getBeInterceptedMethods() { + return null; + } + + @Override + public IAroundInterceptor instance() { + return null; + } + +} diff --git a/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/main/resources/skywalking-plugin.def b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/main/resources/skywalking-plugin.def new file mode 100644 index 0000000000000000000000000000000000000000..fbb5519f6d10550c744bcff272b06674c1c3ec59 --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/main/resources/skywalking-plugin.def @@ -0,0 +1 @@ +org.skywalking.httpClient.v4.plugin.dubbox.rest.attachment.DubboxRestHeadSetterAttachment \ No newline at end of file diff --git a/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/test/java/test/skywalking/httpClient/v4x/plugin/dubbox/rest/attachment/TestHttpClientV43.java b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/test/java/test/skywalking/httpClient/v4x/plugin/dubbox/rest/attachment/TestHttpClientV43.java new file mode 100644 index 0000000000000000000000000000000000000000..ab4bfc60926482be61018edc2778b16987f89b28 --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/test/java/test/skywalking/httpClient/v4x/plugin/dubbox/rest/attachment/TestHttpClientV43.java @@ -0,0 +1,60 @@ +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-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/log4j2.xml b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/log4j2.xml new file mode 100644 index 0000000000000000000000000000000000000000..4e2af7485ab84c52a49dd7a350ce08515279fbc1 --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/log4j2.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/sky-walking.auth b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/src/test/resources/sky-walking.auth new file mode 100644 index 0000000000000000000000000000000000000000..c794ea37c6eab65dc8961cf7d320e10a00f84871 --- /dev/null +++ b/skywalking-sdk-plugin/skywalking-httpClient-4.x-plugin-dubbox-rest-attachment/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 +