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,不一致可能无法在浏览器里查看追踪的数据

转载于:https://juejin.im/post/5cd10e81e51d453b560f2d53

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

  1. Spring Boot 中三种跨域场景总结

    文章目录 1.什么是跨域 2.解决方案 2.1 存在的问题 3.SpringSecurity 3.1 方式一 3.2 方式二 4.OAuth2 5.小结 跨域这个问题松哥之前写过文章,但是最近收到小伙 ...

  2. spring boot框架三分钟入门

    Spring Boot简介 什么是Spring Boot Spring Boot是由Pivotal团队提供的框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. 该框架使用了特定的方式 ...

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

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

  4. asp 采集系统_在微服务框架中添加SkyWalking+SkyApm-dotnet分布式链路追踪系统

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

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

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

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

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

  7. Spring Boot中使用PostgreSQL数据库

    在如今的关系型数据库中,有两个开源产品是你必须知道的.其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的.而今天 ...

  8. Spring Boot(三) 将war文件部署到tomcat 、 Thymeleaf示例

    Spring Boot(三) 将war文件部署到tomcat . Thymeleaf示例 一 . 将war文件部署到tomcat 对于Spring Boot WAR部署,需要执行三个步骤: 扩展Spr ...

  9. springboot异步注解_Spring Boot 2 :Spring Boot 中的响应式编程和 WebFlux 入门

    [小宅按]Spring 5.0 中发布了重量级组件 Webflux,拉起了响应式编程的规模使用序幕. WebFlux 使用的场景是异步非阻塞的,使用 Webflux 作为系统解决方案,在大多数场景下可 ...

最新文章

  1. ASP.NET MVC自定义ActionResult实现文件压缩
  2. 《科学》:中德解析新冠主要蛋白酶晶体结构,有助抑制剂研发
  3. Rsync服务让SLB下多台centos服务器文件同步更新
  4. linux内核模块签名,如何签名内核模块Ubuntu 18.04
  5. linux环境下安装tomcat6
  6. CSP认证 201312-4有趣的数[C++题解]:组合数、数学
  7. 通过Dapr实现一个简单的基于.net的微服务电商系统(七)——一步一步教你如何撸Dapr之服务限流...
  8. 防火墙配置十大任务之十,构建虚拟防火墙
  9. c# MEF框架(四 MEF高级进阶)
  10. apt-get无法获取kubelet kubeadm kubectl包
  11. sensor_msgs::PointCloud2转换pcl::PCLPointCloud2 pcl::PointXYZ
  12. Karma 5:集成 Karma 和 Angular2
  13. Java JDK动态代理Proxy类的原理是什么? - 知乎(重排版)
  14. JAVA 基础语法(一)——变量以及基本数据类型
  15. android获取摄像头视频分辨率,相机自定义拍照录像,可设置分辨率、焦距、无声录像、支持横竖屏...
  16. 项目采购管理和干系人管理
  17. 淘宝前端工程师:国内WEB前端开发十日谈
  18. 视频回顾 | Pulsar Summit Asia 2020 · 场景案例(上):即时零售, 金融证券, 物联网, 电信计费等...
  19. linux加载的驱动无法卸载,Linux驱动模块卸载后不能再加载、驱动不能卸载的问题(转)...
  20. 来搞清楚CRC校验的原理和实现

热门文章

  1. wordpress插件-WP Rocket3.8.8与Rocket3.9.1双版本/火箭缓存插件免授权汉化版
  2. bootstrap带有下拉按钮的输入框_Bootstrap的输入框组样式
  3. python软件菜单如何设计_佩服!我用Python设计了一个签名软件
  4. 人生重开模拟器微信小程序源码
  5. 美化版彩虹自助下单程序注册登录页源码
  6. 得推分类信息 v4.0 强大且好用的网站信息编辑管理工具
  7. 简约易收录的导航网站源码
  8. EasyImage图床源码V2.0
  9. 童话世界区块宠物源码
  10. 使用js 调用 google ads