This commit is contained in:
parent
5303194337
commit
733235b952
44
README.md
44
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
|
||||
<!-- API日志输出,客户端可指定所需的log4j2版本 -->
|
||||
<!-- 2.4.1为开发过程所选用版本 -->
|
||||
|
|
@ -162,47 +162,11 @@ INSERT INTO `system_config` (`config_id`,`conf_key`,`conf_value`,`val_type`,`val
|
|||
<artifactId>skywalking-api</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<!-- Spring插件,监控所有Spring托管对象的调用-->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-spring-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<!-- dubbo插件,监控dubbo/dubbox调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-dubbo-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<!-- jdbc插件,监控所有的jdbc调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-jdbc-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<!-- web,监控web调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-web-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<!-- httpClient插件,监控httpClient 4.2的调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-httpClient-4.2.x-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<!-- httpClient插件,监控httpClient 4.3的调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-httpClient-4.3.x-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
```
|
||||
插件不会引用所需的第三方组件(如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等),请自行引入所需的版本。
|
||||
|
||||
|
||||
## 下载并设置授权文件
|
||||
|
|
|
|||
|
|
@ -1,4 +1,13 @@
|
|||
# 如何追踪注册在Spring中类实例的方法调用?
|
||||
- 引入所需插件
|
||||
```xml
|
||||
<!-- Spring插件,监控所有Spring托管对象的调用-->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-spring-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
```
|
||||
- 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
|
||||
<!-- dubbo插件,监控dubbo/dubbox调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-dubbo-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
```
|
||||
- 这里的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
|
||||
<!-- dubbo插件,监控dubbo/dubbox调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-dubbo-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
```
|
||||
- dubbox 2.8.4 较为符合dubbo的服务规范,这里指dubbox支持RpcContext中的attachment。追踪方式和dubbo相同。
|
||||
- 在客户端和服务端配置全局filter:swEnhanceFilter。
|
||||
```xml
|
||||
|
|
@ -48,7 +75,170 @@ xsi:schemaLocation="http://cloud.asiainfo.com/schema/skywalking
|
|||
<dubbo:provider filter="swEnhanceFilter"/>
|
||||
```
|
||||
|
||||
# 如何追踪dubbox 2.8.3 以及之前的调用?
|
||||
# 如何追踪dubbox 2.8.3 以及之前版本的调用?
|
||||
- 引入所需插件
|
||||
```xml
|
||||
<!-- dubbo插件,监控dubbo/dubbox调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-dubbo-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
```
|
||||
- 由于引入dubbox,主要目的是使用rest+json协议,所以以下方案都是在此种调用模式下的解决方案。其他协议未测试,请谅解,望大家提供测试结果与反馈。
|
||||
- dubbox 2.8.3 以及之前版本不能正确的支持RpcContext中的attachment,存在BUG(2.8.4已修复)。采用扩展参数对象的方法支持追踪的传递性。
|
||||
- 注意:依然推荐升级到dubbox 2.8.4,此时能更好的进行追踪,并对程序侵入性更小。
|
||||
- 注意:依然推荐升级到dubbox 2.8.4,此时能更好的进行追踪,并对程序侵入性更小。
|
||||
- 在客户端和服务端配置全局filter:swEnhanceFilter。
|
||||
```xml
|
||||
//客户端Spring配置文件
|
||||
<dubbo:consumer filter="swEnhanceFilter"/>
|
||||
|
||||
//服务端Spring配置文件
|
||||
<dubbo:provider filter="swEnhanceFilter"/>
|
||||
```
|
||||
- 在客户端和服务端启动时,开启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
|
||||
<!-- jdbc插件,监控所有的jdbc调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-jdbc-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
```
|
||||
- 设置特定的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
|
||||
<!-- jdbc插件,监控所有的jdbc调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-jdbc-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
```
|
||||
- 轻松实现自定义的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
|
||||
<!-- web,监控web调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-web-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
```
|
||||
- 服务端使用Filter追踪web请求
|
||||
```xml
|
||||
<filter>
|
||||
<filter-namer>tracingFilter</filter-namer>
|
||||
<filter-classr>com.ai.cloud.skywalking.plugin.web.SkyWalkingFilter</filter-class>
|
||||
<init-param>
|
||||
<param-name>tracing-name</param-name>
|
||||
<!--分布式埋点信息,默认放在request的header中,key=SkyWalking-TRACING-NAME,可根据需要修改-->
|
||||
<param-value>SkyWalking-TRACING-NAME</param-value>
|
||||
</init-param>
|
||||
</filterr>
|
||||
<filter-mappingr>
|
||||
<filter-name>tracingFilter</filter-namer>
|
||||
<!--追踪路径应为MVC的请求路径,不建议包括js/css/图片等资源路径-->
|
||||
<url-patternr>/request-uri</url-patternr>
|
||||
</filter-mappingr>
|
||||
```
|
||||
|
||||
# 如何追踪HttpClient发起HTTP调用?
|
||||
|
||||
## httpclient 4.2.x
|
||||
- 引入所需插件
|
||||
```xml
|
||||
<!-- httpClient插件,监控httpClient 4.2的调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-httpClient-4.2.x-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
```
|
||||
- 使用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
|
||||
<!-- httpClient插件,监控httpClient 4.3的调用 -->
|
||||
<dependency>
|
||||
<groupId>com.ai.cloud</groupId>
|
||||
<artifactId>skywalking-httpClient-4.3.x-plugin</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
```
|
||||
- 使用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");
|
||||
```
|
||||
Loading…
Reference in New Issue