0
点赞
收藏
分享

微信扫一扫

链路追踪 研究03 SkyWalking

链路追踪 研究03  SkyWalking_数据

整体主要分为三个部分:


1.skywalking-collector:链路数据归集器,数据可以保存在H2或ElasticSearch

2.skywalking-web:web的可视化管理后台,可以查看归集的数据

3.skywalking-agent:探针,用来收集和推送数据到归集器

链路追踪 研究03  SkyWalking_拦截器_02

链路追踪 研究03  SkyWalking_java_03

链路追踪 研究03  SkyWalking_数据_04

链路追踪 研究03  SkyWalking_数据_05

链路追踪 研究03  SkyWalking_数据_06

SkyWalking trace视图

链路追踪 研究03  SkyWalking_拦截器_07

源码分析

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

agent启动入口类SkyWalkingAgent


链路追踪 研究03  SkyWalking_java_08

1.初始化agent配置

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

3.根据byteBuddy,创建agentBuilder

链路追踪 研究03  SkyWalking_拦截器_09

链路追踪 研究03  SkyWalking_数据_10

4.2 调用每个service的prepare方法

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

4.4调用每个service的onComplete方法

链路追踪 研究03  SkyWalking_拦截器_11

链路追踪 研究03  SkyWalking_拦截器_12

Agent初始化时,会调用PluginBootstrap#loadPlugins,加载所有的插件,流程图如下:

链路追踪 研究03  SkyWalking_数据_13

SkyWalking 通过 JavaAgent 机制,对需要拦截的类的方法,使用 byte-buddy 动态修改 Java 类的二进制,从而进行方法切面拦截,记录调用链路。


看具体的代码实现之前,想一下拦截会涉及到哪些元素 :


拦截切面 InterceptPoint

拦截器 Interceptor

拦截类的定义 Define :一个类有哪些拦截切面及对应的拦截器

链路追踪 研究03  SkyWalking_java_14

直接看增强实现enhance

1.enhanceClass 对静态方法增强

链路追踪 研究03  SkyWalking_拦截器_15

InterceptPoint 拦截点,每个插件都需要实现这个拦截器接口

链路追踪 研究03  SkyWalking_java_16

链路追踪 研究03  SkyWalking_java_17

链路追踪 研究03  SkyWalking_java_18



举报

相关推荐

0 条评论