spring cloud sleuth 和 zipkin 鏈路跟蹤

一驰坊、spring cloud sleuth

提供鏈路追蹤。通過sleuth可以很清楚的看出一個(gè)請求都經(jīng)過了哪些服務(wù)碎赢;可以很方便的理清服務(wù)間的調(diào)用關(guān)系荚虚。

可視化錯(cuò)誤薛夜。對于程序未捕捉的異常,可以結(jié)合zipkin分析版述。

分析耗時(shí)梯澜。通過sleuth可以很方便的看出每個(gè)采樣請求的耗時(shí),分析出哪些服務(wù)調(diào)用比較耗時(shí)渴析。當(dāng)服務(wù)調(diào)用的耗時(shí)隨著請求量的增大而增大時(shí)晚伙,也可以對服務(wù)的擴(kuò)容提供一定的提醒作用。

從官網(wǎng)得知 從2.1.0版開始檬某,Spring Cloud Sleuth支持將跟蹤發(fā)送到多個(gè)跟蹤系統(tǒng)撬腾,且去掉了 spring cloud streaming,那如果只引入sleuth包恢恼,不同機(jī)器服務(wù)之間相互調(diào)用是否還能實(shí)現(xiàn)鏈路追蹤民傻?經(jīng)過測試答案是可以的,源碼這里我沒研究场斑,但是從技術(shù)角度要自己實(shí)現(xiàn)漓踢,其實(shí)只要在 header 里添加一個(gè)值(唯一),在上下游服務(wù)之間傳遞漏隐,便可行喧半。

所以結(jié)論是如果只是單純?yōu)榱耸褂面溌纷粉櫾诳刂婆_(tái)看,只引入 sleuth 是已經(jīng)足夠的青责。

二挺据、spring cloud zipkin

Zipkin是Twitter的一個(gè)開源項(xiàng)目,我們可以使用它來收集各個(gè)服務(wù)器上請求鏈路的跟蹤數(shù)據(jù)脖隶,并通過它提供的API接口來輔助查詢跟蹤數(shù)據(jù)以分布式系統(tǒng)的監(jiān)控程序扁耐,通過UI組件幫助我們及時(shí)發(fā)現(xiàn)系統(tǒng)中出現(xiàn)的延遲升高問題以及系統(tǒng)性能瓶頸根源。

Zipkin的基礎(chǔ)架構(gòu)

Collector(收集器組件)-> 主要負(fù)責(zé)收集外部系統(tǒng)跟蹤信息产阱,轉(zhuǎn)化為Zipkin內(nèi)部的Span格式婉称。

Storage(存儲(chǔ)組件)-> 主要負(fù)責(zé)收到的跟蹤信息的存儲(chǔ),默認(rèn)為存儲(chǔ)在內(nèi)存中,同時(shí)支持存儲(chǔ)到Mysql王暗、Cassandra以及ElasticSearch悔据。

API(Query)-> 負(fù)責(zé)查詢Storage中存儲(chǔ)的數(shù)據(jù),提供簡單的JSON API獲取數(shù)據(jù)俗壹,主要提供給web UI使用科汗。

Web UI(展示組件)-> 提供簡單的web界面,方便進(jìn)行跟蹤信息的查看以及查詢策肝,同時(shí)進(jìn)行相關(guān)的分析肛捍。

Instrumented Client 和Instrumented Server,是指分布式架構(gòu)中使用了Trace工具的兩個(gè)應(yīng)用之众,Client會(huì)調(diào)用Server提供的服務(wù),兩者都會(huì)向Zipkin上報(bào)Trace相關(guān)信息依许。在Client 和 Server通過Transport上報(bào)Trace信息后棺禾,由Zipkin的Collector模塊接收,并由Storage模塊將數(shù)據(jù)存儲(chǔ)在對應(yīng)的存儲(chǔ)介質(zhì)中峭跳,然后Zipkin提供API供UI界面查詢Trace跟蹤信息膘婶。Non-Instrumented Server,指的是未使用Trace工具的Server蛀醉,顯然它不會(huì)上報(bào)Trace信息悬襟。

三、日志解析

