阿里云國際站經銷商,主營阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費開戶,代充值優惠大,聯系客服飛機@jkkddd


通過TraceExplorer實時分析鏈路數據

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

標題:阿里云賬號實名注冊,阿里云代理商

地址:http://m.swled.com.cn/cjxw/58977.html