原文: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的更多相关文章

  1. Spring Cloud 整合分布式链路追踪系统Sleuth和ZipKin实战,分析系统瓶颈

    导读 微服务架构中,是否遇到过这种情况,服务间调用链过长,导致性能迟迟上不去,不知道哪里出问题了,巴拉巴拉....,回归正题,今天我们使用SpringCloud组件,来分析一下微服务架构中系统调用的瓶 ...

  2. 在微服务框架Demo.MicroServer中添加SkyWalking+SkyApm-dotnet分布式链路追踪系统

    1.APM工具的选取 Apm监测工具很多,这里选用网上比较火的一款Skywalking. Skywalking是一个应用性能监控(APM)系统,Skywalking分为服务端Oap.管理界面UI.以及 ...

  3. spring boot(三):Spring Boot中Redis的使用

    spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...

  4. (转)Spring Boot(三):Spring Boot 中 Redis 的使用

    http://www.ityouknow.com/springboot/2016/03/06/spring-boot-redis.html Spring Boot 对常用的数据库支持外,对 Nosql ...

  5. Spring Boot(三):Spring Boot 中 Redis 的使用

    Spring Boot 对常用的数据库支持外,对 Nosql 数据库也进行了封装自动化. Redis 介绍 Redis 是目前业界使用最广泛的内存数据存储.相比 Memcached,Redis 支持更 ...

  6. springboot(三):Spring boot中Redis的使用

    spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...

  7. Spring boot(三)在Spring boot中Redis的使用

    spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结 ...

  8. SpringBoot(三) :Spring boot 中 Redis 的使用

    前言: 这一篇讲的是Spring Boot中Redis的运用,之前没有在项目中用过Redis,所以没有太大的感觉,以后可能需要回头再来仔细看看. 原文出处: 纯洁的微笑 SpringBoot对常用的数 ...

  9. Spring Boot(三):Spring Boot中的事件的使用 与Spring Boot启动流程(Event 事件 和 Listeners监听器)

    前言:在讲述内容之前 希望大家对设计模式有所了解 即使你学会了本片的内容 也不知道什么时候去使用 或者为什么要这样去用 观察者模式: 观察者模式是一种对象行为模式.它定义对象间的一种一对多的依赖关系, ...

随机推荐

  1. vue和react的区别

    数据: vue:双向数据绑定和单向数据流.双向数据绑定:DOM元素绑定的data值,当发生改变后,vue的响应式机制会自动监听data的变化重新渲染.单向数据流:当父组件给子组件传递数据的时候,子组件 ...

  2. Linux性能优化实战学习笔记:第五十七讲

    一.上节回顾 上一节,我带你一起梳理了常见的性能优化思路,先简单回顾一下.我们可以从系统和应用程序两个角度,来进行性能优化. 从系统的角度来说,主要是对 CPU.内存.网络.磁盘 I/O 以及内核软件 ...

  3. WebSocket--客户端

    WebSocket 是 HTML5 提供的一种在单个TCP连接上进行全双工通讯的协议. WebSocket 使得客户端和服务端通讯,数据交换更加简单,而且允许服务端主动向客户端发送数据.在WebSoc ...

  4. (转)yum只下载不安装软件包

    方法一:使用yum的downloadonly插件 步骤: (1) 先安装downloadonly插件  yum install yum-plugin-downloadonly (2)使用–downlo ...

  5. python总结九

    1.sql语句: ,; 解释:由hire_date进行排序,降序desc,最大的就是最晚进来的员工,limit  如果是只有一个参数的话,那么说明是除了前面多少个数据, 如果后面有两个参数的话,那么就 ...

  6. 动手学深度学习4-线性回归的pytorch简洁实现

    导入同样导入之前的包或者模块 生成数据集 通过pytorch读取数据 定义模型 初始化模型 定义损失函数 定义优化算法 训练模型 小结 本节利用pytorch中的模块,生成一个更加简洁的代码来实现同样 ...

  7. linux 修改环境变量

    直接用export命令:查看已有的环境变量 2.修改profile文件: #vi /etc/profile 在里面加入: export PATH="$PATH:/opt/au1200_rm/ ...

  8. Python【每日一问】36

    问: 基础题: 809*x=800*x+9*x+1 其中 x 代表的两位数, 8*x 的结果为两位数, 9*x 的结果为 3 位数.求 x ,及计算 809*x 的结果. 提高题: 对文件" ...

  9. Navicat 连接远程数据库报错:1130 - Host "XX.XX.XX.XX" is not allowed to connect to this MySQL server

    Navicat 连接远程数据库报错:1130 - Host "XX.XX.XX.XX" is not allowed to connect to this MySQL server ...

  10. POJ 2249 暴力求组合数

    Binomial Showdown Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22692   Accepted: 692 ...