摘要:伴隨着微軟亞洲研究院數據、知識、智能組與微軟雲產品團隊的深度合作,一系列創新技術已經在 雲系統的故障預測、異常檢測、智能診斷、容量規劃、事故管理 等諸多實際應用場景中落地,相關研究成果也在  ICSE、NSDI、USENIX ATC、WWW、AAAI、ICDM  等高影響力會議中發表, 極大地提升了服務質量、用戶體驗和工業生產力。編者按: 伴隨着微軟亞洲研究院數據、知識、智能組與微軟雲產品團隊的深度合作,一系列創新技術已經在雲系統的故障預測、異常檢測、智能診斷、容量規劃、事故管理等諸多實際應用場景中落地,相關研究成果也在 ICSE、NSDI、USENIX ATC、WWW、AAAI、ICDM 等高影響力的會議中發表, 極大地提升了服務質量、用戶體驗和工業生產力。

編者按: 伴隨着微軟亞洲研究院數據、知識、智能組與微軟雲產品團隊的深度合作,一系列創新技術已經在雲系統的故障預測、異常檢測、智能診斷、容量規劃、事故管理等諸多實際應用場景中落地,相關研究成果也在 ICSE、NSDI、USENIX ATC、WWW、AAAI、ICDM 等高影響力的會議中發表, 極大地提升了服務質量、用戶體驗和工業生產力。

最近,各個行業已陸續復工,相信對諸多企業和個人來說,和這場疫情同樣猝不及防的還有生產、生活方式的改變。隨着協同合作、遠程辦公、在線教育等場景被迅速催熟,在將來複盤之時,“科技文明”一定會佔據濃墨重彩的篇幅。而在這些場景下,我們的基礎設施是否已經準備好應對未來的變革呢?

Gartner 研究副總裁 Sid Nag 認爲雲已經成爲主流策略:“下一代的產品方案,幾乎都是搭建於雲平臺上的。”2020年將有更多應用服務轉向雲端,5G 也將爲雲計算的發展帶來可預見的新高峯。但隨着越來越多的用戶上雲,系統的管理正面臨着前所未有的挑戰。海量用戶、大規模集羣、複雜的系統架構使傳統的運維方式力不從心。 如何實時檢測異常、快速響應故障、合理規劃容量等問題已成爲重要課題

在炙手可熱的人工智能領域,數據驅動、AI 賦能的微軟雲始終以理性而樂觀的姿態立足於全球雲服務市場。數據爲微軟雲的管理提供了新的維度——數據智能。伴隨着微軟亞洲研究院數據、知識、智能組與微軟雲產品團隊的深度合作,一系列創新技術已經在 雲系統的故障預測、異常檢測、智能診斷、容量規劃、事故管理 等諸多實際應用場景中落地,相關研究成果也在  ICSE、NSDI、USENIX ATC、WWW、AAAI、ICDM  等高影響力會議中發表, 極大地提升了服務質量、用戶體驗和工業生產力。本文將概述研究團隊在服務智能各個場景上的研究成果。

圖1: 智能雲服務的願景

異常檢測

爲了保證雲平臺的高可靠性和高可用性, 實時檢測可能的系統異常尤爲重要 。大規模系統的異常檢測主要通過監控平臺的各種運行狀態數據來實現,如性能指標數據(訪問成功率、響應速度、CPU 使用率、內存佔用率),系統事件,系統日誌等,從數據窺探系統的健康狀況。研究團隊在時序數據和日誌數據上進行了異常檢測的研究。

基於時序數據的異常檢測- ATAD

在基於時序數據的異常檢測中,傳統方法一般分爲基於規則的模型、無監督模型和有監督模型。 其中有監督模型因爲有標註信息的指導,可以很好地針對異常信號建模,使得誤報率大大降低,效果遠優於其它兩類方法。 然而,鑑於大規模雲系統中,各種監控信號的數據量龐大,模式漂變迅速、多樣性強等特點,構造基於標註數據的有監督異常檢測模型並非易事。 因此, 研究團隊提出了一種基於遷移學習和主動學習的跨數據集的時間序列異常檢測框架 首先,針對時間序列數據,我們提取了一系列時間順序相關的特徵以反映時間序列的特點; 而後,使用無監督領域自適應的遷移學習技術,將在源域學習到的知識遷移到目標域當中。 最終,爲了進一步彌合源域和目標域之間的差距,我們專門設計了一種基於不確定性和時間上下文多樣性的主動學習技術,推薦極少量的待標註樣本交由領域專家進行標註,從而使得模型效果獲得極大的提升。 通過實驗證明,我們的方法可以有效地在不同時間序列數據集之間進行遷移,並且只需要1%-5%的標註樣本量即可達到很高的檢測精度。 相關研究發表在系統領域頂級會議 USENIX ATC 2019 [1]。

