在spring boot中三分钟上手apache顶级分布式链路追踪系统skywalking

原文:http://www.javashuo.com/article/p-krlqrpod-x.htmljava

 

 

skywalking在apache里全票经过成为了apache顶级链路追踪系统git

项目地址:github.com/apache/skyw… 官方文档:github.com/apache/skyw…github

虽然官方文档很全,可是中文文档目前还没彻底翻译过来,研究文档须要花费一些时间,下面做者整理总结了官方文档,能够帮助读者快速上手web

skywalking拥有丰富的三方库追踪支持,参考: apm-sdk-pluginspring

经常使用的组件好比dubbo, httpclient, rocketmq, jdbc, hystrix等都已官方支持了

 

为了快速启动项目,会使用docker技术docker

下载编译

官方文档:github.com/apache/skyw… 下载源码,并下载依赖的git子模块shell

git clone https://github.com/apache/skywalking.git
git submodule init
git submodule update
复制代码

执行编译apache

mvn clean package -Dmaven.test.skip=true
复制代码

首次编译须要下载依赖,等待的时间可能会久一些 出现下面的提示就是编译成功了浏览器

 

查看dist目录里的编译结果bash

 

能够看到skywalking的部署包成功生成了

构建skywalking运行的docker镜像

docker时区修改成 Asia/Shanghai

进入docker目录,编辑docker-compose.yml,为elasticsearch, oap, ui服务添加时区环境变量为 Asia/Shanghai 核心代码以下

environment:  TZ: Asia/Shanghai 复制代码

完整的docker-compose.yml已上传github,参考:docker-compose.yml

构建docker镜像

执行命令 make build 开始构建docker镜像

 

使用docker images命令查看构建的容器

 

能够看到skywalking部署须要的ui和oap服务已经构建成功了

启动skywalking服务

使用命令docker-compose up -d启动服务

 

在浏览器里打开 ip:8080 查看效果

Snipaste_2019-05-07_09-18-50使用默认的用户名和密码 admin admin登录管理后台

 

编写测试代码

可使用现成的spring boot项目,也能够在 start.spring.io/ 建立一个新的spring boot项目

下面编写几个请求来试用下skywalking的追踪功能 核心案例代码以下

普通请求

@RequestMapping("test1") public String test1() { return "Hello World"; } 复制代码

异常请求

@RequestMapping("test2") public String test2() { if (true) { throw new RuntimeException("a exception occured"); } return "Hello World2"; } 复制代码

超时请求

@RequestMapping("test3") public String test3() throws InterruptedException { Thread.sleep(10000); return "Hello World3"; } 复制代码

将项目打成jar,带上skywalking启动

把skywalking项目目录里的skywalking-agent复制一份到项目里 而后修改skywalking-agent/config/agent.config配置文件

skywalking-config主要是修改上图里的项目名称,这样在控制后台就好标识出这个项目了,好比把配置 agent.service_name修改为myskywalking

 

启动spring boot项目

mvn clean package -Dmaven.test.skip=true java -javaagent:项目所在目录/skywalking-agent/skywalking-agent.jar -jar target/myskywalking-0.0.1-SNAPSHOT.jar 复制代码

而后在浏览器里请求上面编写的测试代码,可使用curl,好比:

curl -k -vvv http://127.0.0.1:8080/test/test1
curl -k -vvv http://127.0.0.1:8080/test/test2
curl -k -vvv http://127.0.0.1:8080/test/test3
复制代码

而后在skywalking管理后台查看追踪到的数据

 

在追踪页面能够看到请求

默认skywalking会抓取100%的请求,能够修改agent.config配置文件中的agent.sample_n_per_3_secs配置项配置抓取的请求的百分比

 

查看异常的请求

能够看到异常请求调用的堆栈信息被记录,这个在排查问题的过程当中通常都会用到

 

一些注意的点

若是使用的组建没有内置的追踪支持,能够自行编写插件实现,插件编写参考:Java-Plugin-Development-Guide.md

docker容器里的时区要设置成和浏览器所在的机器的时区一致,好比 Aisa/Shanghai,不一致可能没法在浏览器里查看追踪的数据

相关文章
相关标签/搜索