分布式追踪 SkyWalking 源码分析一 Agent初始化

还是先看代码工程结构

代码1885个类,总行数15万左右,除去非核心功能,核心功能代码量不大

SkyWalking Agent 基于 JavaAgent 机制,实现应用透明接入 SkyWalking 。

agent启动入口类SkyWalkingAgent

  

1.初始化agent配置

2.加载agent插件,创建出pluginFinder

3.根据byteBuddy,创建agentBuilder

4.调用ServiceManager.INSTANCE.boot()  启动

   4.1 调用loadAllServices() 加载所有的服务 

加载所有的bootServices的接口实现类,包括默认实现和覆盖实现

4.2 调用每个service的prepare方法

4.3 调用每个service的boot方法,启动

4.4调用每个service的onComplete方法

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

继续看Agent的配置初始化  SnifferConfigInitializer

配置分为本地配置config和远程RemoteDownstreamConfig两种,后者从Collect Server获取

1.从本地文件加载配置

2.从环境变量覆盖配置

3.根据agentOptions覆盖配置

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

plugin 插件包

PluginBootStrap 插件引导程序

先看PluginBootstrap,调用loadPlugins加载所有的插件

  

1.获取resources,也就是插件url列表

2.加载到插件配置pluginCfg

3.获取插件定义列表pluginClassList,循环每个插件定义pluginDefine

4.然后创建插件类增强定义,生成plugin,增加到最后的plugin结果列表

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

PluginFinder 插件查找实现

插件的匹配

1.名称匹配NameMatch

2.签名匹配SignatureMatch

发布了331 篇原创文章 · 获赞 1 · 访问量 3517

猜你喜欢

转载自blog.csdn.net/kuaipao19950507/article/details/103647994