之前也有阅读过skywalking的源码,但是很久不看或者当时为了好奇,没有使用,这东西经过一段时间就忘记了,现在写个笔记,记录下学习的过程,也方便之后查漏补缺
环境配置
见之前的文章
启动项目,调试spring boot web
1 启动项目
核心流程分为几步:
- 加载核心配置
- 初始化插件的finder,帮助加载插件
- 构建
ByteBuddy
- 启动agent
1.1 加载配置
SnifferConfigInitializer.initializeCoreConfig(agentArgs);
加载配置文件的默认顺序:
先读取环境变量:skywalking_config
如果环境变量为空,则读取: /config/agent.config
- 读取系统变量的配置,如果有相同的,即覆盖.
overrideConfigBySystemProp();
- 读取启动命令的配置,覆盖已有的配置,(若有)
overrideConfigByAgentOptions(agentOptions);
将加载的配置初始化到实体类上
initializeConfig(Config.class);
2 、初始化插件finder(嗅探器?)
2.1、 加载默认的插件
org.apache.skywalking.apm.agent.core.plugin.PluginBootstrap#loadPlugins
AgentClassLoader.initDefaultLoader();
读取类加载器agentClassLoader
下的 skywalking-plugin.def
文件
类似于这种
skywalking-plugin.def
MOCKPLUGIN=org.apache.skywalking.apm.agent.core.plugin.MockAbstractClassEnhancePluginDefine