微服務架構(gòu) | 10.3 使用 Zipkin 可視化日志追蹤

前言

參考資料
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服務原理與實戰(zhàn)》
《B站 尚硅谷 SpringCloud 框架開發(fā)教程 周陽》

Zipkin 允許開發(fā)人員以圖形方式查看事務占用的時間量错妖,并分解在調(diào)用中涉及的每個微服務所用的時間绿鸣。在微服務架構(gòu)中疚沐,Zipkin 是識別性能問題的寶貴工具;


1. Zipkin 基礎(chǔ)知識

1.1 Zipkin 鏈路監(jiān)控的原理

Zipkin 鏈路監(jiān)控的原理.png
  • 上圖表示一請求鏈路潮模,一條鏈路通過 Trace Id 唯一標識亮蛔,Span 標識發(fā)起的請求信息,各 Span 通過 Parent id 關(guān)聯(lián)起來擎厢;
  • Span 表示調(diào)用鏈路來源究流,通俗的理解 Span 就是一次請求信息;
  • 簡略理解圖如下:
Zipkin 鏈路監(jiān)控的原理1.png
Zipkin 鏈路監(jiān)控的原理2.png


2. 下載 Zipkin 服務器

Spring Cloud 從 F 版起不需要自己構(gòu)建 Zipkin Server 了动遭,只需調(diào)用 jar 包即可芬探;

2.1 下載 zipkin-server-2.12.9-exec.jar 包

2.2 啟動 Zipkin Server

  • 使用命令啟動 Zipkin Server:java -jar zipkin-server-2.12.9-exec.jar
Zipkin 運行界面

2.3 *Docker 部署方式

也可以使用 Docker 部署省去下載的麻煩;

  • docker run -d -p 9411:9411 openzipkin/zipkin


3. 手動安裝和配置 Zipkin 服務器

雖然 Spring Cloud 從 F 版起不需要自己構(gòu)建 Zipkin Server酝静,但這里還是提供手動構(gòu)建的方法节榜;

3.1 引入 pom.xml 依賴文件

<!-- 用于創(chuàng)建 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:創(chuàng)建相對簡單。缺點是 Zipkin 服務器不可用時數(shù)據(jù)會丟失别智;
    • 注意:該注解不是 Spring Cloud 提供的宗苍,是 Zipkin 提供的;
  • @EnableZipkinStreamServer:需要創(chuàng)建和配置正在跟蹤的服務以發(fā)布消息到 RabbitMQ 或 Kafka薄榛。優(yōu)點是即使 Zipkin 服務器不可用讳窟,也可以繼續(xù)收集跟蹤數(shù)據(jù),直到 Zipkin 服務器可用于處理消息記錄敞恋;
    • 該注解是 Spring Cloud 提供的挪钓;

3.3 配置跟蹤數(shù)據(jù)存儲方式

  • Zipkin 支持四種不同的后端數(shù)據(jù)存儲,如下:
    • 內(nèi)存數(shù)據(jù)耳舅;
    • MySQL碌上;
    • Cassandra;
    • Elasticsearch浦徊;
  • 默認情況下 Zipkin 使用內(nèi)存數(shù)據(jù)來存儲跟蹤數(shù)據(jù)馏予,可以進行配置到其他存儲方式;


4. 使用 Zipkin 進行分布式跟蹤

4.1 添加 pom.xml 依賴文件

需要給 Zuul 網(wǎng)關(guān)服務盔性、消費者服務霞丧、提供者服務等所有服務添加依賴;

<!-- 包含在服務中啟用 sleuth 的基本庫 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>

<!-- 【可選】當開發(fā)人員需要以編程方式與 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 #設(shè)置跟蹤級別蛹尝,也即定義每個服務應該向 Zipkin 寫入數(shù)據(jù)的頻率,默認 10%
  • spring.sleuth.sampler.percentage = 0 表示不發(fā)送任何事物數(shù)據(jù)悉尾;
  • 上述 spring.sleuth.sampler.percentage = 1 屬性也可用下面的代碼替代突那。表示為所有服務發(fā)送跟蹤信息;
@Bean
public Sampler defaultSampler() {
    return new AlwaysSampler();
}

4.3 訪問 9411 端口查看可視化日志

  • 先調(diào)用服務 API构眯;
  • 再進入:http://localhost:9411愕难;
  • 即可查看 Zipkin 的日志捕獲跟蹤結(jié)果;
  • Zipkin 界面可以查詢一些基本的信息:
Zipkin 界面查詢基本信息
  • 點擊事務后可以查看更詳細的信息:
點擊事務查看更詳細信息.png
image.png
  • 點擊組織服務跨度惫霸,可以查看調(diào)用中的額外細節(jié):
點擊組織服務跨度查看調(diào)用中的額外細節(jié).png
  • 點擊依賴猫缭,可以查看依賴關(guān)系:
點擊依賴查看依賴關(guān)系.png



最后

\color{blue}{\rm\small{新人制作,如有錯誤壹店,歡迎指出猜丹,感激不盡!}}

\color{blue}{\rm\small{歡迎關(guān)注我硅卢,并與我交流射窒!}}

\color{blue}{\rm\small{如需轉(zhuǎn)載妖混,請標注出處暖混!}}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末侧馅,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子暖庄,更是在濱河造成了極大的恐慌弊予,老刑警劉巖祥楣,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異汉柒,居然都是意外死亡误褪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門碾褂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來兽间,“玉大人,你說我怎么就攤上這事正塌∴致裕” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵乓诽,是天一觀的道長帜羊。 經(jīng)常有香客問我,道長鸠天,這世上最難降的妖魔是什么讼育? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮稠集,結(jié)果婚禮上奶段,老公的妹妹穿的比我還像新娘。我一直安慰自己剥纷,他們只是感情好痹籍,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著筷畦,像睡著了一般词裤。 火紅的嫁衣襯著肌膚如雪刺洒。 梳的紋絲不亂的頭發(fā)上鳖宾,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機與錄音逆航,去河邊找鬼鼎文。 笑死,一個胖子當著我的面吹牛因俐,可吹牛的內(nèi)容都是我干的拇惋。 我是一名探鬼主播周偎,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼撑帖!你這毒婦竟也來了蓉坎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤胡嘿,失蹤者是張志新(化名)和其女友劉穎蛉艾,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衷敌,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡勿侯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缴罗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片助琐。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖面氓,靈堂內(nèi)的尸體忽然破棺而出兵钮,到底是詐尸還是另有隱情,我是刑警寧澤舌界,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布矢空,位于F島的核電站,受9級特大地震影響禀横,放射性物質(zhì)發(fā)生泄漏屁药。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一柏锄、第九天 我趴在偏房一處隱蔽的房頂上張望酿箭。 院中可真熱鬧,春花似錦趾娃、人聲如沸缭嫡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妇蛀。三九已至,卻和暖如春笤成,著一層夾襖步出監(jiān)牢的瞬間评架,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工炕泳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纵诞,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓培遵,卻偏偏與公主長得像浙芙,于是被迫代替她去往敵國和親登刺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容