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/