上一篇 <<<鏈路追蹤的實現(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)境搭建
