Skywalking 调试环境搭建以及Trace收集流程梳理
在微服务中,由于各个服务交错复杂,链路追踪是必不可少的环节,市面上有很多开源项目,skywalking基于语言探针来实现追踪,针对调研比较,skywalking的探针对吞吐量的影响最小而且可扩展性高,比较适合平台产品的开发。
环境搭建
本次搭建的环境是调试环境,只是针对探针的部署和日志收集的部分搭建,不是skywalking整体的从追踪部署到可视化展示的部分,如果对整体skywalking感兴趣,可以参考官方文档 或者 芋道源码,都有相当不错的入门文档。
前期准备
- JDK8
- MAVEN
- GIT
- IDEA
从github上 clone 下 目前发布的v7.0.0版本,使用IDEA打开。打开后如下图所示
skywalking_dist.jpg
由于我只关注 探针部署以及日志收集相关功能,因此针对UI界面和日志的协议传输就可以舍弃掉了,如果对这些感兴趣,想部署整套skywalking,可以参考 SkyWalking 6.x 源码分析 —— 调试环境搭建
配置修改
简化配置
-
首先我们去掉不需要打包的部分
打开
apm_webapp
模块里的pom文件web_pom.jpg
将以下内容注释掉
![](https://img.haomeiwen.com/i13837765/dce9e759c9581ab5.jpg)
保存pom配置。
-
查看网络传输协议
proto.jpg
可以看到我这个文件夹下也没有相关的协议文件,如果没有,在mvn打包的时候会报错,导致打包不通过,因此我们需要回到github上 将这部分文件下载下来 copy到该目录位置。具体地址:skywalking-data-collect-protocol
![](https://img.haomeiwen.com/i13837765/9e0bd9a63dcaaaa5.jpg)
mvn打包
基本配置修改完成之后,我们就可以将源码打包。
使用IDEA中提供的控制台输入mvn命令即可,非常简单。
![](https://img.haomeiwen.com/i13837765/bd06a48b886c3eaa.jpg)
接下来就是漫长的打包过程。
![](https://img.haomeiwen.com/i13837765/b4fd86e6000fae2e.jpg)
我们可以看到,打包后的所有jar已经被放在了 skywalking-agent
的文件夹下。
![](https://img.haomeiwen.com/i13837765/0f7f59464ab41897.jpg)
调试环境测试
这里的环境测试参考 芋道源码的方式 ,我们就简单创建一个springboot项目,然后其目录下引入skywalking,启动的时候加入 skywalking探针配置,在skywalking启动类中加入debugger,看看启动时 是否进入,如果进入,则说明调试环境搭建成功。
-
创建一个简单的springboot项目,我这里就创建一个spring cloud gateway 项目。
sk-springcloudgateway.jpg
-
将刚刚打包好的skywalking 项目以module形式导入。
sst1.jpg
![](https://img.haomeiwen.com/i13837765/386483dd3e488c30.jpg)
-
配置参数启动
st3.jpg
![](https://img.haomeiwen.com/i13837765/1d1d247fb08a8b4b.jpg)
![](https://img.haomeiwen.com/i13837765/11af363c9dd68d86.jpg)
-
添加debug位置
org.apache.skywalking.apm.agent.SkyWalkingAgent
debugger启动即可。premain.jpg
Trace数据收集
首先我们需要了解一下这篇博客 微服务链路追踪原理 看懂了这个之后我们可以在看一下 SkyWalking的 插件开发指南 Plugin Development Guide ,了解了 skywalking的 插件机制后,其实我们大体上就可以了解到大体Trace数据可以分为三类。
- EntrySpan
- LocalSpan
- ExitSpan
我们收集的就是这些Span组成的数据。针对追踪的不同场景,选择适合的Span来记录。具体的数据收集流程,我整理了一套流程图,感兴趣的可以根据下面的流程图,自己去debugger一下,就可以理解收集的具体步骤和流程。
![](https://img.haomeiwen.com/i13837765/b06a802ebac04cf2.jpg)
小结
这里主要是我自己在扩展skywalking的时候,遇到的问题和一些知识点的记录,只是记录调试环境的搭建,而不是整个skywalking的部署,如果你想对skywalking的插件和日志收集等其他扩展点进行扩展,相信你这篇文章给你有一点帮助,如果你只是想试探使用以下skywalking,那么参照官方文档是最好的选择。