首頁>技術>

微服務架構中的各個微服務是相對獨立的,那麼對每個微服務的效能評估及各個微服務之間呼叫關係是對微服務應用的很重要審計指標,Zipkin就是因為這個需求而產生的開源系統,她可以很好的和Sping cloud結合,只需要簡單的配置就可以很好的使用,有關的原理網上已經有很多,本文就不多說,只是將使用過程中存在的調整在此說明,以解決新手的困惑。

docker方式部署Zipkin伺服器

1. 從映象倉庫下載docker映象

 docker pull openzipkin/zipkin

2. 啟動服務

 docker run -d --restart always -v /etc/localtime:/etc/localtime:ro -p 9411:9411 --name zipkin openzipkin/zipkin

這種啟動模式所有資料都儲存到記憶體,在生產環境建議採用mysql、ES等持久化模式,具體如何配置請求助搜尋引擎。

正常啟動後用瀏覽器代開http://172.16.15.239:9411,如果正常開啟則說明服務啟動正常。

spring cloud工程中引入Zipkin客戶端

Zipkin的執行模式是CS方式,需要納入跟蹤體系的微服務都是作為客戶端來實現的,所以必須將Zipkin的客戶端功能整合到微服務工程中。

1. 引入對應的starter包

2. 新增配置到application.yml中

#鏈路跟蹤sleuth & zipkin配置spring:  zipkin:    base-url: http://172.16.15.239:9411  sleuth:    sampler:      probability: 1.0

其中,base-url是Zipkin服務端地址,probability是日誌採集的頻率,1.0表示全部採集,0表示不採集,介於0-1之間的資料表示採集比例,有的早期版本這個屬性名稱為rate或者percentage。

3. Controler層新增日誌

Zipkin是通過日誌採集資料的,所以在每個Controler方法的開始新增一條日誌輸出。

public ResponseData login(HttpServletResponse response, @RequestParam String mobile, @RequestParam String password){        log.info("登入");        ResponseData ResponseData=userBase.login(mobile, password);        try {            if (ResponseData.getCode() == 0) {                PublicKey publicKey = RSAUtils.getPublicKey(publicKeyBase64);                response.addCookie(new Cookie("toon-app-token", new String(Base64.getEncoder().encode(RSAUtils.encryptByPublicKey(ResponseData.getData().getString("userId").getBytes(), publicKey)))));                response.addCookie(new Cookie("toon-type", "toonapp"));            }        } catch (Exception e) {            ResponseData.setStatus(ResponseCode.LOGIN_ERROR);            log.error("{}",e.getLocalizedMessage());        }        return ResponseData;    }
    app_1 | 2019-12-11 13:35:48.597  INFO [gateway-toonapp,d6f0c66942371771,660729f52e1ea255,true] 1 --- [io-8011-exec-10] c.s.p.m.gateway.toonapp.web.Controller   : toonapp鑑權gw_1  | 2019-12-11 13:35:48.601  INFO [gateway-entrance,d6f0c66942371771,d6f0c66942371771,true] 1 --- [nio-8010-exec-9] c.s.p.m.g.entrance.filter.AccessFilter   : 鑑權結果ResponseData(code=0, message=成功, data={"userId":"61d4b219-e4e5-4c29-9688-b6759e3e6427"})

其中INFO後面第一個[]中的資料就是表明Zipkin配置已經生效(第4個數據如果都是false就說明採集頻率設定錯誤,要麼是引數名稱不對,要麼是採集頻率過低)。

跟蹤結果分析

通過瀏覽器開啟Zipkin,如果採集正常則就有資料顯示,否則檢查上面的配置和日誌內容。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Linux技巧:介紹從目錄路徑獲取檔名和目錄字首的方法