在spring boot中三分钟上手apache顶级分布式链路追踪系统skywalking
原文:https://juejin.im/post/5cd10e81e51d453b560f2d53
skywalking在apache里全票通过成为了apache顶级链路追踪系统
项目地址:github.com/apache/skyw… 官方文档:github.com/apache/skyw…
虽然官方文档很全,但是中文文档目前还没完全翻译过来,研究文档需要花费一些时间,下面作者整理总结了官方文档,可以帮助读者快速上手
skywalking拥有丰富的三方库追踪支持,参考: apm-sdk-plugin
常用的组件比如dubbo, httpclient, rocketmq, jdbc, hystrix等都已官方支持了
为了快速启动项目,会使用docker技术
下载编译
官方文档:github.com/apache/skyw… 下载源码,并下载依赖的git子模块
git clone https://github.com/apache/skywalking.git
git submodule init
git submodule update
复制代码
执行编译
mvn clean package -Dmaven.test.skip=true
复制代码
首次编译需要下载依赖,等待的时间可能会久一些 出现下面的提示就是编译成功了
查看dist目录里的编译结果
可以看到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 查看效果
使用默认的用户名和密码 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配置文件
主要是修改上图里的项目名称,这样在控制后台就好标识出这个项目了,比如把配置 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,不一致可能无法在浏览器里查看追踪的数据
在spring boot中三分钟上手apache顶级分布式链路追踪系统skywalking的更多相关文章
- Spring Cloud 整合分布式链路追踪系统Sleuth和ZipKin实战,分析系统瓶颈
导读 微服务架构中,是否遇到过这种情况,服务间调用链过长,导致性能迟迟上不去,不知道哪里出问题了,巴拉巴拉....,回归正题,今天我们使用SpringCloud组件,来分析一下微服务架构中系统调用的瓶 ...
- 在微服务框架Demo.MicroServer中添加SkyWalking+SkyApm-dotnet分布式链路追踪系统
1.APM工具的选取 Apm监测工具很多,这里选用网上比较火的一款Skywalking. Skywalking是一个应用性能监控(APM)系统,Skywalking分为服务端Oap.管理界面UI.以及 ...
- spring boot(三):Spring Boot中Redis的使用
spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...
- (转)Spring Boot(三):Spring Boot 中 Redis 的使用
http://www.ityouknow.com/springboot/2016/03/06/spring-boot-redis.html Spring Boot 对常用的数据库支持外,对 Nosql ...
- Spring Boot(三):Spring Boot 中 Redis 的使用
Spring Boot 对常用的数据库支持外,对 Nosql 数据库也进行了封装自动化. Redis 介绍 Redis 是目前业界使用最广泛的内存数据存储.相比 Memcached,Redis 支持更 ...
- springboot(三):Spring boot中Redis的使用
spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...
- Spring boot(三)在Spring boot中Redis的使用
spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...
- SpringBoot(三) :Spring boot 中 Redis 的使用
前言: 这一篇讲的是Spring Boot中Redis的运用,之前没有在项目中用过Redis,所以没有太大的感觉,以后可能需要回头再来仔细看看. 原文出处: 纯洁的微笑 SpringBoot对常用的数 ...
- Spring Boot(三):Spring Boot中的事件的使用 与Spring Boot启动流程(Event 事件 和 Listeners监听器)
前言:在讲述内容之前 希望大家对设计模式有所了解 即使你学会了本片的内容 也不知道什么时候去使用 或者为什么要这样去用 观察者模式: 观察者模式是一种对象行为模式.它定义对象间的一种一对多的依赖关系, ...
随机推荐
- 打开navicat 报错????
好心好意打开数据库图形化管理工具居然报错了???? 那怎么办呢????? google一下吧...... 下载两个文件 就是这两个 放入你的图形化页面的目录中 就可以正常打开了 帅不帅??? 那怎么下 ...
- 字符串s倒序输出
编程将字符串s倒序输出,要求利用函数递归实现. 输入格式要求:"%s" 提示信息:"input your string:\n" 输出格式要求:"%c& ...
- machine_math
1.导数与函数的凹凸性关系: 从下往上看,如果函数是凸出来的就是凸函数,如果是凹的就是凹函数. 函数的凹凸性是二阶函数来判断的. 如果二阶函数大于零,那么就是凸函数,否则就是凹函数. 2.一阶导数为零 ...
- Codeforces Round 584 题解
-- A,B 先秒切,C 是个毒瘤细节题,浪费了很多时间后终于过了. D 本来是个 sb 题,然而还是想了很久,不过幸好没什么大事. E1,看了一会就会了,然而被细节坑死,好久才过. 感觉 E2 很可 ...
- [bash-shell]构建WebAPI项目并且发布到本地
:: 清理log文件 del /S *.log echo Publish parameters initializing... ::These parameters are not used for ...
- Rollup 配置 es6 环境
前 为了可以使用新型的语法,顺便在兼容下老的浏览器,所以需要自己搭建个环境,目前我个人推崇使用 rollup,主要喜欢它的 tree-shake,打包出来的代码真的很简洁. 配置 rollup.con ...
- MarkDown的一些基本语法
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. Markdown的语法简洁明了.学习容易,而且功能比纯文本更强,因此有很多人用它写 ...
- 《 .NET并发编程实战》阅读指南 - 第14章
先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.
- maven的pom.xml用<exclusion>解决版本问题
用maven管理库依赖,有个好处就是连同库的依赖的全部jar文件一起下载,免去手工添加的麻烦,但同时也带来了同一个jar会被下载了不同版本的问题,好在pom的配置里面允许用<exclusion& ...
- Golang fmt Printf 格式化参数手册/详解/说明
fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. 格式“占位符”衍生自C,但比C更简单. fmt 包的官方文档对Printing和Scanning有很详细的说明.这里就直接 ...