圖2:  ATAD

基於日誌數據的異常檢測 – LogRobust

當前,Log 數據在大型軟件系統的故障診斷、問題定位、異常檢測等諸多任務中,發揮着不可替代的作用。運維人員和開發工程師通過 log 數據可以查看並理解系統的運行狀態、探測到系統出現的故障並定位其根因所在。迄今爲止,已有大量的研究工作在集中討論如何使用 log 數據進行系統的異常檢測,並取得了顯著進展。然而,在實際應用中,這些方法卻並不能很好地適應工業場景的需要,其根本原因在於大部分的同類方法均以靜態假設爲基本前提,即 log 數據是穩定的,不會隨時間變化而變化。因此,此類方法一般直接將訓練集中的 log 數據統一以事件表示建模,並直接應用到待測試的數據上。但是,研究團隊發現 log 數據在實際場景中並不穩定,log 會隨着源代碼的修改、更新、增加、刪除而持續變化;另外,在 log 數據預處理和收集的過程中,也會引入大量的不確定噪聲。因此,在固定數據上訓練得到的檢測模型,往往不能很好地在測試數據上泛化。

研究團隊提出了一種基於深度學習技術的 log 異常檢測模型,使用預訓練的詞向量在詞級別對 log 進行表示,而不是在事件級別表示,可以有效克服 log 中詞級別變動導致的不穩定問題。同時,使用 tf-idf 對不同的詞進行加權,以突出重要的單詞信息。之後,我們使用長短期記憶神經網絡( LSTM )訓練異常檢測模型,並引入注意力機制,使得模型可以更好地學習到不同 log 之間不同的重要性,以克服 log 序列級別的不穩定問題。實驗證明,LogRobust 可以比傳統方法更好地適應工業中的實際場景,在快速漂變的實際工業數據中取得了出衆的效果。 該研究發表在軟件工程領域頂級會議 FSE 2019 [2]。

圖3:LogRobust

智能診斷

當檢測出系統異常或發生故障時,快速有效的診斷是正確修復系統的第一步。各種各樣的故障狀況頻出令工程師們心力交瘁, 如何利用系統數據自動定位可能的故障原因、縮小問題空間是系統維護的重點,也是研究領域的難點

時空相關性分析

診斷的關鍵切入點是尋找相關性。在大規模的雲系統中做故障診斷面臨着巨大挑戰。故障情形多種多樣,系統結構複雜,應用服務之間相互關聯,這些使得故障原因撲朔迷離,簡單的關聯判斷在實際生產場景中容易導致歸因錯誤。爲此,研究團隊和產品部門合作,提出了時空相關性模型,通過在時間和空間的雙重維度上對比故障前後的系統狀態,爲故障診斷提供線索。該模型在安全部署這一應用場景中取得很高的準確率,相關研究發表在系統和網絡領域頂級會議 NSDI 2020 [3]。

因果相關性分析

