1. 程式人生 > >初學zipkin搭建鏈路追蹤服務注意事項

初學zipkin搭建鏈路追蹤服務注意事項

1.zipkinserver的搭建

注意:因為關於 Zipkin 的服務端,在Spring Boot 2.x 版本後,官方就不推薦自行定製編譯了,反而是直接提供了編譯好的 jar 包來給我們使用(使用JAVA命令啟動該JAR,zipkin-server.jar是一個打包好的springBoot應用,springBoot自帶tomcat因此只要啟動JAR包就可以訪問了。 java -jar zipkin-server-xxx.jar 啟動完後訪問localhost:9411可以檢視統計介面)。還有其他兩種方式搭建zipkinserver方式,詳細情況參看

2.構件閘道器工程以及服務提供工程,這兩個工程作為Zipkin 客戶端, 需要將鏈路資料上傳給Zipkin Server,同時它也作為 EurekaClient。

     a.閘道器pom如下:

=======================

<dependencies>

         <dependency>

              <groupId>org.springframework.cloud</groupId>

              <artifactId>spring-cloud-starter-zipkin

</artifactId>

              <version>1.2.1.RELEASE</version>

         </dependency>

         <dependency>

             <groupId>org.springframework.cloud</groupId>

             <artifactId>spring-cloud-starter-zuul</artifactId>

             <version>1.4.4.RELEASE</version>

         </dependency>

         <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-web</artifactId>

         </dependency>

         <dependency>

              <groupId>org.springframework.cloud</groupId>

              <artifactId>spring-cloud-starter-eureka</artifactId>

         </dependency>

         <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-test</artifactId>

              <scope>test</scope>

         </dependency>

     </dependencies>

==========================================

b.閘道器的配置檔案如下:

====================================

server.port=8768

spring.application.name=zipkinzuulclient

#指定 Zipkin Server 地址

spring.zipkin.base-url=http://localhost:9411

#通過配置這個引數來決定了日誌記錄傳送給採集器的概率,0-1交給使用者自己配置。開發階段和執行初期,

#一般配置成1全量收集日誌,在預設情況下,該值為 0.1

spring.sleuth.sampler.percentage=1.0

#以下兩個配置就可以將以"/sayhi/**"開頭的 Url路由指定的url

zuul.routes.sayhi.path=/sayhi/**

zuul.routes.sayhi.url=http://localhost:1000

===================================

c.服務提供工程的pom如下:

==============================================

<dependencies>

         <dependency>

              <groupId>org.springframework.cloud</groupId>

              <artifactId>spring-cloud-starter-zipkin</artifactId>

              <version>1.2.1.RELEASE</version>

         </dependency>

         <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-web</artifactId>

         </dependency>

         <dependency>

              <groupId>org.springframework.cloud</groupId>

              <artifactId>spring-cloud-starter-eureka</artifactId>

         </dependency>

         <dependency>

              <groupId>org.springframework.boot</groupId>

              <artifactId>spring-boot-starter-test</artifactId>

              <scope>test</scope>

         </dependency>

     </dependencies>

=====================================

d.服務提供工程的配置

=====================================

spring.application.name=zipkinclient

server.port=1000

#設定服務註冊中心的URL,本服務要向該服務註冊中心註冊自己

eureka.client.serviceUrl.defaultZone=http://ipa:8761/eureka

#指定 Zipkin Server 地址

spring.zipkin.base-url=http://localhost:9411

#通過配置這個引數來決定了日誌記錄傳送給採集器的概率,0-1交給使用者自己配置。開發階段和執行初期,

#一般配置成1全量收集日誌,在預設情況下,該值 為 0.1

spring.sleuth.sampler.percentage=1.0

============================================

3.完整的專案搭建完畢,依次啟動 eurekaserverzipkinserverzipkinzuulclient zipkinclient 在瀏覽器上訪問http://localhost:8768/sayhi/GetTest/getTest 瀏覽器顯示:I  am from :1000    再訪問 http://localhost:9411 ,即訪問 Zipkin 的展示介面,點選find traces可以看到對應的鏈路資料,例如請求的呼叫時間、消耗時間,以及請求呼叫的鏈路情況。(注意:需要先訪問服務產生鏈路記錄,才能在zipkin介面查到相應的servicenamespanname

 

4.可以在鏈路中新增自定義資料,本案例在 zipkinzuulclient服務中新建一個過濾器,它的型別為 post 型別, order0,開啟攔截。在過濾器的攔截邏輯方法裡, 通過 Tracer addTag 方法在本案例中加上了鏈路的操作人,過濾器中部分程式碼如下:

========================

@Autowired

Tracer tracer;//首先注入Tracer物件

    @Override

    public Object run() {

//在鏈路中新增鏈路操作人員記錄

       tracer.addTag("user", "lucus");    

return null;

    }

 

補充:在低版本中也可以自行建立zipkinserver工程,搭建zipkinserver服務,但是官方在2017年6月已經停止使用這種方式,並且要求鏈路追蹤案例中所有案例工程(閘道器工程、服務提供工程)的搭建都是在低版本中進行,不能使用springboot 2.x,如:

springboot 1.5.9、

spring-cloud.version Dalston.SR1、

spring-cloud-starter-zipkin 1.2.1.RELEASE、

zipkin-server 1.27.0、

zipkin-autoconfigure-ui 1.27.0 等,

低版本中的zipkinserver的配置檔案配置內容如下:

====================

#自定義埠號

server.port=9000

#設定服務註冊中心的URL,本服務要向該服務註冊中心註冊自己

eureka.client.serviceUrl.defaultZone=http://ipa:8761/eureka

spring.application.name=zipkinserver