|
問題來源 互聯(lián)網(wǎng)項目通常都是大用戶量,大并發(fā),因此從技術(shù)架構(gòu)上大多采用分布式架構(gòu)構(gòu)建成大型分布式系統(tǒng),SOA或者是微服務(wù),一個請求涉及到多個子系統(tǒng),如果某個請求的處理不正常,怎么排查定位問題呢?如果沒有合適的手段,排查問題無異大海撈針,為了提高解決問題的效率,迫切需要有一個技術(shù)手段能跟蹤整個處理環(huán)節(jié),并能夠快速定位。一種可行的方案就是跟蹤這個調(diào)用鏈,把每次請求的完整處理環(huán)節(jié)串聯(lián)起來,這樣就可以實現(xiàn)對調(diào)用路徑的全程監(jiān)控。
技術(shù)實現(xiàn)要點 采用日志埋點技術(shù),在請求的處理入口處為該次請求分配一個TraceId(跟蹤Id),將此TraceId依次傳遞給下一個處理環(huán)節(jié),在每一個處理環(huán)節(jié)記錄日志,通過這個TraceId就可以查詢到從起始到處理完畢整個處理路徑中的日志信息。 埋點日志記錄的內(nèi)容 TraceId、RPCId、調(diào)用的開始時間,調(diào)用類型,協(xié)議類型,調(diào)用方ip和端口,請求的服務(wù)名等信息; 調(diào)用耗時,調(diào)用結(jié)果,異常信息,消息報文等; 預(yù)留可擴(kuò)展字段,為將來的擴(kuò)展做預(yù)留; 記錄內(nèi)容可以根據(jù)業(yè)務(wù)的需要詳細(xì)設(shè)計,原則就是要方便將來排查定位問題。 收集查詢的實現(xiàn) 把埋點日志數(shù)據(jù)收集起來,再搭建一個查詢系統(tǒng)就可以方便定位問題了,簡單的查詢分析系統(tǒng)可以采用ELK(Elasticsearch + Logstash + Kibana)來搭建。 參考文獻(xiàn),谷歌的Dapper論文:https://bigbully./Dapper-translation |
|
|