ARMS應用監控的調用鏈分析功能是基于已存儲的全量鏈路明細數據,自由組合篩選條件與聚合維度進行實時分析,可以滿足不同場景的自定義診斷需求。
前提條件
ARMS應用監控面向已開通新版計費的用戶提供全新的監控詳情頁面,新版計費詳情,請參見產品計費(新版)。
對于未開通新版計費的用戶,如需查看新版監控詳情頁面,可在應用列表頁面單擊切換新版。
已為應用安裝探針,具體操作,請參見應用監控接入概述。
篩選調用鏈
登錄ARMS控制臺,在左側導航欄選擇 。
在應用列表頁面頂部選擇目標地域,然后單擊目標應用名稱。
說明語言列的圖標含義如下:
:接入應用監控的Java應用。
:接入應用監控的Golang應用。
:接入應用監控的Python應用。
-:接入可觀測鏈路 OpenTelemetry 版的應用。
在上方導航欄單擊調用鏈分析。
在調用鏈分析頁面右上角的時間選擇框設置需要查詢的時間段。
篩選鏈路。
在左側快捷篩選區域,通過狀態、耗時、應用名稱、接口名稱和主機地址維度快速篩選鏈路。
篩選條件將會顯示在頁面頂部文本框內。
單擊頂部文本框,在下拉彈窗中修改篩選條件或設置其他維度的篩選條件。
在右側頂部文本框直接輸入查詢條件。查詢語法說明,請參見調用鏈分析查詢用法說明。
說明單擊文本框右側的圖標可以保存當前篩選條件。
單擊文本框右側已保存視圖可以查看已保存的篩選條件,單擊目標的篩選條件可以快速查看對應篩選條件下的鏈路信息。
選擇聚合維度,可以將篩選后的數據按照指定維度聚合。
鏈路列表
篩選設置完成后,調用鏈分析頁面將會顯示篩選過濾后的鏈路查詢信息,包括調用次數和HTTP錯誤數的柱狀圖,調用耗時的時序曲線,以及調用鏈列表。
在調用鏈列表區域,您可以執行以下操作:
散點圖
散點圖頁面以時間為橫軸,耗時指標為縱軸,顯示調用鏈的耗時分布情況。將鼠標懸浮于散點上,可以顯示散點對應的調用鏈的基本信息。單擊散點可以查看調用鏈對應的調用詳情。更多信息,請參見Trace詳情。
全鏈路聚合
調用鏈分析對查詢到的Span可以按照各個維度進行分析,但這些分析是針對單個Span,并未在鏈路級別深度分析。而全鏈路聚合功能支持通過指定條件查詢分布式調用鏈路的TraceId(最多5000個),然后基于這些TraceId查詢對應的Span,并聚合這些Span得出最終結果,整個過程保證聚合的鏈路完整性。
由于全鏈路聚合是按照查詢條件后聚合計算相應數據的,當您選擇的條件比較多時,查詢計算存在一定延遲,請耐心等待。
參數 | 說明 |
spanName | Span名稱。 |
serviceName | Span對應的應用名。 |
請求數/請求比例 | 請求比例表示調用當前Span節點的請求比例數。 例如10%表示10%的請求會調用當前Span。 計算公式:請求比例=當前Span的請求數/總請求數*100% |
span數/請求倍數 | 請求倍數表示平均每個請求調用當前Span的次數。 例如1.5表示每個請求會調用當前Span 1.5次 。 計算公式:請求倍數=Span數/Span的請求數 |
平均自身耗時/比例 | 平均自身耗時表示不包括子Span的耗時。 例如,對于Span A和其子Span B, 其中A耗時為10 ms, B耗時為8 ms,那么A的自身耗時為2 ms。 計算公式:自身耗時=Span耗時-所有子Span耗時總和 重要 如果是異步調用,自身耗時即Span耗時,無需減去子Span耗時。 |
平均耗時 | 該Span的平均耗時。 |
異常數/異常比例 | 異常比例表示出現異常的請求比例。 例如3%表示有3%的請求出現異常。 計算公式:異常比例=異常請求數/總請求數 重要 異常請求數不等于異常數(Span調用異常的次數),當請求倍數大于1時, 一個異常請求可能對應多個異常數。 |
示例:如下表所示,Span A調用Span B和Span C,各參數含義如下。
spanName | serviceName | 請求數/請求比例 | span數/請求倍數 | 平均自身耗時/比例 | 平均耗時 | 異常數/異常比例 | |
A | - | demo | 10/100.00% | 10/1.00 | 5.00ms/25.00% | 20ms | 2/20.00% |
- | B | demo | 4/40.00% | 8/2.00 | 16.00ms/100.00% | 16ms | 2/50.00% |
- | C | demo | 1/10.00% | 1/1.00 | 4.00ms/100.00% | 4ms | 1/100.00% |
對于入口Span,A的請求數/請求比例表示A的請求總數為10次,比例為100%。B的請求數/請求比例為4/40.00%,表示只有4次請求調用了B,同理只有1次請求調用了C,對應的請求比例分別為40%和10%。其余的請求可能因邏輯判斷或者異常而未調用B和C。這里反映了請求的分布比例。
A的span數/請求倍數為10/1.00,表示每次請求只調用了一次A,但是對于B而言,4次請求有8個Span,每次請求調用了2次B。這里反映了一次請求中Span的分布比例。
A的平均自身耗時/比例為5.00ms/25.00%,表示A除了B和C之外的平均耗時為5ms,只占整體平均耗時的25%。而子Span B和C因為沒有子Span,所以自身耗時即整體耗時。這里反映了耗時的分布比例。
A的異常數/異常比例為2/20.00%,表示A發生了2次異常,占整體請求的20%。B的異常數/異常比例為2/50.00%,因為每次請求調用了2次B,總的請求數是4,異常比例是50%,那么2次請求發生了異常。所以B的分布可能是:一共有4次請求,其中有2次請求調用的4個Span B都是正常的,剩下2次請求中,首次Span B的調用都發生異常,然后重新調用成功。
如果需要查看具體的調用鏈詳情,可以將鼠標懸浮于藍色的Span名稱上,在懸浮框中可以看到推薦的調用鏈ID,單擊TraceId即可查看。
全鏈路拓撲
全鏈路拓撲頁簽顯示調用鏈聚合后的應用間拓撲。如下圖所示,表示兩個應用間存在調用關系,同時展示相應的請求數、錯誤數、響應時間等數據。
錯/慢Trace分析
錯/慢Trace分析旨在幫助用戶分析批量異常調用鏈的共有維度特征,例如錯/慢調用都來自同一個主機、同一個接口,可以分別篩選對應的主機、接口下的Trace,或通過組合維度(例如serviceName="arms-demo" AND ip="192.168.1.1"
)篩選Trace,快速定位系統異常。錯/慢Trace分析也可以用于梳理慢接口,對系統進行定向優化等。
慢Trace分析
ARMS對1000條耗時最長的Trace進行分析,展示與慢Trace顯著相關的Top 5維度信息。
上圖的示例表示,在1000條耗時最長的Trace中,有488條Trace的IP為10.219.152.24,且這些Trace的平均耗時為16.3s,說明IP為10.219.152.24的主機可能負載過高,導致響應時間較長。建議進入錯/慢Trace分析頁簽進行深入分析。
右側的164是該維度的異常分數,分數越高,該維度是慢調用根因的可能性越大。
慢Trace分析詳情
在慢Trace分析功能中,ARMS會在當前查詢條件下,以耗時大于耗時對比臨界值的Trace中耗時最高的1000條Trace作為樣本,與隨機抽樣的耗時小于耗時對比臨界值的1000條Trace進行對比,分析并識別出與慢調用顯著性相關的Top 3關鍵特征。
您可以根據需求,自定義耗時對比臨界值。例如,如果您想分析耗時超過1分鐘的Trace的維度特征,可以修改閾值為60000ms。
上圖示例中可以看到,IP為10.219.152.24的Trace在慢Trace樣本中占比最高,達到46.8%,并且IP為10.219.152.24的Trace僅占正常Trace的6.8%,說明大量的慢調用經過這個IP,且經過這個IP的調用鏈耗時都比較高,也許這個IP對應的主機出現了異常,值得深入分析。
同樣,經過IP為10.219.154.56的Trace和接口名為/eventCenter的Trace也值得深入分析。
單擊柱狀圖圖標,對IP為10.219.152.24的Trace進行下鉆分析。
可以發現大量慢調用都來自/eventCenter接口,單擊/eventCenter接口的柱狀圖,繼續下鉆分析。
最終可以定位到根因ip="10.219.152.24" AND spanName="/eventCenter"
。
您也可以直接在搜索框中填入任意篩選條件,ARMS會對您指定的Trace進行分析。查詢語法說明,請參見調用鏈分析查詢用法說明。
錯Trace分析
ARMS隨機選擇1000條錯Trace進行分析,展示與錯Trace顯著相關的Top 5維度信息。
上圖的示例表示,在1000條錯Trace樣本中,來自openVPromCluster接口的Trace占24.3%,并且這些Trace的錯誤率達到了98.78%,說明openVPromCluster接口很可能出現了異常,導致大量錯誤調用。建議進入錯/慢Trace分析頁簽進行深入分析。
右側的92是該維度的異常分數,分數越高,該維度是錯調用根因的可能性越大。
錯Trace分析詳情
在錯Trace分析功能中,ARMS會隨機抽樣1000條錯Trace和1000條正常Trace,分析識別出與錯調用顯著性相關的Top 3關鍵特征。
上圖示例中可以看到,在1000條錯Trace樣本中,接口名為/components/api/v1/mall/product的Trace占100%,且僅有9.8%的正常Trace接口名為/components/api/v1/mall/product,這說明所有的錯Trace都來自接口/components/api/v1/mall/product,并且經過這個接口的Trace幾乎都出錯了,該接口很有可能出現了異常,值得深入分析。
同樣,經過IP為10.0.0.47和10.0.0.37的Trace大部分調用都出錯了,也值得深入分析。
單擊spanName = "/components/api/v1/mall/product"
的柱狀圖圖標,可以過濾出接口名為/components/api/v1/mall/product的Trace,然后對相關Trace進行下鉆分析。
可以發現錯誤調用集中在10.0.0.47、10.0.0.37和10.0.0.50的IP上,繼續下鉆。
發現在serviceName="mall-gateway" AND spanName="/components/api/v1/mall/product" AND ip="10.0.0.47"
篩選條件下檢索的所有Trace都是錯Trace,說明在10.0.0.47主機中,mall-gateway應用的/components/api/v1/mall/product接口在該時段出現了異常。
錯/慢Trace分析更多使用案例,請參見通過錯/慢調用鏈排查應用產生異常的原因。
Trace詳情
組件標簽(圖示①)
標簽中展示了調用類型以及調用鏈中該類型Span的數量。
調用類型通過Span屬性中的component.name來區分(attributes.component.name)。
單擊組件標簽,可以在調用鏈中隱藏對應類型的Span,方便您過濾不需要關注的Span。再次單擊即可恢復顯示。
調用鏈軌跡圖(圖示②)
Trace軌跡圖用于展示整個跟蹤鏈路及Span數據分布情況。
Trace軌跡圖中每個條形均代表一個Span(僅展示耗時占總耗時比例大于1%的Span)。
不同的應用通過不同的顏色進行區分。例如,在上文示例圖中,藍色代表opentelemetry-demo-adservice應用。
軌跡圖中的黑線長度代表Span自身耗時,即Span耗時減去Sum(子Span耗時)。例如Span A調用Span B,A耗時為10毫秒,B耗時為8毫秒,那么A的自身耗時為2毫秒。
時間軸表示整條Trace數據的時間跨度。
調用鏈聚焦與過濾(圖示③)
該區域中的每一行代表一條Span數據,并展示父級Span和子級Span之間的層級關系。Span數據前面的標號表示該父級Span所擁有的子級Span數量。在該區域,您可以執行如下操作:
折疊:單擊圖標,折疊或展開Span數據。
聚焦:選中目標Span數據,單擊圖標,系統將只顯示該Span以及該Span下游的數據,實現Span數據聚焦。
取消聚焦:單擊圖標,取消Span數據聚焦。
過濾:在搜索框中輸入目標Span攜帶的信息(可以是Span名稱、應用名、屬性等內容),即可過濾目標Span,展示從入口Span到目標Span的調用路徑。如果要取消過濾,刪除搜索框中的內容并單擊搜索即可。
放大與縮小:單擊圖標,將會放大調用鏈,隱藏Trace軌跡圖。單擊圖標將恢復Trace軌跡圖展示。
Span詳情(圖示④)
Span詳情區域包含了當前Span的詳細信息,以及關聯的指標、日志和異常信息,并能管理自定義交互事件和觸發交互事件。
附加信息:附加信息包含Span的屬性(Attributes)、資源(Resources)、詳情(Details)和事件(Events)四種信息,并按照類型進行分組。關于Span詳情中的字段說明,請參考調用鏈分析參數說明。
指標:展示與Span關聯的指標。對于ARMS Java應用的調用鏈,將展示JVM 和主機維度的指標;對于開源探針上報的調用鏈,將展示RED黃金三指標。
日志關聯:如您為應用關聯了日志服務日志庫,可快速跳轉至日志庫并查詢當前TraceId對應的業務日志。
異常:當Span記錄了異常信息時,此頁面會展示具體的異常信息。
事件配置:您可以為調用鏈的一個或多個屬性設置交互事件,方便查詢更詳盡的調用鏈或查看與調用鏈關聯的日志、指標等信息。自定義交互事件相關的配置說明請參見為調用鏈配置自定義交互事件。
二次開發
鏈路數據保存在您的SLS中,Project名稱為proj-xtrace-<encode>-<region-id>,logstore名稱為logstore-tracing。其中<region-id>是調用鏈分析對應的地域,例如cn-hangzhou。數據格式的含義,請參見調用鏈分析參數說明。您可以基于已存儲的全量鏈路明細數據進行二次開發,自由組合篩選條件與聚合維度進行實時分析,可以滿足不同場景的自定義診斷需求。更多使用方法,請參見實時分析鏈路數據。