SpringCloud(七)之SpringCloud的鏈路追蹤組件Sleuth實戰,以及 zipkin 的部署和使用

1、前言

Spring Cloud Sleuth 主要功能就是在分佈式系統中提供追蹤解決方案 ,而且兼容了zipkin,提供了REST API接口來輔助咱們查詢跟蹤數據以實現對分佈式系統的監控程序 。

Sleuth  是個組件,沒有提供咱們可視化的界面,和一些相信的api信息,而zipkin 是個系統,他有可視化的界面,和對應接口調用詳細的信息狀況。java

2、爲何要使用鏈路追蹤

微服務架構上經過業務來劃分服務的,經過REST調用,對外暴露的一個接口,可能須要不少個服務協同才能完成這個接口功能,若是鏈路上任何一個服務出現問題或者網絡超時,都會造成致使接口調用失敗。隨着業務的不斷擴張,服務之間互相調用會愈來愈複雜。mysql

,對調用鏈的分析會愈來愈複雜。若是那裏出現了錯誤,咱們是很排查的。因此咱們引入了鏈路追蹤,使用可視化的界面咱們能夠很容易的找到那一塊耗時多,等等。web

Sleuth 的使用:spring

  1.在項目中加入依賴:sql

 

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>docker

2.而後在你想打印日誌的地方輸入api

 

 控制檯會出現下面這個 (如今看起來是否是感受使用起來也不怎方便,下面我會講zipkin,他提供了可視化界面,看的就清楚多了。)網絡


[order-service,96f95a0dd81fe3ab,852ef4cfcdecabf3,false] 架構

一、第一個值,spring.application.name的值

二、第二個值,96f95a0dd81fe3ab ,sleuth生成的一個ID,叫Trace ID,用來標識一條請求鏈路,一條請求鏈路中包含一個Trace ID,多個Span ID

三、第三個值,852ef4cfcdecabf三、spanid 基本的工做單元,獲取元數據,如發送一個httpapp

四、第四個值:false,是否要將該信息輸出到zipkin服務中來收集和展現。

3可視化鏈路追蹤系統Zipkin

大規模分佈式系統的APM工具(Application Performance Management),基於Google Dapper的基礎實現,和sleuth結合能夠提供可視化web界面分析調用鏈路耗時狀況

 3.1 可視化鏈路追蹤系統Zipkin部署。(我使用的是docker 我後面會講下docker的部署,很簡單的)

  //阿里提供的部署Zipkin的方法,裏面講了好幾種 包括java 部署 和docker 部署

docker部署:


這樣就搞定了 ,而後ip+端口就能訪問:docker run -d -p 9411:9411 openzipkin/zipkin

3.2  代碼中的使用。

那個項目想要鏈路追蹤就都加入下面的兩個配置

  3.1.1 加入依賴

 <!--裏面包含 spring-cloud-starter-sleuth、spring-cloud-sleuth-zipkin  ->

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

3.1.1 配置文件添加

#服務的名稱
spring:
application:
name: order-service
#zipkin服務所在地址
zipkin:
base-url: http://47.XX.XX.XX:9411/
#配置採樣百分比,開發環境能夠設置爲1,表示所有,生產就用默認(0.1)
sleuth:
sampler:
probability: 1

3.2  測試

調用 api 接口

查看Zipkin 可視化系統

 

 

  

這樣詳細信息就所有追蹤到了。

3.4  大體說下  Sleuth 和Zipkin  是怎麼調用的.

sleuth收集跟蹤信息經過http請求發送給zipkin server,zipkinserver進行跟蹤信息的存儲以及提供Rest API便可,Zipkin UI調用其API接口進行數據展現

默認存儲是內存,可也用mysql、或者elasticsearch等存儲。 因此說,Sleuth 纔是根本,而Zipkin  這是進行了對數據的分析和展現。

相關文章
相關標籤/搜索