目錄
- 前言
- 1. Zipkin 基礎知識
- 1.1 Zipkin 鏈路監控的原理
- 2. 下載 Zipkin 服務器
- 2.1 下載 zipkin-server-2.12.9-exec.jar 包
- 2.2 啟動 Zipkin Server
- 2.3 *Docker 部署方式
- 3. 手動安裝和配置 Zipkin 服務器
- 3.1 引入 pom.xml 依賴檔案
- 3.2 在主程式類上添加注解
- 3.3 配置跟蹤資料存盤方式
- 4. 使用 Zipkin 進行分布式跟蹤
- 4.1 添加 pom.xml 依賴檔案
- 4.2 修改 application.yml 組態檔
- 4.3 訪問 9411 埠查看可視化日志
- 最后
(10.3 使用 Zipkin 可視化日志追蹤)
前言
參考資料:
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服務原理與實戰》
《B站 尚硅谷 SpringCloud 框架開發教程 周陽》
Zipkin 允許開發人員以圖形方式查看事務占用的時間量,并分解在呼叫中涉及的每個微服務所用的時間,在微服務架構中,Zipkin 是識別性能問題的寶貴工具;
1. Zipkin 基礎知識
1.1 Zipkin 鏈路監控的原理

- 上圖表示一請求鏈路,一條鏈路通過
Trace Id唯一標識,Span 標識發起的請求資訊,各 Span 通過Parent id關聯起來; - Span 表示呼叫鏈路來源,通俗的理解 Span 就是一次請求資訊;
- 簡略理解圖如下:


2. 下載 Zipkin 服務器
Spring Cloud 從 F 版起不需要自己構建 Zipkin Server 了,只需呼叫 jar 包即可;
2.1 下載 zipkin-server-2.12.9-exec.jar 包
- 訪問官網下載 Zipkin 的 Web UI:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
2.2 啟動 Zipkin Server
- 使用命令啟動 Zipkin Server:
java -jar zipkin-server-2.12.9-exec.jar;

- 默認埠為:9411;
- 訪問 Zipkin Server 的管理后臺:http://localhost:9411;
2.3 *Docker 部署方式
也可以使用 Docker 部署省去下載的麻煩;
docker run -d -p 9411:9411 openzipkin/zipkin;
3. 手動安裝和配置 Zipkin 服務器
雖然 Spring Cloud 從 F 版起不需要自己構建 Zipkin Server,但這里還是提供手動構建的方法;
3.1 引入 pom.xml 依賴檔案
<!-- 用于創建 Zipkin 服務器所需的核心類 -->
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
<!-- 用于運行 Zipkin 服務器的 UI 部分所需的核心類 -->
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>
3.2 在主程式類上添加注解
- @EnableZipkinServer:創建相對簡單,缺點是 Zipkin 服務器不可用時資料會丟失;
- 注意:該注解不是 Spring Cloud 提供的,是 Zipkin 提供的;
- @EnableZipkinStreamServer:需要創建和配置正在跟蹤的服務以發布訊息到 RabbitMQ 或 Kafka,優點是即使 Zipkin 服務器不可用,也可以繼續收集跟蹤資料,直到 Zipkin 服務器可用于處理訊息記錄;
- 該注解是 Spring Cloud 提供的;
3.3 配置跟蹤資料存盤方式
- Zipkin 支持四種不同的后端資料存盤,如下:
- 記憶體資料;
- MySQL;
- Cassandra;
- Elasticsearch;
- 默認情況下 Zipkin 使用記憶體資料來存盤跟蹤資料,可以進行配置到其他存盤方式;
4. 使用 Zipkin 進行分布式跟蹤
4.1 添加 pom.xml 依賴檔案
需要給 Zuul 網關服務、消費者服務、提供者服務等所有服務添加依賴;
<!-- 包含在服務中啟用 sleuth 的基本庫 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- 【可選】當開發人員需要以編程方式與 sleuth 互動時添加 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-core</artifactId>
</dependency>
<!-- 與 Zipkin 集成 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
4.2 修改 application.yml 組態檔
在每個想與 Zipkin 進行通信的服務的 application.yml 組態檔中進行修改;
spring:
zipkin:
baseUrl: http://localhost:9411 #Zipkin 服務器的地址
sleuth:
sampler:
percentage: 1 #設定跟蹤級別,也即定義每個服務應該向 Zipkin 寫入資料的頻率,默認 10%
spring.sleuth.sampler.percentage = 0表示不發送任何事物資料;- 上述
spring.sleuth.sampler.percentage = 1屬性也可用下面的代碼替代,表示為所有服務發送跟蹤資訊;
@Bean
public Sampler defaultSampler() {
return new AlwaysSampler();
}
4.3 訪問 9411 埠查看可視化日志
- 先呼叫服務 API;
- 再進入:http://localhost:9411;
- 即可查看 Zipkin 的日志捕獲跟蹤結果;
- Zipkin 界面可以查詢一些基本的資訊:


- 點擊事務后可以查看更詳細的資訊:


- 點擊組織服務跨度,可以查看呼叫中的額外細節:

- 點擊依賴,可以查看依賴關系:

最后
新人制作,如有錯誤,歡迎指出,感激不盡!
歡迎關注公眾號,會分享一些更日常的東西!
如需轉載,請標注出處!

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/423477.html
標籤:其他