研究團隊在大規模服務中斷的診斷上也有新的研究成果。雲平臺上同時分佈着多個服務,比如數據流、存儲流等,小的服務故障常常累積而形成大規模中斷(Outage),大大降低系統可用性並影響用戶體驗。大型系統如 Azure 包含許多子系統(即服務 ,每個子系統由許多相互關聯的組件和服務組成。每個組件或服務都有自己的監控方式,可以定期收集檢查組件的運行狀態的信號。

大部分針對大型複雜系統(如數據中心、網格系統和防禦系統 中診斷故障的方法只考慮單個系統,而忽略了可能對結果產生影響的相關係統。研究團隊提出要關注大型系統中各個組件存在的關聯性,以及關聯性對故障檢測與修復問題的幫助。針對組件和服務關聯性問題,我們藉助因果分析方法 FCI 中的條件獨立檢驗確定各個組件或服務收集的時域信號是否存在相關性。通過因果分析時域信號的關聯性,將不同層次之間的組件信號和服務信號進行關聯性構建,得到組件和服務的關聯圖,進而定位大規模中斷的可能原因。下圖展示了該服務中斷的診斷過程,模型指出數據流服務最相關的服務主要是存儲流服務和存儲故障診斷(Storage trouble guide 服務。而實踐中該大規模服務中斷確實爲存儲流服務故障導致,也驗證了模型的準確性。 相關技術作爲短文發表在計算機頂級會議 WWW 2019 [4]。

圖4:Data Stream 大規模服務中斷診斷 

故障預測

在故障發生之前,提前預測以避免可能的損失是智能服務的殺手鐧 。2018年,研究團隊發表了磁盤故障預測[5]和節點故障預測[6] 兩項研究成果,2019年在大規模服務故障預測上又有新的突破[4]。

硬盤故障預測

據統計,雲系統出現故障的主要原因之一是硬件故障,而硬盤故障是最影響用戶的硬件故障之一。在現有的硬盤故障預測的研究中,現有方法抽象爲故障與否的二分類問題,採集磁盤監控的 SMART 數據,使用分類模型(如隨機森林、SVM)做預測,並取得了相當好的實驗效果。但在實際生產環境中,這些“實驗室成果”黯然失色。首先,硬盤故障可以看作一種“灰色故障”,也就是說在硬盤徹底無法使用之前,其上層應用已經受到影響,單純依靠磁盤自身數據無法即時預測。其次,極度不平衡的正負樣本爲在線預測帶來了極大的挑戰。健康節點(磁盤)被標記爲負樣本,故障節點(磁盤)爲正樣本,在磁盤故障預測中,Azure 每日的故障磁盤與健康磁盤的比例大約3: 100,000,預測結果會傾向於把所有磁盤都預測爲健康,帶來極低的召回率。再者,在實際生產環境中,將一個健康樣本預測成故障與將故障樣本預測爲健康帶來的應對成本並不同,需要將這些成本考慮進去。

爲此,研究團隊綜合考慮硬盤 SMART 數據和系統級信號,提出了一種基於排序思想的機器學習模型。該模型已經應用在 Azure 中,相關研究發表在 USENIX ATC 2018[5].  

圖5:Azure 雲硬盤錯誤預測系統框架

大規模服務故障預測

爲了最大程度的避免大規模服務中斷 (outage) ,減少服務停機時間,確保雲服務的高可用性,研究團隊開發了一種智能的大規模中斷預警機制 AirAlert,可以在雲服務大規模中斷髮生前預測中斷的發生。AirAlert 收集整個雲系統中的所有系統監控信號(monitor signals ,檢測監控信號之間的依賴性並動態預測整個雲系統中任何地方發生的大規模中斷,使用魯棒梯度提升樹(robust gradient boosting tree 技術預測潛在的大規模中斷。研究團隊在微軟雲系統收集了超過1年的服務中斷數據,並在數據集上驗證了該方法的有效性。 

圖6: Data Stream 大規模服務中斷預測

上圖展示了一個預測大規模服務中斷的例子,從圖中可以看到,在數據流(Data stream 服務出現大規模中斷前,其相關的存儲流(Storage streaming 服務監控信號已經發生異常。該方法可以捕獲這樣的異常,並對數據流服務中斷進行預警。

容量規劃 —— 一種預測導向框架

正如物資管理之於抗擊疫情的關鍵性,有效的容量規劃是保障雲服務高可用性的重要課題 。雖然軟件系統開發通常採用明確的規則和啓發式方法,但機器學習一直在推動現代系統設計的革命。在容量規劃問題中,研究團隊提出一種新的預測導向(Prediction-guided 框架,它利用機器學習技術來支持系統本身的決策。在此設計中,系統不僅由各種類型的數據(例如系統平臺操作與事件、工作負載、用戶行爲等)自動驅動,而且帶來了“預先”的觀念。因此,一些重大問題可以在變成災難之前被阻止。 

預測導向框架具有三個關鍵詞:數據(data)、系統狀態(status)、操作(action)。機器學習模型利用數據預測未來的系統狀態,系統根據預測的狀態觸發決策,進而採取相應的操作。該框架極具擴展性,對於不同的業務場景,只需確定以下問題:

1. 預期的操作有哪些? 

2. 哪種系統狀態可以區分這些操作? 

3. 哪些數據與系統狀態有關? 

例如,容量緩衝管理(buffer management)對任何公共雲提供商都至關重要。然而,傳統方法主要是基於對集羣(cluster)中硬件/軟件故障概率的統計。無論集羣中部署的工作負載如何,對大小和屬性相似的集羣都會使用相同的策略。爲了保證所有集羣都有足夠的容量,策略必須爲最壞的情況做好準備。然而,這種管理方法會導致大量集羣保留過多的緩衝容量,導致低利用率和高銷售成本(COGS 。 

爲了解決這個問題,我們基於預測導向框架設計了一種智能緩衝區管理方法,根據不同集羣的工作負載,動態地調整預留緩衝區,來實現以足夠的緩衝區避免故障和最小化過剩容量之間的最佳平衡。該系統的核心是一個基於機器學習的預測引擎,它監控集羣已經部署的工作負載和平臺事件(數據 ,預測這些部署在未來將導致多少容量增長需求(狀態 。接納控制器將預測的需求增長作爲輸入,並對是否允許新部署虛擬機放置到集羣中做出二元決策(操作 。具體而言,在預測需求較高的集羣中,接納控制器會更早地拒絕新的虛擬機部署,從而保證更多容量被預留用於集羣中現有客戶的增長。在預測需求較低的集羣中,接納控制器會允許新的工作負載進入集羣。該系統已集成到微軟 Azure 雲平臺中,不僅顯著提高了容量配置的可靠性,還爲公司減少了大量的成本支出。 相關成果即將發表在 AAAI 2020 Workshop [7] 。

事故管理

在線服務系統運行期間,意料外的服務中斷或降級(稱爲故障 Incident) 是很難避免的,這些故障可能會造成重大的經濟損失和客戶滿意度下降。 在故障管理中,首先需要將故障報告分配給合適的團隊,使受影響的服務得到快速恢復。 我們將此步驟稱爲故障分派(Incident Triage),這一環節顯著影響故障解決的效率。 

圖7:事故管理

爲了更好地瞭解業界對故障分派的嘗試和實踐,研究團隊基於微軟20個大型在線服務系統展開實例研究,發現故障分派不正確的情況時有發生,這導致了大量不必要的成本,特別是嚴重程度較高的故障。例如,我們發現針對不同的在線服務,其中4.11%至91.58%的故障報告經過了多次分配,由於錯誤分配而導致的時間開銷是正確分配的10倍左右 [8]。 

由於故障分派與軟件錯誤分派(自動將軟件 bug 報告分配給軟件開發人員)有一定相似性,所以我們將典型的錯誤分派技術應用到在線服務故障分派中。結果表明,這些錯誤分派技術在一定程度上能夠正確地將事件報告分配給對應的團隊,但仍需進一步改進。 

圖8:DeepCT

在實例研究中我們還發現,故障分派不是一個單次事件,而是一個連續的過程,在這個過程中,不同團隊的工程師不斷進行深入的討論,完善對故障的理解,直到將故障分配給正確的團隊。基於這種觀察,我們提出一種基於深度學習的自動化連續故障分派算法 DeepCT 。DeepCT 結合了一個新的基於 attention 的屏蔽策略、門控循環單元模型(GRU)和改進版的損失函數,可以從工程師對問題的討論中逐步積累知識並更新分派結果。 DeepCT 可以通過少量的討論數據來實現正確的故障分派。我們對 DeepCT 進行了廣泛而深入的評估,結果顯示 DeepCT 能夠實現更準確、更高效的故障分派,故障分派的平均準確度可以提高到0.729(在考慮5條討論數據的前提下)。DeepCT 的算法細節發表在 ASE 2019 [9]。

日誌分析

打日誌是記錄系統運行相關信息的關鍵方法,日誌數據是檢測和診斷系統問題的重要資源。由於系統規模大、複雜性高,微軟的一個服務系統每天會產生 TB 級別的日誌數據,一旦出現問題,傳統的關鍵詞檢索方式相當低效。日誌數據的類型多樣性和半結構化特點也給分析帶來了挑戰。研究團隊一直活躍在大規模日誌研究的前沿, 在日誌收集、日誌處理、日誌分析方面均有豐富的研究成果,如低成本高效率的日誌記錄方法[11],基於日誌聚類的系統異常識別[12],日誌與其他監控數據的關聯性分析[13],日誌的上下文分析及程序執行流程抽取[14] 等,研究細節請參考論文。

自動特徵工程

在解決雲系統實際問題的同時,我們的研究也推動了人工智能領域的發展。在雲系統場景下的機器學習任務中,特徵工程是模型有效性的關鍵,也是開發有效機器學習模型的核心步驟。傳統上,特徵工程是手動執行的,這不僅需要實踐者擁有大量領域知識,而且非常耗時。最近,學術界提出了許多自動特徵工程(Automated Feature Engineering)方法。這些方法通過將原始特徵自動轉換爲一組新特徵來提升機器學習模型的性能。在實踐中,自動特徵工程是對自動機器學習(Automated Machine Learning)的補充。然而,現有的自動特徵工程方法存在特徵空間爆炸的問題,這使得其實際性能停滯不前。爲了應對這一技術挑戰,我們提出了神經特徵搜索(Neural Feature Search,NFS),一種基於新型神經架構的自動特徵工程方法。NFS 利用基於遞歸神經網絡的控制器,通過最有潛力的變換規則(Transformation Rule)來變換每個原始特徵。該控制器通過強化學習進行訓練,以最大化機器學習模型的預期性能。實驗表明,在大量公共數據集上,NFS 優於現有的最先進的自動特徵工程方法。NFS 已在 ICDM 2019 發表[10],在自動特徵工程研究領域確立了新的技術水平。

圖9:NSF

總結和展望

在服務智能領域,複雜的系統和紛繁的應用場景帶來了錯綜複雜的研究問題,而這種複雜性也正是它吸引研究者和工程師的地方。未來,微軟亞洲研究院數據、知識、智能組將繼續保持對問題的好奇、對數據的敏感和對技術創新的熱忱,與大家分享在該領域中的全新突破。

參考文獻

[1] Cross-dataset Time Series Anomaly Detection for Cloud Systems

https://www.microsoft.com/en-us/research/publication/cross-dataset-time-series-anomaly-detection-for-cloud-systems/

[2] Robust Log-based Anomaly Detection on Unstable Log Data

https://www.microsoft.com/en-us/research/publication/robust-log-based-anomaly-detection-on-unstable-log-data/

[3] An Intelligent, End-To-End Analytics Service for Safe Deployment in Large-Scale Cloud Infrastructure

https://www.microsoft.com/en-us/research/publication/an-intelligent-end-to-end-analytics-service-for-safe-deployment-in-large-scale-cloud-infrastructure/

[4] Outage Prediction and Diagnosis for Cloud Service Systems

https://www.microsoft.com/en-us/research/publication/outage-prediction-and-diagnosis-for-cloud-service-systems/

[5] Improving Service Availability of Cloud Systems by Predicting Disk Error

https://www.microsoft.com/en-us/research/publication/improving-service-availability-cloud-systems-predicting-disk-error/

[6] Predicting Node Failure in Cloud Service Systems

https://www.microsoft.com/en-us/research/publication/predicting-node-failure-in-cloud-service-systems/

[7] Prediction-Guided Design for Software Systems

https://www.microsoft.com/en-us/research/publication/prediction-guided-design-for-software-systems/

[8] https://www.microsoft.com/en-us/research/publication/an-empirical-investigation-of-incident-triage-for-online-service-systems/

https://www.microsoft.com/en-us/research/publication/an-empirical-investigation-of-incident-triage-for-online-service-systems/

[9] Continuous Incident Triage for Large-Scale Online Service Systems

https://www.microsoft.com/en-us/research/publication/continuous-incident-triage-for-large-scale-online-service-systems/

[10] Neural Feature Search: A Neural Architecture for Automated Feature Engineering

https://www.microsoft.com/en-us/research/publication/neural-feature-search-a-neural-architecture-for-automated-feature-engineering/

[11] Log2: A Cost-Aware Logging Mechanism for Performance Diagnosis

https://www.microsoft.com/en-us/research/publication/log2-cost-aware-logging-mechanism-performance-diagnosis-2/

[12] Log Clustering based Problem Identification for Online Service Systems

https://www.microsoft.com/en-us/research/publication/log-clustering-based-problem-identification-online-service-systems-2/

[13] Identifying Impactful Service System Problems via Log Analysis    

https://www.microsoft.com/en-us/research/publication/identifying-impactful-service-system-problems-via-log-analysis/

[14]  Contextual Analysis of Program Logs for Understanding System Behaviors    

https://www.microsoft.com/en-us/research/publication/contextual-analysis-program-logs-understanding-system-behaviors-2-2/

你也許還想看

相關文章