1. 程式人生 > >Spring Cloud Sleuth--服務鏈路追蹤元件配置與使用

Spring Cloud Sleuth--服務鏈路追蹤元件配置與使用

目標:使用Spring Cloud Sleuth建立服務鏈路追蹤中心

開發環境:IntelliJ IDEA

操作步驟:基礎環境配置->使用zipkin元件建立服務追蹤中心->使用Eureka/Zuul/Client構建服務註冊/閘道器/API功能->應用啟動測試->使用RabbitMQ傳輸鏈路資料->在ElasticSearch中儲存鏈路資料->用Kibana展示鏈路資料

1.基礎環境配置

與Eureka元件類似,新建一個專案Spring_Cloud_Sleuth,配置參考部落格:

https://blog.csdn.net/xingyuzhe/article/details/79907748

2.使用zipkin元件建立服務鏈路追蹤中心

微服務架構是一個分散式架構,微服務系統按業務劃分服務單元,一個微服務系統往往有多個服務單元,由於服務單元數量眾多,業務的複雜性較高,如果出現了錯誤和異常,難以定位。

工作流:一個請求可能需要呼叫很多個服務,而內部服務的呼叫複雜性決定了問題難以定位。

因此在微服務架構中需要實現分散式鏈路追蹤,使得每個請求的步驟清晰可見。

例:使用者請求->前端A(遠端呼叫)->系統中介軟體(B/C)->後端服務D/E->處理完成後返回給使用者。

常用的鏈路追蹤元件:Google/Drapper,Twitter/Zipkin

Spring Cloud Sleuth元件的主要功能是在分散式系統中提供服務追蹤的解決方案。

專案地址:https://github.com/spring-cloud/spring-cloud-sleuth


開發流程:

(1)新建Module工程-CaaS_Zipkin_Server



(2)新增配置依賴

啟用eureka客戶端:

新增zipkin元件:


(3)新增Module主程式

@EnableZipkinServer開啟ZipkinServer的功能


(4)新增應用配置檔案


3.使用Eureka/Zuul/Client構建服務註冊/閘道器/API功能

(1)新建CaaS_Sleuth_User作為服務提供者

a.新建Module工程



b.新增配置依賴

新增zipkin元件支援,以及eureka客戶端功能與web功能


c.新建專案主程式

只需新增@EnableEurekaClient註解開啟服務註冊功能


d.編寫控制器SleuthUserController


e.新建應用配置檔案

設定zipkinserver地址為9411,並設定以100%的概率將鏈路的資料上傳給zipkinserver


(2)新建CaaS_Sleuth_Gateway作為服務閘道器

a.新建Module工程



b.新增配置依賴

與User類似,並增加zuul元件依賴:


c.編寫專案主程式


d.編寫應用配置檔案


(3)使用CaaS_Eureka_Server作為服務註冊中心

無需新建,直接使用原有Eureka編譯的jar包即可。

4.應用啟動測試

依次啟動eureka server、zipkin server、user、gateway:

訪問http://localhost:9411


多次發出呼叫請求:http://localhost:5000/user-api/user/hello


點選查詢鏈路:


依賴分析:


5.使用RabbitMQ傳輸鏈路資料

首先需要在windows下安裝RabbitMQ元件並設定使用者名稱密碼:

rabbitmq軟體地址(包括Erlang與rabbitmq server)

http://www.erlang.org/downloads

https://www.rabbitmq.com/install-windows-manual.html

(1)安裝Erlang

雙擊安裝

配置環境變數:ERLANG_HOME並新增到Path變數中



cmd輸入erl測試:


(2)安裝RabbitMQ Server

解壓安裝包至myapps目錄,配置環境變數:



安裝rabbitmq服務:

進入sbin資料夾執行:rabbitmq-service install


啟動rabbitmq-service服務:rabbitmq-service start


web ui擴充套件功能開啟:rabbitmq-plugins enable rabbitmq_management


重啟後配置生效:訪問http://localhost:15672/


預設使用者名稱密碼均為guest:


(3)改造CaaS_Zipkin_Server微服務

a.修改配置依賴

刪除原有zipkin-server的依賴,新增如下依賴:


b.修改專案主程式

新增註解@EnableZipkinStreamServer

c.修改應用配置檔案

新增rabbitmq配置


(4)改造CaaS_Sleuth_User微服務

僅需刪除spring-cloud-starter-zipkin依賴,並加上與server相同的依賴,同時在應用配置檔案上加上rabbitmq配置資訊即可。

(5)應用啟動測試

依次執行eureka server -> zipkin server -> user ->gateway

多次請求後訪問:http://localhost:15672/


6.在ElasticSearch中儲存鏈路資料

首先需要安裝ElasticSearch:https://www.elastic.co/products/elasticsearch

選擇zip檔案,解壓到myapps中,進入bin資料夾下,雙擊elasticsearch.bat啟動ES

訪問http://localhost:9200/


修改zipkin server配置:新增ElasticSearch配置依賴


在應用的配置檔案application.yml中加上es配置:


多次發出請求:訪問http://localhost:9200/_search


可見資料已經儲存進ElasticSearch資料庫。

7.用Kibana展示資料

下載:https://www.elastic.co/downloads/kibana

配置:修改檔案config/kibana.yml

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"
elasticsearch.preserveHost: true
kibana.index: ".kibana"

啟動:

執行kibana.bat

訪問http://localhost:5601/