一 简介
SkyWalking 分布式追踪系统, 国产开源, 被apache 收入。
二 APM
随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个调用链的稳定性就会受到影响,所以会深深的感受到 “银弹” 这个词是不存在的,每种架构都有其优缺点 。
![在这里插入图片描述](https://img-blog.csdnimg.cn/33d152bf17964b7ba399cec2b74a8e62.png)
面对以上情况, 我们就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这时候 APM(应用性能管理 application performance management)工具就该闪亮登场了。 PS: 谷歌论文, 分布式链路跟踪系统Dapper 二 竞品比对 Cat,大众点评开源的,基于JAVA开发的实时应用监控平台,包括实时业务监控,业务监控,可以提供给十几张报表展示。 Zipkin, Twitter开源的,基于Dapper论文实现,主要完成数据的收集,存储,搜索和界面展示。 Pinpoint, 韩国团队开发并开源,针对JAVA编写的大规模分布式系统设计的,通过java agent机制 做字节码植入,实现加入traceID和获取性能数据的目的,对应用代码零侵入 功能丰富,挺好用的,缺点是收集了过多的数据,整体性能比较差 SkyWalking,apache基金会下的APM开源项目, 通过探针自动收集指标数据,并进行分布式追踪,对各种RPC框架都可以支持。 比如dubbo,motan, 并支持spring cloud ,springboot等 官方网站https://skywalking.apache.org/
三 原理
java探针,java agent.
jdk1.5以后引入了javaAgent技术,javaAgent是运行方法之前的拦截器。我们利用javaAgent和ASM字节码技术,在JVM加载class二进制文件的时候,利用ASM动态的修改加载的class文件,在监控的方法前后添加计时器功能,用于计算监控方法耗时,同时将方法耗时及内部调用情况放入处理器,处理器利用栈先进后出的特点对方法调用先后顺序做处理,当一个请求处理结束后,将耗时方法轨迹和入参map输出到文件中,然后根据map中相应参数或耗时方法轨迹中的关键代码区分出我们要抓取的耗时业务。最后将相应耗时轨迹文件取下来,转化为xml格式并进行解析,通过浏览器将代码分层结构展示出来,方便耗时分析
https://www.cnblogs.com/aspirant/p/8796974.html
https://www.cnblogs.com/kokov/p/12120033.html
四 使用
4.1 UI 4.2
三 源码分析**
|