Skywalking学习笔记
1. 总体结构
2. 生产部署
2.1. 启动es
- docker启动
2.2. 下载解压包
-
tar -xzvf apache-skywalking-apm-es7-8.7.0.tar.gz
-
cd apache-skywalking-apm-bin-es7
2.3. 配置启动oap-server
- 修改 config/application.yml
storage:
selector: elasticsearch7
-
启动
bin/oapService.sh -
查看启动日志
- tail -f logs/skywalking-oap-server.log
2.4. 启动skywalking-ui
- 启动:
- bin/webappService.sh
- 日志:
- tailf logs/
- 访问 UI 界面
2.5. 配置系统的启动参数
# SkyWalking Agent 配置
export SW_AGENT_NAME=demo-application # 配置 Agent 名字。一般来说,我们直接使用 Spring Boot 项目的 `spring.application.name` 。
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 # 配置 Collector 地址。
export SW_AGENT_SPAN_LIMIT=2000 # 配置链路的最大 Span 数量。一般情况下,不需要配置,默认为 300 。主要考虑,有些新上 SkyWalking Agent 的项目,代码可能比较糟糕。
export JAVA_AGENT=-javaagent:/Users/chenzz/OpenSource/skywalking-distribution/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar # SkyWalking Agent jar 地址。
# Jar 启动
java -jar $JAVA_AGENT -jar lab-39-demo-2.2.2.RELEASE.jar
启动成功的日志:
DEBUG 2021-10-26 11:45:08:452 main AgentPackagePath : The beacon class location is jar:file:/Users/chenzz/OpenSource/skywalking-distribution/apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar!/org/apache/skywalking/apm/agent/core/boot/AgentPackagePath.class.
INFO 2021-10-26 11:45:08:455 main SnifferConfigInitializer : Config file found in /Users/chenzz/OpenSource/skywalking-distribution/apache-skywalking-apm-bin-es7/agent/config/agent.config.
3. 本地调试agent
3.1. 下载编译 skywalking-java 源码
- git clone git@github.com:apache/skywalking-java.git
- cd skywalking-java
- git submodule init
- git submodule update
- mvn clean package -DskipTests
3.2. 启动es
- 参考 "生产环境部署 - 启动es"
3.3. 配置启动oap-server
- 参考 "生产环境部署 - 配置启动oap-server"
3.4. 启动 skywalking UI
- 参考 "生产环境部署 - 启动 skywalking UI"
3.4. 断点skywalking-java
-
把 skywalking-java 作为一个module和agent工程在一个窗口打开
-
断点
- org.apache.skywalking.apm.agent.SkyWalkingAgent#premain
3.5. 启动agent
- 找一个spring server 应用进行配置
- 例如,sc-11-consul-provider-demo
- VM options:
- -javaagent:/Users/chenzz/IdeaProjects/skywalking/skywalking-java/skywalking-agent/skywalking-agent.jar
- jar包的路径为 3.1中编译得到的jar包
- Environment Variables:
- SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800;SW_AGENT_NAME=demo-provider
- 1
- 启动应用
4. 本地调试 oap-server
4.1. 下载编译skywalking源码
-
git clone https://github.com/apache/skywalking.git
-
cd skywalking
-
git submodule init
-
git submodule update
-
mvn clean package -DskipTests
-
cd apm-dist/target # 编译结果目录
-
tar -zxvf apache-skywalking-apm-bin.tar.gz # 解压 Linux 包
-
cd apache-skywalking-apm-bin
-
ls -ls
4.2. todo
5. agent代码分析
- 所有插件接口 2
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine
-
SpringMVC 插件入口
org.apache.skywalking.apm.plugin.spring.mvc.v4.define.AbstractControllerInstrumentation -
异步发送信息给server的代码入口 3
org.apache.skywalking.apm.agent.core.remote.TraceSegmentServiceClient#consume -
获取traceId
TraceContext.traceId() -
创建span (各种插件的入口)
org.apache.skywalking.apm.agent.core.context.ContextManager#createEntrySpan
协议:https://www.jianshu.com/p/7d9e060c68d2