阿里云國際站經(jīng)銷商,主營阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費(fèi)開戶,代充值優(yōu)惠大,聯(lián)系客服飛機(jī)@jkkddd


通過TraceExplorer實(shí)時分析鏈路數(shù)據(jù)

本文將介紹如何通過鏈路分析快速定位五種經(jīng)典線上問題,更直觀的了解鏈路分析的用法與價值。
背景信息
除了使用調(diào)用鏈排查單次請求的異常,或者使用預(yù)聚合的鏈路統(tǒng)計指標(biāo)進(jìn)行服務(wù)監(jiān)控與告警之外,鏈路追蹤還支持基于明細(xì)鏈路數(shù)據(jù)的后聚合分析,簡稱鏈路分析(Trace Explorer)。相比調(diào)用鏈,鏈路分析能夠更快的定界問題;相比預(yù)聚合的監(jiān)控圖表,鏈路分析可以更靈活的實(shí)現(xiàn)自定義診斷。
鏈路分析是基于已存儲的全量鏈路明細(xì)數(shù)據(jù),自由組合篩選條件與聚合維度進(jìn)行實(shí)時分析,可以滿足不同場景的自定義診斷需求。例如,查看耗時大于3秒的慢調(diào)用時序分布,查看錯誤請求在不同機(jī)器上的分布,或者查看VIP客戶的流量變化等。
問題一:流量不均
負(fù)載均衡配置錯誤,導(dǎo)致大量請求打到少量機(jī)器,造成“熱點(diǎn)”影響服務(wù)可用性,怎么辦?
流量不均導(dǎo)致的“熱點(diǎn)擊穿”問題,很容易造成服務(wù)不可用。在生產(chǎn)環(huán)境中出現(xiàn)過多起這樣的案例,比如因負(fù)載均衡配置錯誤,注冊中心異常導(dǎo)致重啟節(jié)點(diǎn)的服務(wù)無法上線,DHT哈希因子異常等。
流量不均的最大風(fēng)險在于能否及時發(fā)現(xiàn)“熱點(diǎn)”現(xiàn)象。它的問題表象更多是服務(wù)響應(yīng)變慢或報錯,傳統(tǒng)的監(jiān)控?zé)o法直觀的反映熱點(diǎn)現(xiàn)象,所以大部分運(yùn)維人員都不會第一時間考慮這個因素,從而浪費(fèi)了寶貴的應(yīng)急處理時間,造成故障影響面不斷擴(kuò)散。
通過鏈路分析按IP分組統(tǒng)計鏈路數(shù)據(jù),可以直觀地看到調(diào)用請求分布在哪些機(jī)器上,特別是問題發(fā)生前后的流量分布變化。如果大量請求突然集中在一臺或少量機(jī)器,很可能是流量不均導(dǎo)致的熱點(diǎn)問題,然后再結(jié)合問題發(fā)生點(diǎn)的變更事件,快速定位造成故障的錯誤變更,及時回滾。
在Trace Explorer頁面設(shè)置按IP聚合,如下圖所示,可以發(fā)現(xiàn)大部分流量集中在XX.XX.XX.108這臺機(jī)器上。
問題二:單機(jī)故障
網(wǎng)卡損壞、CPU超賣、磁盤打滿等單機(jī)故障,導(dǎo)致部分請求失敗或超時,如何排查?
單機(jī)故障每時每刻都在頻繁發(fā)生,特別是核心集群由于節(jié)點(diǎn)數(shù)量比較多,從統(tǒng)計概率來看幾乎是一種“必然”事件。單機(jī)故障不會造成服務(wù)大面積不可用,但是會造成少量的用戶請求失敗或超時,持續(xù)影響用戶體驗(yàn)和答疑成本,需要及時處理。
單機(jī)故障可以分為宿主機(jī)故障和容器故障兩類(在Kubernetes環(huán)境可以分為Node和Pod)。例如CPU超賣、硬件故障等都是宿主機(jī)級別,會影響所有容器;而磁盤打滿、內(nèi)存溢出等故障僅影響單個容器。因此,在排查單機(jī)故障時,可以根據(jù)宿主機(jī)IP和容器IP兩個維度分別進(jìn)行分析。
面對這類問題,可以通過鏈路分析先篩選出異常或超時請求,然后再根據(jù)宿主機(jī)IP或容器IP進(jìn)行聚合分析,可以快速判斷是否存在單機(jī)故障。如果異常請求集中在單臺機(jī)器,可以嘗試替換機(jī)器進(jìn)行快速恢復(fù),或者排查該機(jī)器的各項系統(tǒng)參數(shù):例如磁盤空間是否已滿、CPU Steal Time是否過高等。如果異常請求分散在多臺機(jī)器,那么大概率可以排除單機(jī)故障因素,可以重點(diǎn)分析下游依賴服務(wù)或程序邏輯是否異常。
在Trace Explorer頁面篩選錯誤調(diào)用或慢調(diào)用,并設(shè)置按IP進(jìn)行分組統(tǒng)計,如果異常調(diào)用集中出現(xiàn)在特定機(jī)器,則有較大概率是機(jī)器故障。
問題三:慢接口治理
新應(yīng)用上線或大促前性能優(yōu)化,如何快速梳理慢接口列表,解決性能瓶頸?
新應(yīng)用上線或大促備戰(zhàn)時通常需要做一次系統(tǒng)性的性能調(diào)優(yōu)。第一步就是分析當(dāng)前系統(tǒng)存在哪些性能瓶頸,梳理出慢接口的列表和出現(xiàn)頻率。
此時,可以通過鏈路分析篩選出耗時大于一定閾值的調(diào)用,再根據(jù)接口名稱進(jìn)行分組統(tǒng)計,這樣就可以快速定位慢接口的列表與規(guī)律,然后對出現(xiàn)頻率最高的慢接口逐一進(jìn)行治理。
找到慢接口后,可以結(jié)合相關(guān)的調(diào)用鏈、方法棧和線程池等數(shù)據(jù)定位慢調(diào)用根因。常見原因包括以下幾類:
數(shù)據(jù)庫或微服務(wù)連接池過小,大量請求處于獲取連接狀態(tài)。可以調(diào)大連接池最大線程數(shù)解決。
N+1問題。例如一次外部請求內(nèi)部調(diào)用了上百次的數(shù)據(jù)庫調(diào)用,可以將碎片化的請求進(jìn)行合并,降低網(wǎng)絡(luò)傳輸耗時。
單次請求數(shù)據(jù)過大,導(dǎo)致網(wǎng)絡(luò)傳輸和反序列化時間過長,而且容易導(dǎo)致Full GC??梢詫⑷坎樵兏臑榉猪摬樵?,避免一次請求過多數(shù)據(jù)。
日志框架“熱鎖”??梢詫⑷罩就捷敵龈臑楫惒捷敵?。
在Trace Explorer頁面篩選大于5秒的慢調(diào)用,并設(shè)置按接口名進(jìn)行分組統(tǒng)計,發(fā)現(xiàn)慢接口的規(guī)律。
問題四:業(yè)務(wù)流量統(tǒng)計
如何分析重??蛻艋蚯赖牧髁孔兓头?wù)質(zhì)量?
在實(shí)際生產(chǎn)環(huán)境中,服務(wù)通常是標(biāo)準(zhǔn)的,但業(yè)務(wù)卻是分類分級的。同樣的訂單服務(wù),我們需要按照類目、渠道、用戶等維度進(jìn)行分類統(tǒng)計,實(shí)現(xiàn)精細(xì)化運(yùn)營。例如,對于線下零售渠道而言,每一筆訂單、每一個POS機(jī)的穩(wěn)定性都可能會觸發(fā)輿情,線下渠道的SLA要求要遠(yuǎn)高于線上渠道。那么,應(yīng)該如何在通用的電商服務(wù)體系中,精準(zhǔn)的監(jiān)控線下零售鏈路的流量狀態(tài)和服務(wù)質(zhì)量呢?
這里可以使用鏈路分析的自定義Attributes過濾和統(tǒng)計實(shí)現(xiàn)低成本的業(yè)務(wù)鏈路分析。例如,在入口服務(wù)針對線下訂單打上 {"attributes.channel": "offline"}的標(biāo)簽,然后再針對不同門店、用戶客群和商品類目分別打標(biāo)。最后,通過對attributes.channel = offline進(jìn)行過濾,再對不同的業(yè)務(wù)標(biāo)簽進(jìn)行g(shù)roup by來分組統(tǒng)計調(diào)用次數(shù)、耗時或錯誤率等指標(biāo),就可以快速地分析出每一類業(yè)務(wù)場景的流量趨勢與服務(wù)質(zhì)量。
問題五:灰度發(fā)布監(jiān)控
500臺機(jī)器分10批發(fā)布,如何在第一批灰度發(fā)布后,就能快速判斷是否有異常?
變更三板斧“可灰度、可監(jiān)控、可回滾”是保障線上穩(wěn)定性的重要準(zhǔn)則。其中,分批次灰度變更是降低線上風(fēng)險,控制爆炸半徑的關(guān)鍵手段。一旦發(fā)現(xiàn)灰度批次的服務(wù)狀態(tài)異常,應(yīng)及時進(jìn)行回滾,而不是繼續(xù)發(fā)布。然而,生產(chǎn)環(huán)境很多故障的發(fā)生都是由于缺乏有效的灰度監(jiān)控導(dǎo)致的。
例如,當(dāng)微服務(wù)注冊中心異常時,重啟發(fā)布的機(jī)器無法進(jìn)行服務(wù)注冊上線。由于缺乏灰度監(jiān)控,前幾批重啟機(jī)器雖然全部注冊失敗,導(dǎo)致所有流量都集中路由到最后一批機(jī)器,但是應(yīng)用監(jiān)控的總體流量和耗時沒有顯著變化,直至最后一批機(jī)器也重啟注冊失敗后,整個應(yīng)用進(jìn)入完全不可用狀態(tài),最終導(dǎo)致了嚴(yán)重的線上故障。
在上述案例中,如果使用{"attributes.version": "v1.0.x"}對不同機(jī)器流量進(jìn)行版本打標(biāo),通過鏈路分析對attributes.version進(jìn)行分組統(tǒng)計,可以清晰的區(qū)分發(fā)布前后或不同版本的流量變化和服務(wù)質(zhì)量,不會出現(xiàn)灰度批次異常被全局監(jiān)控掩蓋的情況。
鏈路分析的約束限制
鏈路分析雖然使用靈活,可以滿足不同場景的自定義診斷需求,但是它也有幾點(diǎn)使用約束限制:
基于鏈路明細(xì)數(shù)據(jù)進(jìn)行分析的成本較高。
鏈路分析的前提是盡可能完整的上報并存儲鏈路明細(xì)數(shù)據(jù)。如果采樣率比較低導(dǎo)致明細(xì)數(shù)據(jù)不全,鏈路分析的效果就會大打折扣。為了降低全量存儲成本,可以在用戶集群內(nèi)部署邊緣數(shù)據(jù)節(jié)點(diǎn),進(jìn)行臨時數(shù)據(jù)緩存與處理,降低跨網(wǎng)絡(luò)上報開銷。或者,在服務(wù)端進(jìn)行冷熱數(shù)據(jù)分離存儲,熱存儲進(jìn)行全量鏈路分析,冷存儲進(jìn)行錯慢鏈路診斷。
后聚合分析的查詢性能開銷大,并發(fā)小,不適合用于告警。
鏈路分析是實(shí)時的進(jìn)行全量數(shù)據(jù)掃描與統(tǒng)計,查詢性能開銷要遠(yuǎn)大于預(yù)聚合統(tǒng)計指標(biāo),所以不適合進(jìn)行高并發(fā)的告警查詢。需要結(jié)合自定義指標(biāo)功能將后聚合分析語句下推至客戶端進(jìn)行自定義指標(biāo)統(tǒng)計,以便支持告警與大盤定制。
結(jié)合自定義標(biāo)簽埋點(diǎn),才能最大化釋放鏈路分析價值。
鏈路分析不同于標(biāo)準(zhǔn)的應(yīng)用監(jiān)控預(yù)聚合指標(biāo),很多自定義場景的標(biāo)簽需要用戶手動埋點(diǎn)打標(biāo),這樣才能最有效的區(qū)分不同業(yè)務(wù)場景,實(shí)現(xiàn)精準(zhǔn)分析。

心靈雞湯:

標(biāo)題:阿里云賬號實(shí)名注冊,阿里云代理商

地址:http://lawncarebusinesstips.com/kfxw/64433.html