SkyWalking监控项全面配置教程源码启动流程解析二开实战

3 篇文章 1 订阅
1 篇文章 1 订阅

深度剖析SkyWalking分布式链路追踪

源码分析

skywalking分布式链路追踪流程大致如下:
1.Agent 采集数据
2.Agent 发送数据到Collector
3.Collector 接收数据
4.Collector 将接收的数据储存到持久层

代码分析

我们从apm-sniffer工程开始出发(sniffer既嗅探器、探针的意思

在这里插入图片描述

  • 以SkyWalkingAgent类中Premain进行程序的入口同时依赖于pom文件
    在这里插入图片描述
    – 其中 Transformer指定生成Jar包, Premain-Class 指定最后生成的类名称叫什么点进去可以看到这里是个相互依赖的关系=>
    在这里插入图片描述
    – Can-Redefine-Classes是否能重新变形改变这个类意义在于改变修改后的字节码

什么是字节码?

Java之所以可以“一次编译,到处运行”,一是因为JVM针对各种操作系统、平台都进行了定制,二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class文件)供JVM使用。之所以被称之为字节码,是因为字节码文件由十六进制值组成,而JVM以两个十六进制值为一组,即以字节为单位进行读取。


探针agent==>oapService代码执行过程

agent源码步骤解析

  • 1.初始化Agent配置 流程
    –当程序入口接收到参数为; 入参参数agentArgs 代表-javaagent://.jar= agentArgs 多个参数声明v1=k,v2=k1,v3=k2 split进行分割
    传入到permain入口 进行第一步

在这里插入图片描述

  • 加在插件寻找plugin
    在这里插入图片描述
    – 引用插件
    在这里插入图片描述
  • 2.字节码增强工具
    在这里插入图片描述
  • 3.将收集的数据传到oap服务
    –完成并注册关闭钩子
    在这里插入图片描述

什么是钩子

钩子方法源于设计模式中模板方法(Template Method)模式,模板方法模式的概念为:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。其主要分为两大类:模版方法和基本方法,而基本方法又分为:抽象方法(Abstract Method),具体方法(Concrete Method),钩子方法(Hook Method)。
————————————————
钩子

监控接口相应时间

  • 通过新建任务选择指定接口端点、进行接口相应速度的排查,指标:开始时间,服务名,相应速率
    在这里插入图片描述
  • 点击分析可查看接口的相应时间就知道具体在哪里时间过长
    在这里插入图片描述

监控服务的相应数据__自定义链路追踪

1. 在想要监控的端点服务下引入skywalking 依赖

 <!--自定义链路追踪-->
    <dependency>
        <groupId>org.apache.skywalking</groupId>
        <artifactId>apm-toolkit-trace</artifactId>
        <version>8.4.0</version>
    </dependency>

2.在具体服务业务层引入监控注解

@Trace
@Tags({@Tag(key=“getAll”,value = “returnedObj”),
@Tag(key = “getAll”,value = “arg[0]”)})

其中key为固定,方法中有入参则value指定参数位数,无入参则默认returnedObj

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值