SpringBoot集成zipkin实现链路追踪

上一篇 <<<链路追踪的实现原理
下一篇 >>>Zipkin集成RabbitMQ异步传输,并持久化到数据库中


版本要求

SpringBoot、OpenFeign和Zipkin都要求2.1.*

核心代码

  • jar包引入

    org.springframework.boot
    spring-boot-starter-parent
    2.1.2.RELEASE


    
        org.springframework.cloud
        spring-cloud-starter-alibaba-nacos-discovery
        0.2.2.RELEASE
    
    
        org.projectlombok
        lombok
    

    org.springframework.boot
    spring-boot-starter-web


    com.jgspx
    openfeign-msg-service-api
    1.0-SNAPSHOT


    com.jgspx
    openfeign-user-service-api
    1.0-SNAPSHOT


    org.springframework.cloud
    spring-cloud-starter-zipkin
    2.1.0.RELEASE


    com.google.guava
    guava
    18.0


    org.springframework.cloud
    spring-cloud-starter-openfeign
    2.1.0.RELEASE


  • 相关配置
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 10.211.55.16:8848
        #feign客户端的命名必须使用中划线,不能使用下划线
  application:
    name: zipkin-user-service
  zipkin:
    base-url: http://127.0.0.1:9411/
  ###全部采集
  # 抽样率,默认是0.1(90%的数据会被丢弃)
  # 这边为了测试方便,将其设置为1.0,即所有的数据都会上报给zipkin
  sleuth:
    sampler:
      probability: 1.0

效果展示

a、成功链路信息:


  • 项目中获取链路信息:

request.getHeader("X-B3-TraceId")+",spanid:"+ request.getHeader("X-B3-SpanId")

  • 每一个都是服务端,如果调用其他的话会有客户端的链路


b、失败链路信息:

  • 错误信息里可以看到具体的错误
"tags": {
      "error": "Request processing failed; nested exception is java.lang.ArithmeticException: / by zero",
      "http.method": "GET",
      "http.path": "/sendmsg",
      "mvc.controller.class": "MsgServiceImpl",
      "mvc.controller.method": "sendMsg"
    },

推荐阅读:
<<<分布式链路监控与追踪产生背景
<<<常用的调用链解决方案
<<<链路追踪的实现原理
<< <<

你可能感兴趣的:(SpringBoot集成zipkin实现链路追踪)