代码改变世界
[登录 · 注册]
  • 在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 查看效果

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

  • 上一篇:Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式。
    下一篇:Spring Boot Admin 2.1.0
  • 【推广】 阿里云小站-上云优惠聚集地(新老客户同享)更有每天限时秒杀!
    【推广】 云服务器低至0.95折 1核2G ECS云服务器8.1元/月
    【推广】 阿里云老用户升级四重礼遇享6.5折限时折扣!
  • 原文:https://www.cnblogs.com/shihaiming/p/11376268.html
走看看 - 开发者的网上家园