From 733235b9529d6c5f723b7b63a36b0e2a61bbf3f3 Mon Sep 17 00:00:00 2001 From: wusheng Date: Fri, 26 Feb 2016 16:06:37 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=B0=86=E6=96=87=E6=A1=A3=E4=BB=8Ehttp://wu?= =?UTF-8?q?-sheng.github.io/sky-walking/sample-code/codeView.html=E8=BF=81?= =?UTF-8?q?=E5=9B=9Egithub=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 44 +------- skywalking-sdk-plugin/README.md | 194 +++++++++++++++++++++++++++++++- 2 files changed, 196 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index c5f7f861a..45466f855 100644 --- a/README.md +++ b/README.md @@ -146,8 +146,8 @@ INSERT INTO `system_config` (`config_id`,`conf_key`,`conf_value`,`val_type`,`val ## 使用maven发布各插件工程 发布skywalking-sdk-plugin下的各子工程(dubbo-plugin,spring-plugin,web-plugin,jdbc-plugin,httpclient-4.2.x-plugin,httpclient-4.3.x-plugin) -## 根据所需的监控点,引入maven依赖 -暂不存在公网仓库,需要本地编译并发布 +## 引入核心SDK +无论试用哪种插件,都必须引入 ```xml @@ -162,47 +162,11 @@ INSERT INTO `system_config` (`config_id`,`conf_key`,`conf_value`,`val_type`,`val skywalking-api 1.0-SNAPSHOT - - - com.ai.cloud - skywalking-spring-plugin - 1.0-SNAPSHOT - - - - com.ai.cloud - skywalking-dubbo-plugin - 1.0-SNAPSHOT - - - - com.ai.cloud - skywalking-jdbc-plugin - 1.0-SNAPSHOT - - - - com.ai.cloud - skywalking-web-plugin - 1.0-SNAPSHOT - - - - com.ai.cloud - skywalking-httpClient-4.2.x-plugin - 1.0-SNAPSHOT - - - - com.ai.cloud - skywalking-httpClient-4.3.x-plugin - 1.0-SNAPSHOT - ``` -插件不会引用所需的第三方组件(如Spring、dubbo、dubbox等),请自行引入所需的版本。 ## 根据所需插件,配置应用程序 -参考[SDK用户指南](https://github.com/wu-sheng/sky-walking/tree/master/skywalking-sdk-plugin) +- 参考[SDK用户指南](https://github.com/wu-sheng/sky-walking/tree/master/skywalking-sdk-plugin) +- 注意:插件不会引用所需的第三方组件(如Spring、dubbo、dubbox等),请自行引入所需的版本。 ## 下载并设置授权文件 diff --git a/skywalking-sdk-plugin/README.md b/skywalking-sdk-plugin/README.md index 84842881d..895096aab 100644 --- a/skywalking-sdk-plugin/README.md +++ b/skywalking-sdk-plugin/README.md @@ -1,4 +1,13 @@ # 如何追踪注册在Spring中类实例的方法调用? +- 引入所需插件 +```xml + + + com.ai.cloud + skywalking-spring-plugin + 1.0-SNAPSHOT + +``` - Spring配置文件头部,配置所需的命名空间 ```xml xmlns:skywalking="http://cloud.asiainfo.com/schema/skywalking" @@ -27,6 +36,15 @@ xsi:schemaLocation="http://cloud.asiainfo.com/schema/skywalking - 部分类由于被Spring代理后,类名发生变化,可能造成无法追踪 # 如何追踪dubbo调用? +- 引入所需插件 +```xml + + + com.ai.cloud + skywalking-dubbo-plugin + 1.0-SNAPSHOT + +``` - 这里的dubbo,专指阿里发布的,已停止维护的标准dubbo版本([dubbo.io](http://dubbo.io/))。扩展版本dubbox请参考相关章节。 - 在客户端和服务端配置全局filter:swEnhanceFilter。 ```xml @@ -38,6 +56,15 @@ xsi:schemaLocation="http://cloud.asiainfo.com/schema/skywalking ``` # 如何追踪dubbox 2.8.4 调用? +- 引入所需插件 +```xml + + + com.ai.cloud + skywalking-dubbo-plugin + 1.0-SNAPSHOT + +``` - dubbox 2.8.4 较为符合dubbo的服务规范,这里指dubbox支持RpcContext中的attachment。追踪方式和dubbo相同。 - 在客户端和服务端配置全局filter:swEnhanceFilter。 ```xml @@ -48,7 +75,170 @@ xsi:schemaLocation="http://cloud.asiainfo.com/schema/skywalking ``` -# 如何追踪dubbox 2.8.3 以及之前的调用? +# 如何追踪dubbox 2.8.3 以及之前版本的调用? +- 引入所需插件 +```xml + + + com.ai.cloud + skywalking-dubbo-plugin + 1.0-SNAPSHOT + +``` - 由于引入dubbox,主要目的是使用rest+json协议,所以以下方案都是在此种调用模式下的解决方案。其他协议未测试,请谅解,望大家提供测试结果与反馈。 - dubbox 2.8.3 以及之前版本不能正确的支持RpcContext中的attachment,存在BUG(2.8.4已修复)。采用扩展参数对象的方法支持追踪的传递性。 -- 注意:依然推荐升级到dubbox 2.8.4,此时能更好的进行追踪,并对程序侵入性更小。 \ No newline at end of file +- 注意:依然推荐升级到dubbox 2.8.4,此时能更好的进行追踪,并对程序侵入性更小。 +- 在客户端和服务端配置全局filter:swEnhanceFilter。 +```xml +//客户端Spring配置文件 + + +//服务端Spring配置文件 + +``` +- 在客户端和服务端启动时,开启dubbox 2.8.3之前版本的修复功能。在服务启动前调用如下代码,或将com.ai.cloud.skywalking.plugin.dubbox.bugfix.below283.BugFixAcitve注册到Spring中。 +```java +new com.ai.cloud.skywalking.plugin.dubbox.bugfix.below283.BugFixAcitve(); +``` +- dubbox调用参数包含javabean参数,并继承com.ai.cloud.skywalking.plugin.dubbox.bugfix.below283.SWBaseBean。只包含java基础类型(如:String、Integer等)的调用,无法支持追踪传递 +- 客户端如果直接使用非dubbox客户端发起http restful调用,需要在发送的参数中设置contextData。 + +# 如何追踪MySQL访问? +- 引入所需插件 +```xml + + + com.ai.cloud + skywalking-jdbc-plugin + 1.0-SNAPSHOT + +``` +- 设置特定的JDBC Driver +```properties +Driver="com.ai.cloud.skywalking.plugin.jdbc.mysql.MySQLTracingDriver" +``` +- 设置特定的JDBC URL +```properties +jdbc.url=tracing:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 +``` + +# 如何追踪MySQL之外的其他JDBC? +- 引入所需插件 +```xml + + + com.ai.cloud + skywalking-jdbc-plugin + 1.0-SNAPSHOT + +``` +- 轻松实现自定义的JDBC Driver扩展 +```java +import java.sql.Driver; +import java.sql.DriverManager; +import java.sql.SQLException; + +import com.ai.cloud.skywalking.plugin.jdbc.TracingDriver; + +public class XXXDBTracingDriver extends TracingDriver { + static { + try { + DriverManager.registerDriver(new XXXDBTracingDriver()); + } catch (SQLException e) { + throw new RuntimeException("register " + + MySQLTracingDriver.class.getName() + " driver failure."); + } + } + + /** + * 继承自TracingDriver,返回真实的Driver + */ + @Override + protected Driver registerTracingDriver() { + try { + //示例:return new com.mysql.jdbc.Driver(); + return new Driver(); + } catch (SQLException e) { + throw new RuntimeException("create Driver failure."); + } + } +} +``` +- 设置新实现的JDBC Driver +```properties +Driver="XXXDBTracingDriver" +``` +- 设置特定的JDBC URL +```properties +jdbc.url=tracing:jdbc:xxxdb://localhost:3306/test +``` + +# 如何追踪web应用服务器访问? +- 引入所需插件 +```xml + + + com.ai.cloud + skywalking-web-plugin + 1.0-SNAPSHOT + +``` +- 服务端使用Filter追踪web请求 +```xml + + tracingFilter + com.ai.cloud.skywalking.plugin.web.SkyWalkingFilter + + tracing-name + + SkyWalking-TRACING-NAME + + + + tracingFilter + + /request-uri + +``` + +# 如何追踪HttpClient发起HTTP调用? + +## httpclient 4.2.x +- 引入所需插件 +```xml + + + com.ai.cloud + skywalking-httpClient-4.2.x-plugin + 1.0-SNAPSHOT + +``` +- 使用SWTracingHttpClient封装所需的httpClient,此httpClient所有调用都会被监控 +```java +HttpClient httpclient = new SWTracingHttpClient(new DefaultHttpClient()); +``` +- 上下文将被存储在http request head,中,默认名称和SkyWalkingFilter保持一致。 +- 如果服务端使用dubbox 2.8.4 的提供的http-rest,请使用方法重载 +```java +HttpClient httpclient = new SWTracingHttpClient(new DefaultHttpClient(), "Dubbo-Attachments"); +``` + +## httpclient 4.3.x +- 引入所需插件 +```xml + + + com.ai.cloud + skywalking-httpClient-4.3.x-plugin + 1.0-SNAPSHOT + +``` +- 使用SWTracingCloseableHttpClient封装所需的httpClient,此httpClient所有调用都会被监控 +```java +CloseableHttpClient httpclient = new SWTracingCloseableHttpClient(closeableHttpClient); +``` +- 上下文将被存储在http request head,中,默认名称和SkyWalkingFilter保持一致。 +- 如果服务端使用dubbox 2.8.4 的提供的http-rest,请使用方法重载 +```java +CloseableHttpClient httpclient = new SWTracingCloseableHttpClient(closeableHttpClient, "Dubbo-Attachments"); +``` \ No newline at end of file