SpringBoot集成zipkin實現(xiàn)鏈路追蹤

上一篇 <<<鏈路追蹤的實現(xiàn)原理
下一篇 >>>Zipkin集成RabbitMQ異步傳輸,并持久化到數(shù)據(jù)庫中


版本要求

SpringBoot、OpenFeign和Zipkin都要求2.1.*

核心代碼

  • jar包引入
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.2.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>0.2.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>com.jgspx</groupId>
    <artifactId>openfeign-msg-service-api</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>com.jgspx</groupId>
    <artifactId>openfeign-user-service-api</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>
</dependencies>
  • 相關(guān)配置
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/
  ###全部采集
  # 抽樣率,默認(rèn)是0.1(90%的數(shù)據(jù)會被丟棄)
  # 這邊為了測試方便,將其設(shè)置為1.0,即所有的數(shù)據(jù)都會上報給zipkin
  sleuth:
    sampler:
      probability: 1.0

效果展示

a、成功鏈路信息:


  • 項目中獲取鏈路信息:

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

  • 每一個都是服務(wù)端,如果調(diào)用其他的話會有客戶端的鏈路


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"
    },

推薦閱讀:
<<<分布式鏈路監(jiān)控與追蹤產(chǎn)生背景
<<<常用的調(diào)用鏈解決方案
<<<鏈路追蹤的實現(xiàn)原理
<<<Zipkin集成RabbitMQ異步傳輸,并持久化到數(shù)據(jù)庫中
<<<Zipkin環(huán)境搭建

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容