1. 程式人生 > 實用技巧 >sleuth + zipkin 鏈路分析

sleuth + zipkin 鏈路分析

sleuth + zipkin 鏈路分析

sleuth 鏈路跟蹤

隨著系統規模越來越大,微服務之間呼叫關係變得錯綜複雜,一條呼叫鏈路中可能呼叫多個微服務,任何一個微服務不可用都可能造整個呼叫過程失敗

spring cloud sleuth 可以跟蹤呼叫鏈路,分析鏈路中每個節點的執行情況

1. 新增 sleuth 依賴

在每個服務和zuul專案中新增sleuth依賴

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

然後我們使用zuul訪問業務層, 就能看到業務的呼叫流程, 會看到鏈路訪問控制檯的輸出資訊

[服務id,請求id,span id,是否傳送到zipkin]

  • 請求id:請求到達第一個微服務時生成一個請求id,該id在呼叫鏈路中會一直向後面的微服務傳遞
  • span id:鏈路中每一步微服務呼叫,都生成一個新的id
[zuul,6c24c0a7a8e7281a,**6c24c0a7a8e7281a**,false]
[order-service,6c24c0a7a8e7281a,**993f53408ab7b6e3**,false]
[item-service,6c24c0a7a8e7281a,**ce0c820204dbaae1**,false]
[user-service,6c24c0a7a8e7281a,**fdd1e177f72d667b**,false]

zipkin 鏈路分析

zipkin 可以收集鏈路跟蹤資料,提供視覺化的鏈路分析

分析可分為2中:

  1. 使用訊息佇列轉發 (推薦)
  2. 使用zipkin直接獲取

使用RabbitMQ轉發圖解:

zipkin相當於RabbitMQ的消費者, 其他業務服務為提供者

鏈路資料抽樣比例

預設 10% 的鏈路資料會被髮送到 zipkin 服務。可以配置修改抽樣比例

spring:
  sleuth:
    sampler:
      probability: 0.1

準備前提

已經匯入了sleuth鏈路跟蹤的依賴

1. 新增依賴

新增兩個依賴到伺服器和zuul專案中Zipkin Client, Spring for RabbitMQ

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

如果配置了spring cloud bus依賴, 無序再新增RabbitMQ的依賴

2. 配置檔案

業務服務zuul配置檔案中假如RabbitMQ的配置和zipkin的轉發型別配置

如果不配置zipkin的轉發型別, 預設是直接獲取業務服務的呼叫資訊, 配置了rabbitMQ會使用RabbitMQ轉發獲取

spring
    rabbitmq:
        host: aarons.top
        port: 5672
        username: admin
        password: admin
        # virtual-host: /wht

    zipkin:
        sender:
        	type: rabbit # zipkin傳送型別

3. 下載zipkin伺服器

github: https://github.com/openzipkin/zipkin

4. 啟動zipkin

啟動 zipkin 時,連線到 rabbitmq

使用命令啟動下載下來的jar包 (一行命令, ip和埠, 使用者名稱密碼等改為自己的RabbitMQ的相關資訊)

java -jar zipkin-server-2.12.9-exec.jar --zipkin.collector.rabbitmq.uri=amqp://admin:[email protected]:5672

5. 訪問zipkin頁面

http://localhost:9411/zipkin/ 修改為自己的ip進行訪問

6. 測試

訪問zuul來訪問其他的服務業務, 然後登陸RabbitMQ, 如果有資料波動, 說明配置成功

https://imgchr.com/i/wGM8it)