基於多源資料畫像的失敗用例智慧分析
摘要:雲原生分散式系統和DevOps開發模式下微服務上線節奏快,按周/按天/按需釋出,失敗用例的定位分析耗時達數小時或數天,無法滿足快速質量反饋的訴求。
本文分享自華為雲社群《華為雲基於多源資料畫像的失敗用例智慧分析》,作者:DevAI 。
作者:付求愛,華為雲PaaS技術創新Lab,DevAI智慧運維組負責人,北京大學計算機系畢業,研究範圍主要包括日誌分析、KPI異常檢測和失敗用例智慧分析等。
1. 背景
雲化產品上線節奏快,每天產生的失敗用例規模以萬計,對應產生xxTB的測試執行日誌,需要投入大量人力分析測試失敗用例。如果單靠人力分析測試日誌資料,耗時長,可能在測試周期內都無法完成,影響產品釋出。為了提升分析效率,需要標註日誌資料來訓練模型,從而判斷失敗日誌的型別,這需要大量人力標註日誌資料,並且僅能定位已知問題,對未知問題引發的失敗用例是無法推薦根因的。
概念闡述:
- 測試用例型別:功能測試下單元測試、整合測試;
- 測試失敗定義:每個用例可看做一個請求,當用例執行結果不符合預期設定的時候即失敗;
- 失敗可能原因:資料庫結果有變、資料庫連線異常、執行機效能下降響應超時、服務變更但是用例未更新、用例間衝突、配置環境問題、被測服務BUG等;
- 可用資料來源:
- 用例指令碼:測試人員定義的功能測試指令碼(模擬輸入引數,呼叫介面,預期結果);
- 測試日誌:測試用例指令碼定義的模組輸出;
- 呼叫鏈日誌:即呼叫鏈,每個span以日誌方式存在;
- 業務執行日誌:軟體在執行相關功能時候輸出的日誌;
- 用例關聯程式碼覆蓋:軟體執行時經過的程式碼(順序不明);
- ……
解決問題:
異常是已知的(用例失敗),目的是定位失敗的細粒度根因。單個數據源有時候無法反映失敗根因,或是存在多個異常資訊無法鎖定根因,或是隻反映故障表象(如一個400返回碼)。通常需要結合測試日誌、呼叫鏈日誌和業務日誌等多源資料進行故障分析,通過識別出多個數據源因為故障導致的與歷史成功時的特徵差異點,進行交叉驗證,篩選/推薦真正失敗的原因。
2. 失敗用例分析痛點
失敗用例分析面臨的主要痛點有:
- 同一個問題重複分析
- 資料來源多,分佈於各個研發系統,部分資料來源獲取有難度
- 依賴人工經驗
圖1 失敗用例分析痛點
3. 失敗用例智慧分析整體方案
失敗用例智慧分析整體方案如下圖所示:
圖2 失敗用例智慧分析整體方案
3.1 用例多源資料畫像建立
依賴於多源資料建立使用者畫像的方案如下圖所示:
圖3 用例多源資料畫像建立
對於用例並行情況下多源資料獲取,染色呼叫鏈,攜帶用例資訊,基於呼叫鏈技術&位元組碼增強技術獲取多源資料。
圖4 用例並行情況下多源資料獲取
3.2 失敗根因智慧推薦
基於多源(時間+空間)資料畫像實現失敗用例根因自動推薦,不依賴業務知識,無監督方式檢測資料異變與根因推薦。
圖5 失敗根因智慧推薦總體方案
- 基於單用例多源資料畫像的失敗根因定位(時間維度):通過對與用例關聯的各個資料來源(呼叫鏈、測試日誌、程式碼覆蓋、用例指令碼、執行日誌、配置)的歷史資料不依賴業務知識建立正常資料模型(模板),形成單用例畫像,識別失敗用例中資料差異點,推薦為失敗根因。
- 基於多用例的多源資料關聯性的失敗根因定位(空間維度):基於多個失敗用例的多源資料異常點結果,通過聚類、譜分析、神經網路等方法挖掘之間關聯性,提升推薦根因準確性。
- 基於反饋資料的排序學習模型推薦根因技術:引入基於反饋機制學習,通過學習排序模型使得推薦根因排序更加符合專家經驗。
3.3 關鍵技術1-呼叫鏈正常資料引數級模式提取技術
圖6 基於呼叫鏈引數級模板提取的失敗原因智慧分析方法流程圖
① 資料預處理:新增父子節點ID資訊,剪枝重複日誌事件日誌(去除重試或並行機制影響),可以合併部分呼叫模式;
② 呼叫鏈聚類識別不同分支:根據呼叫鏈特徵(呼叫起始中止節點序列以及呼叫方法名稱)將呼叫鏈聚類,分成不同正常分支;
③ 提取序列與引數級模板:不同分支形成的有向圖即為服務呼叫序列模板。根據引數型別(時延、固定值、SQL語句、表格、字串)進行解析,記錄時延統計量和通過文字模式匹配等技術(Ratcliff-Obershelp 演算法提取匹配子序列)提取引數不變數的作為正常模式(全部呼叫鏈都出現即為必要模式,部分呼叫鏈出現即為可選模式);
④ 分支匹配:計算相似度,匹配經過服務節點最相似(Jaccard相似度)以及服務呼叫順序最一致(根服務節點起始的連續相同呼叫的數目)的分支模板;
⑤ 呼叫鏈模式差異對比:結構差異包括新增和缺失服務呼叫,引數差異檢查耗時過長(3-sigma) ,以及SQL結果, 響應內容等內容是否包含必要或是可選的;
⑥ 根因排序:專家規則基於相應呼叫結束時間從早到晚結合差異型別排序;學習排序模型基於測試人員反饋資料學習更加符合專家經驗的根因排序。
圖7 呼叫鏈正常資料引數級模式提取流程圖
3.4 關鍵技術2-基於多用例的多源資料關聯性挖掘技術
基於多用例的多源資料關聯性挖掘技術如下圖所示:
圖8 基於多用例的多源資料關聯性挖掘技術
3.5 關鍵技術3-基於反饋資料的排序學習模型推薦根因
排序學習是一個有監督的機器學習過程,對每一個給定的查詢-文件對,抽取特徵,通過日誌挖掘或者人工標註的方法獲得真實資料標註。然後通過排序模型,使得輸入能夠和實際的資料相似。
圖9 資料驅動的排序學習模型根因推薦
4. 小結
雲化服務如需上線則需要成功通過所有測試用例,但是目前對失敗用例的分析仍較為依賴人工,面對海量微服務與快節奏開發帶來的大量失敗用例,無法滿足快速質量反饋的需求。因此需要有基於用例執行產生的多個數據源以資料驅動的智慧化手段快速定位用例失敗的根因(定位至某個呼叫、某個資料、某個變數引數包括響應時間、某行日誌、某行程式碼、某個配置,且能進行關聯分析),做到真正幫助研發人員在開發階段快速修復問題。
【參考資料】
- Tak, B. C., Tao, S., Yang, L., Zhu, C., & Ruan, Y. (2016, April). Logan: Problem diagnosis in the cloud using log-based reference models. In 2016 IEEE International Conference on Cloud Engineering (IC2E) (pp. 62-67). IEEE.
- Gu, J., Wang, L., Yang, Y., & Li, Y. (2018, October). Kerep: Experience in extracting knowledge on distributed system behavior through request execution path. In2018 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW)(pp. 30-35). IEEE.
- Yang, Y., Wang, L., Gu, J., & Li, Y. (2020). Transparently capturing request execution path for anomaly detection. arXiv preprint arXiv:2001.07276.
- https://mp.weixin.qq.com/s/zMjTaNG0339b1qdyCYPeJQ
- Sambasivan, R. R., Zheng, A. X., De Rosa, M., Krevat, E., Whitman, S., Stroucken, M., ... & Ganger, G. R. (2011, March). Diagnosing Performance Changes by Comparing Request Flows. In NSDI (Vol. 5, pp. 1-1).
- https://github.com/logpai/logparser
- https://github.com/logpai/loghub
- Liu P , Xu H , Ouyang Q , et al. Unsupervised Detection of Microservice Trace Anomalies through Service-Level Deep Bayesian Networks[C]// 2020 IEEE 31st International Symposium on Software Reliability Engineering (ISSRE). IEEE, 2020.
- Liu P , Chen Y , Nie X , et al. FluxRank: A Widely-Deployable Framework to Automatically Localizing Root Cause Machines for Software Service Failure Mitigation[C]// 2019 IEEE 30th International Symposium on Software Reliability Engineering (ISSRE). IEEE, 2019.
- Y Meng, Zhang S , Y Sun, et al. Localizing Failure Root Causes in a Microservice through Causality Inference[C]// 2020 IEEE/ACM 28th International Symposium on Quality of Service (IWQoS). ACM, 2020.
- Chen R , Zhang S , Li D , et al. LogTransfer: Cross-System Log Anomaly Detection for Software Systems with Transfer Learning[C]// 2020 IEEE 31st International Symposium on Software Reliability Engineering (ISSRE). IEEE, 2020.