调用链路_全链路日志分析解决方案介绍
為何需要鏈路分析?
您是否了解運維環境的網絡架構和業務系統架構?當業務升級或變更時,是否對已有的架構圖及時作出更新?當發生故障時,是否能夠快速判斷哪個業務系統模塊或接口出現了問題,是否能夠快速判斷故障影響范圍?
要回答以上問題,就需要對各業務的調用關系有著精準、實時的掌握,但在實際工作中,即使是業務系統開發者,也很難清楚地說出某個服務的調用鏈路,況且服務調用鏈路還是動態變化的,遇到問題也只能去查看代碼。
隨著微服務、容器等新型架構技術的流行,分布式系統環境的調用鏈追蹤問題也變得愈加復雜。2010年,谷歌開源了其內部使用的分布式追蹤系統Dapper,此后很多企業和組織發布了各自的分布式追蹤系統,其中比較知名的開源項目包括Zipkin、Pinpoint等。
鏈路追蹤的概念原理
在這里,我們對鏈路追蹤、調用鏈、全鏈路、分布式鏈路追蹤的概念不做區分,可以理解為整個鏈路,一個鏈路會經過如下圖的調用過程:
典型的業務調用鏈示意圖
該圖表示一個最典型的請求調用過程,所謂鏈路就是把j-o這6個環節串連起來。在進行鏈路分析時,需要為每次請求定義一個唯一標識traceid,這樣才能根據traceid查出本次請求調用的所有服務。
圖中標示的j-o分別代表兩服務之間的一個請求-應答對,我們把它定義為一個span,每個span包含以下字段:
l spanid:請求-應答對的唯一標識;
l name:span的名稱;
l parentspanid:父span的id,根據spanid能區分調用的先后順序,但無法體現調用層級關系,例如上圖中多個服務,可能是逐級調用的鏈條,也可能是同時被同一個服務調用,應該每次都用parentspanid記錄下是誰調用的;
l timestamp:span的起止時間戳(starttime、endtime);
l duration:span的持續時間;
l other fields:成功狀態status、錯誤類型errortype等。
有timestamp字段,就可以計算出從服務調用到服務返回的總耗時,但是這個時間包含了服務的執行時間和網絡延遲,有時候我們需要區分出這兩類時間以方便做針對性優化。那如何計算網絡延遲呢?我們可以把調用和返回的過程分為以下四個事件:
o Client Sent,cs事件,指客戶端發起調用請求到服務端;
o Server Received,sr事件,指服務端接收到了客戶端的調用請求;
o Server Sent,ss事件,指服務端完成了處理,將信息返回給客戶端;
o Client Received,cr事件,指客戶端接收到了服務端的返回信息。
四類事件示意圖
我們將span的四個基本事件補充到調用鏈圖上,得到以下圖示:
包含四類調用事件的調用鏈圖
在上圖中,對服務器Service0來說,會產生兩個事件,一個是發起事件cs,另一個是接收事件cr。對Service1來說,首先要接收Service0請求,即事件sr,當處理完成時,作為服務端對服務器Service0進行響應,即事件ss。其它服務之間的交互事件以此類推。
規范地記錄以上日志,通過日志易SPL(Search Processing Language)進行分析統計,進而實現可視化呈現,將幫助金融企業更好地監控業務調用狀態及健康度,快速實現故障定位,分析及優化業務性能瓶頸。
日志易調用鏈分析的實現效果
1、靜態拓撲
靜態拓撲是從系統或網絡結構層面上進行呈現,能體現業務系統的架構、從上游到下游的流轉、分流的情況,每個節點上包括曲線、指標統計等信息。在運維以及安全態勢方面,指標統計可以發現異常問題。
2、動態拓撲
例如下圖是基于日志改造的鏈路動態自動拓撲圖,我們可以看到一筆交易經歷的各個接口,通過選擇不同的交易業務類型,動態拓撲圖會自動的展示1分鐘內這類交易所有的流程。
3、鏈路+業務日志分析
鏈路分析日志需要和業務日志做聯動,業務日志包括系統分析日志以及追溯涉及的日志,調用鏈日志包括全鏈路監控的拓撲以及單筆調用鏈和呈現方式。全鏈路交易監控由五大組成部分:
(1)全局概覽:
通過系統維度、產品維度、異常維度三大維度展示整體運行狀況。
o 系統維度呈現的是成功率的同環比,可以鉆取到每個系統專題分析頁面;
o 產品維度呈現的是黃金指標,比如交易量、平均耗時、成功率、錯誤等指標;
o 異常維度呈現的是發現問題的概覽統計,它按系統維度對錯誤進行趨勢圖展示,可以鉆取到鏈路分析頁面。
(2)全鏈路監控:
通過動態拓撲圖形式(即2、動態拓撲)對整個交易路徑進行全局監控,異常節點快速標識。
o 宏觀監控:監控交易的接口級運行狀況;
o 指標統計:將接口的調用量、成功率、平均耗時、自身錯誤、非自身錯誤、超時錯誤等指標做統計,進行浮窗展示;
o 異常標注:當出現不同錯誤時,可以用不同顏色來標記;
o 歷史追溯:追溯時間軸歷史及標注,比如歷史拓撲播放、時間軸異常點標記、已知異常標注等。
(3)系統分析:
對單系統的關鍵指標進行接口級分析展示。比如可以對系統調用總量、系統調用失敗總量、當前耗時最高接口及耗時、接口錯誤類型統計、接口平均耗時等指標進行分析。
(4)鏈路分析:
通過關鍵性信息針對單筆交易進行調用鏈分析,快速定位到異常主機和接口。可以進行字段過濾篩選,呈現單筆交易跟蹤鏈視圖等。
(5)追溯:
全鏈路原始日志查詢。例如,可通過remask字段進行相應關聯日志的查詢。
全鏈路分析的價值
1、觀察性
Logging、Tracing、Metrics融合,提升服務可觀察性;
2、開發測試及鏈路優化
異常監控數據二次統計分析,優化異常節點;
開發過程中查看關聯模塊的日志和作為測試提單線索;
3、拓撲模式異常檢測
拓撲結構形成基線,異常發現與告警;
影響范圍快速確認,啟動應急預案;
4、個例分析及宏觀監控
點面結合,快速故障定位;
統計為多維數據用于監控告警和原因分析;
歡迎預約日志易商務經理,我們將根據您的需求為您提供解決方案。本地版免費試用30天起。
總結
以上是生活随笔為你收集整理的调用链路_全链路日志分析解决方案介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dji大疆机器人冬令营_2019高中生机
- 下一篇: android简单小程序完整代码_10行