6.sw如何创建trace?
6.sw如何创建trace?
sw的主要功能就说链路跟踪,那么如何创建trace呢?
因为sw可以支持很多种的服务,包括同步线程,异步线程,MySQL,redis.
sw 是如何通过trace将不同的链路追踪,串联起来的呢?
这里通过http请求,来举例研究。
1. 创建Trace
1.1 创建测试环境
首先,我们需要创建一个测试环境,创建一个简单的spring mvc 的controller 用于提供Http服务
这个接口接收一个参数,将其存入redis,然后在从redis读取出来,返回给浏览器客户端。
那么可以考虑这个过程,有以下几个操作:
- 接收请求
- 存入redis
- 从redis读取
- 返回结果
1.2 启动调试环境,断点来看。
D:\code\github\sw-learn
-javaagent:D:\code\github\sw-learn\skywalking-java\skywalking-agent\skywalking-agent.jar
-javaagent:D:/code/github/sw-learn/skywalking-java/skywalking-agent/skywalking-agent.jar
首先记得,重新compile以下 agent 的源码,因为如果你修改了的话,不重新compile的话,有些源码会对不上。PS D:\code\github\sw-learn\skywalking-java> mvn clean install -DskipTests
./mvnw clean package -Pall
或者说,如果源码调试的时候和代码匹配补上,那么手动选择一下源码,chosse source code, 将原来的 mvn lib 改成当前工程中 sw-java的源码目录。
将 sky walking的check Style 关闭,他不让写中文注释。
D:\code\github\sw-learn\skywalking-java\pom.xml
将失败改成false
<!-- <checkstyle.fails.on.error>true</checkstyle.fails.on.error>-->
<!-- close check style plugin-->
<checkstyle.fails.on.error>false</checkstyle.fails.on.error>
[INFO] There are 102 errors reported by Checkstyle 9.3 with D:\code\github\sw-learn\skywalking-java/apm-checkstyle/checkStyle.xml ruleset.
[ERROR] src\main\java\org\apache\skywalking\apm\agent\core\boot\OverrideImplementor.java:[30] (regexp) RegexpSingleline: Not allow chinese character !
[ERROR] src\main\java\org\apache\skywalking\apm\agent\core\boot\OverrideImplementor.java:[31] (regexp) RegexpSingleline: Not allow chinese character !
[ERROR] src\main\java\org\apache\skywalking\apm\agent\core\boot\OverrideImplementor.java:[32] (regexp) RegexpSingleline: Not allow chinese character !
[ERROR] src\main\java\org\apache\skywalking\apm\agent\core\boot\OverrideImplementor.java:[33] (regexp) RegexpSingleline: Not allow chinese character !
[ERROR] src\main\java\org\apache\skywalking\apm\agent\core\boot\OverrideImplementor.java:[35] (regexp) RegexpSingleline: Not allow chinese character !
[ERROR] src\main\java\org\apache\skywalking\apm\agent\core\boot\OverrideImplementor.java:[36] (regexp) RegexpSingleline: Not allow chinese character !
Redis 写数据拦截器
org.apache.skywalking.apm.plugin.lettuce.v5.RedisChannelWriterInterceptor
创建span
org.apache.skywalking.apm.agent.core.context.ContextManager#createExitSpan(java.lang.String, java.lang.String)
SpringMVC
org.apache.skywalking.apm.plugin.spring.mvc.commons.interceptor.AbstractMethodInterceptor