SpringCloud-sleuth-zipkin鏈路追蹤


 

什么是Zipkin?

  它是一個分布式鏈路跟蹤系統它可以幫助收集時間數據,每個應用程序向Zipkin報告定時數據,Zipkin UI呈現了一個依賴圖表來展示多少跟蹤請求經過了每個應用程序;如果想解決延遲問題,可以過濾或者排序所有的跟蹤請求,並且可以查看每個跟蹤請求占總跟蹤時間的百分比。

什么要使用它?

  隨着業務越來越復雜,系統也隨之進行各種拆分,特別是隨着微服務架構和容器技術的興起,看似簡單的一個應用,后台可能有幾十個甚至幾百個服務在支撐;一個前端的請求可能需要多次的服務調用最后才能完成;當請求變慢或者不可用時,我們無法得知是哪個后台服務引起的,這時就需要解決如何快速定位服務故障點,Zipkin分布式跟蹤系統就能很好的解決這樣的問題。

  簡單的說zipkin就可以實現,那個服務有問題,服務於服務之間的依賴關系,運行時間等等

繼續上篇說,附鏈接:https://www.cnblogs.com/zgwjava/p/10447542.html

 

創建zipkin模塊

Gradle

compile 'io.zipkin.java:zipkin-server'
    compile 'io.zipkin.java:zipkin-autoconfigure-ui'

yml

server:
  port: 9999
spring:
  application:
    name: zipkin-server

然后再看下啟動類

package org.gw.zipkin.server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import zipkin.server.EnableZipkinServer;

/**
 * @DATA 2019-02-28 00:17
 * @Author 張國偉  WeChat:17630376104
 * @Description TODO
 */

@EnableZipkinServer   #次注解為標注zipkin服務端
@SpringBootApplication
public class ZipkinServerProvider {

    public static void main(String[] args) {
        SpringApplication.run(ZipkinServerProvider.class, args);
    }
}

我們運行項目 http://localhost:9999/zipkin/

可以看到zipkin服務端已經啟動,在這上面可以查看服務間調用記錄,要想實現鏈路追蹤必須服務之間有依賴關系也就是調用關系,有RestTemplate在上一章我們已經說過服務間如何調用。

我們再來看下客戶端如何配置

#eureka客戶端
server:
  port: 10001
spring:
  application:
    name: project-shopping-mall
  thymeleaf:
    prefix: classpath:/templates/
    cache: false
  zipkin:
    base-url: http://localhost:9999/
  sleuth:
    sampler:
      percentage: 1.0   #0.1-1.0鏈路跟蹤的數據上傳的概率,百分比
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8888/eureka/
  instance:
    prefer-ip-address: true
logging:
  path: /Users/mac/logs/shop
  level:
    org.gw.shopping.mai: info

我在controller這里加上了日志

我們看下控制台,為了測試我刷新了好幾次,調用了好幾次

可以看到有兩個id,和一個true,true為是否想zikpin上傳數據,接下來我們看下zipkin服務端

可以看到剛剛服務之間的調用信息,我們點擊某一個

可以清晰的看到服務的信息,相應時間,當然也可以通過控制台的信息來查找服務調用信息,我們再來看下依賴

清晰的看到那個服務調用了那個服務。

  並發量大的時候普通的日志處理不了這么多信息,如何出異常了很難判斷到底是那個服務,那一邊出了問題,所以zipkin鏈路解決這個問題,任何問題清晰可見。

最后再看下服務客戶端gradle添加的依賴,上面忘說了

   
    compile 'org.springframework.cloud:spring-cloud-starter-sleuth'
    compile 'org.springframework.cloud:spring-cloud-sleuth-zipkin'

客戶端必須添加這兩個依賴

下一章健康檢查,感謝支持!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM