一、介紹
在上一篇文章skywalking安裝教程中我們介紹了skywalking的作用以及如何將其集成到我們的微服務(wù)項(xiàng)目中。本篇文章我們介紹在微服務(wù)架構(gòu)中,如何使用skywalking對(duì)一次客戶端請(qǐng)求進(jìn)行全鏈路追蹤。
skywalking的介紹分多篇文章:
-
- 微服務(wù)項(xiàng)目集成skywalking
-
- skywalking全鏈路追蹤
何為全鏈路追蹤?
個(gè)人理解:在微服務(wù)架構(gòu)中,一次客戶端請(qǐng)求在對(duì)應(yīng)的接口中可能需要通過(guò)多次服務(wù)調(diào)用完成,以skywalking安裝教程中的項(xiàng)目演示為例,一次成功結(jié)束的請(qǐng)求可能需要經(jīng)過(guò)商品服務(wù)、訂單服務(wù)以及支付服務(wù)三個(gè)服務(wù)共同處理,其中商品服務(wù)調(diào)用訂單服務(wù),訂單服務(wù)調(diào)用支付服務(wù)。這就是微服務(wù)架構(gòu)的調(diào)用鏈。skywalking通過(guò)一個(gè)請(qǐng)求上下文將一次客戶端請(qǐng)求中涉及到的服務(wù)調(diào)用進(jìn)行追蹤,這就是全鏈路追蹤的含義。
通過(guò)skywalking支持全鏈路追蹤,可以將微服務(wù)架構(gòu)中的服務(wù)調(diào)用轉(zhuǎn)變?yōu)閷?shí)例調(diào)用。
二、全鏈路追蹤
在上一篇文章skywalking安裝教程中我們已經(jīng)將skywalking集成到微服務(wù)項(xiàng)目中,并在服務(wù)端頁(yè)面看到集成的微服務(wù)以及各個(gè)服務(wù)的實(shí)例。
下面我們通過(guò)接口調(diào)用,來(lái)查看skywalking的鏈路追蹤是如何一回事。
在服務(wù)集成到skywalking初期,skywalking是無(wú)法顯示服務(wù)中的業(yè)務(wù)接口的,當(dāng)我們調(diào)用服務(wù)中的接口時(shí),對(duì)應(yīng)的接口才會(huì)出現(xiàn)在skywalking中。
如下所示為服務(wù)集成到skywalking初期,我們還沒有調(diào)用接口
下面我們調(diào)用一次接口
調(diào)用后,該接口將出現(xiàn)在skywalking
1. 測(cè)試1 - 正常請(qǐng)求
當(dāng)我們調(diào)用商品服務(wù)的接口并傳入商品id為1時(shí)
得到的結(jié)果為0,即成功。
查看日志如下:
從日志中可以看出,此次請(qǐng)求的調(diào)用鏈如下所示
下面我們進(jìn)入skywalking頁(yè)面查看該調(diào)用鏈路
首先我們知道此次請(qǐng)求調(diào)用的是商品服務(wù)暴露的接口,所以我們進(jìn)入商品服務(wù)查看調(diào)用鏈路
在截圖左下角的列表中,顯示的是當(dāng)前服務(wù)所接收到的所有請(qǐng)求,其中包含大量/eureka
相關(guān)的請(qǐng)求,這是eureka注冊(cè)中心與當(dāng)前服務(wù)之間心跳檢測(cè)所產(chǎn)生的請(qǐng)求,后面我們將會(huì)通過(guò)配置屏蔽此類請(qǐng)求鏈路;當(dāng)然也可以看到我們自己發(fā)起的業(yè)務(wù)請(qǐng)求及其調(diào)用鏈路(圖中箭頭所示)。
在調(diào)用鏈路中,我們看到此次請(qǐng)求涉及到三個(gè)服務(wù)的調(diào)用:商品服務(wù)(紫色標(biāo)記)、訂單服務(wù)(藍(lán)色標(biāo)記)、支付服務(wù)(綠色標(biāo)記),且從下面的圖形中可以看到:商品服務(wù)調(diào)用訂單服務(wù),訂單服務(wù)調(diào)用支付服務(wù)。
如何確定具體處理調(diào)用請(qǐng)求的是哪一個(gè)實(shí)例呢?換句話說(shuō),這三個(gè)服務(wù)各有兩個(gè)實(shí)例,究竟是哪一個(gè)實(shí)例處理了請(qǐng)求?
我們點(diǎn)擊調(diào)用鏈路的其中一環(huán),如下所示,可以發(fā)現(xiàn),商品服務(wù)處理請(qǐng)求的實(shí)例為端口號(hào)為8012的實(shí)例
商品服務(wù)調(diào)用訂單服務(wù),我們?cè)冱c(diǎn)擊訂單服務(wù)中接口請(qǐng)求的一行
訂單服務(wù)調(diào)用支付服務(wù),我們?cè)冱c(diǎn)擊支付服務(wù)中接口請(qǐng)求的一行
2. 測(cè)試2 - 異常請(qǐng)求
當(dāng)我們調(diào)用商品服務(wù)的接口并傳入商品id為5時(shí),發(fā)現(xiàn)響應(yīng)狀態(tài)為500,說(shuō)明接口中出現(xiàn)異常
查看日志如下:
從日志中可以看出,此次請(qǐng)求的調(diào)用鏈如下所示
下面我們進(jìn)入skywalking頁(yè)面查看該調(diào)用鏈路
首先我們知道此次請(qǐng)求調(diào)用的是商品服務(wù)暴露的接口,所以我們進(jìn)入商品服務(wù)查看調(diào)用鏈路
與前面正常請(qǐng)求的界面不同的是,當(dāng)接口中出現(xiàn)異常導(dǎo)致響應(yīng)500時(shí),該鏈路采用紅色重點(diǎn)標(biāo)記,其調(diào)用鏈中也通過(guò)使用紅色的點(diǎn)進(jìn)行標(biāo)記,方便我們知道異常發(fā)生在哪些服務(wù)中。
我們點(diǎn)擊調(diào)用鏈路的其中一環(huán),如下所示,可以發(fā)現(xiàn),商品服務(wù)處理請(qǐng)求的實(shí)例為端口號(hào)為8011的實(shí)例,從中也可以看到異常信息
商品服務(wù)調(diào)用訂單服務(wù),我們?cè)冱c(diǎn)擊訂單服務(wù)中接口請(qǐng)求的一行
訂單服務(wù)調(diào)用支付服務(wù),我們?cè)冱c(diǎn)擊支付服務(wù)中接口請(qǐng)求的一行
三、過(guò)濾非業(yè)務(wù)請(qǐng)求鏈路
前面說(shuō)到,在skywalking追蹤到的請(qǐng)求調(diào)用鏈路中,不僅包含了我們定義的業(yè)務(wù)接口,還包含了其他非業(yè)務(wù)接口(如eureka心跳檢測(cè)的接口),下面我們介紹如何過(guò)濾掉這些非業(yè)務(wù)接口,使其不出現(xiàn)在skywalking的鏈路追蹤中。
1. 鏈路忽略插件
進(jìn)入skywalking客戶端目錄,如下圖所示
進(jìn)入optional-plugins
文件夾,將jar包apm-trace-ignore-plugin-8.16.0.jar
復(fù)制到plugins
文件夾中
2. 配置
忽略調(diào)用鏈路的配置有兩種:1. 系統(tǒng)變量,2. 配置文件。系統(tǒng)變量?jī)?yōu)先級(jí)大于文件。
其配置的路徑應(yīng)匹配Ant Path
規(guī)則,如/path/*
、/path/**
、/path/?
。
-
系統(tǒng)變量
在系統(tǒng)變量中添加
skywalking.trace.ignore_path
來(lái)配置要忽略的接口,多個(gè)接口之間用逗號(hào)“,”分隔。 -
配置文件
在
config
文件夾中添加配置文件apm-trace-ignore-plugin.config
,在該配置文件中添加以下配置trace.ignore_path=/your/path/1/**,/your/path/2/**
示例:
我們要忽略掉eureka心跳檢測(cè)的接口,則在配置文件中添加以下配置
trace.ignore_path=/eureka/**
3. 測(cè)試
在插件和配置都完成后,我們重啟服務(wù),并進(jìn)入調(diào)用鏈路頁(yè)面進(jìn)行查看,此時(shí)和eureka相關(guān)的非業(yè)務(wù)接口已不再被追蹤
紙上得來(lái)終覺淺,絕知此事要躬行。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-631720.html
————————我是萬(wàn)萬(wàn)歲,我們下期再見————————文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-631720.html
到了這里,關(guān)于skywalking全鏈路追蹤的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!