2020-06-19 11:10:44.967 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] Content-Length: 1921
2020-06-19 11:10:44.967 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] Content-Type: application/json
2020-06-19 11:10:44.968 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] 
2020-06-19 11:10:44.968 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] {"data":{"createTime":null,"updateTime":null,"deleteFlag":null,"id":null,"menuId":null,"name":null,"buildingDegree":null,"cityName":null,"cityId":null,"lng":null,"lat":null,"remarks":null},"token":"5a717dca1142d685c8aa54b45d0388c8","user":{"id":1,"account":"15771720565","name":"馮**","phone":"15771720565","onlineState":null,"remarks":"fdsafdsa","rolesId":1,"avatar":null,"token":"5a717dca1142d685c8aa54b45d0388c8","roles":{"id":1,"roleName":"超級(jí)管理員","remarks":"2222","menus":null},"menus":[{"id":1,"parentId":0,"menuName":"大屏展示","menuPath":"/dashboard","menuOrder":1000,"icon":"el-icon-monitor","remarks":null,"menuData":false,"menuButton":false,"child":[]},{"id":2,"parentId":0,"menuName":"數(shù)據(jù)分析","menuPath":"/dataAnalysis","menuOrder":2000,"icon":"el-icon-data-line","remarks":null,"menuData":false,"menuButton":false,"child":[]},{"id":3,"parentId":0,"menuName":"系統(tǒng)管理","menuPath":"/setting","menuOrder":3000,"icon":"el-icon-setting","remarks":null,"menuData":false,"menuButton":false,"child":[{"id":26,"parentId":3,"menuName":"用戶管理","menuPath":"/setting/user","menuOrder":3100,"icon":null,"remarks":null,"menuData":false,"menuButton":false,"child":[]},{"id":5,"parentId":3,"menuName":"角色管理","menuPath":"/setting/roles","menuOrder":3200,"icon":null,"remarks":null,"menuData":false,"menuButton":false,"child":[]},{"id":6,"parentId":3,"menuName":"菜單管理","menuPath":"/setting/menus","menuOrder":3300,"icon":null,"remarks":null,"menuData":false,"menuButton":false,"child":[]}]},{"id":16,"parentId":0,"menuName":"電站管理","menuPath":"/electricityStation","menuOrder":4000,"icon":"el-icon-lightning","remarks":null,"menuData":false,"menuButton":false,"child":[{"id":17,"parentId":16,"menuName":"電站信息","menuPath":"/electricityStation/list","menuOrder":4100,"icon":null,"remarks":"列出所有電站","menuData":false,"menuButton":false,"child":[]}]}]}}
2020-06-19 11:10:44.968 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] ---> END HTTP (1921-byte body)
2020-06-19 11:10:44.998 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] <--- HTTP/1.1 200  (30ms)
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] connection: keep-alive
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] content-type: application/json
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] date: Fri, 19 Jun 2020 03:10:44 GMT
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] keep-alive: timeout=60
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] transfer-encoding: chunked
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] 
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] {"code":200,"msg":null,"data":[{"name":"平頂山","value":30},{"name":"西安","value":50},{"name":"北京","value":43}]}
2020-06-19 11:10:45.000 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] <--- END HTTP (122-byte body)
[bff-web-data-platform, 368e435f7de29eff, 368e435f7de29eff, false] 解析:

bff-web-data-platform 稱為 appname -> 應(yīng)用名稱

368e435f7de29eff 稱為 traceId -> 為了追蹤一個(gè)請求完整的流轉(zhuǎn)過程拯刁,可以給每次請求分配一個(gè)唯一的 traceId脊岳,當(dāng)請求調(diào)用其他服務(wù)時(shí),通過傳遞這個(gè) traceId垛玻。

368e435f7de29eff 稱為 spanId -> 發(fā)生的特定操作的ID

false 稱為 exportable -> 是否應(yīng)將日志導(dǎo)出到Zipkin割捅。

無論是使用 sleuth 或是使用 zipkin 都會(huì)在控制臺(tái)上輸出這樣的日志信息。

借鑒博客
2.1以下版本中文文檔帚桩,可以借鑒

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末亿驾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子账嚎,更是在濱河造成了極大的恐慌莫瞬,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件郭蕉,死亡現(xiàn)場離奇詭異疼邀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)恳不,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門檩小,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人烟勋,你說我怎么就攤上這事规求】鸶叮” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵阻肿,是天一觀的道長瓦戚。 經(jīng)常有香客問我,道長丛塌,這世上最難降的妖魔是什么较解? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮赴邻,結(jié)果婚禮上印衔,老公的妹妹穿的比我還像新娘。我一直安慰自己姥敛,他們只是感情好奸焙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著彤敛,像睡著了一般与帆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上墨榄,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天玄糟,我揣著相機(jī)與錄音,去河邊找鬼袄秩。 笑死阵翎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的播揪。 我是一名探鬼主播贮喧,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼猪狈!你這毒婦竟也來了箱沦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤雇庙,失蹤者是張志新(化名)和其女友劉穎谓形,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疆前,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寒跳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竹椒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片童太。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出书释,到底是詐尸還是另有隱情翘贮,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布爆惧,位于F島的核電站狸页,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏扯再。R本人自食惡果不足惜芍耘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熄阻。 院中可真熱鬧斋竞,春花似錦、人聲如沸饺律。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽复濒。三九已至,卻和暖如春乒省,著一層夾襖步出監(jiān)牢的瞬間巧颈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國打工袖扛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留砸泛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓蛆封,卻偏偏與公主長得像唇礁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子惨篱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355