盧皓川 鄭吳杰 周揚帆 王 新
1(復旦大學計算機科學技術(shù)學院 上海 200433) 2(上海市智能信息處理重點實驗室 上海 200433)3(深圳市騰訊計算機系統(tǒng)有限公司 廣東 深圳 518000)
大型在線服務系統(tǒng)在當今互聯(lián)網(wǎng)時代已廣泛普及,許多公司、企業(yè)均上線了大量服務于生活方方面面的大型在線系統(tǒng)(如支付寶等)[1]。這些系統(tǒng)依托于龐大的后臺大型業(yè)務系統(tǒng)來實現(xiàn)服務功能,并利用前臺復雜精巧的客戶端來為用戶實現(xiàn)對服務的接入。然而,由于系統(tǒng)的前后臺都具有很高的復雜性,并且需要頻繁的快速迭代開發(fā),系統(tǒng)往往會出現(xiàn)多種類型的故障,而這些故障會引發(fā)不良的用戶體驗,降低系統(tǒng)的可靠性[2]。因此,如何檢測系統(tǒng)中的故障是一個重要的任務。
傳統(tǒng)上,為了更好地反映系統(tǒng)中存在的故障以幫助檢測,許多研究及工業(yè)界方法均采用后臺指標監(jiān)控的方式。這一方法通過根據(jù)以往運維經(jīng)驗預設一些與系統(tǒng)后臺相關的關鍵運行指標[3-4](如后臺CPU工作負荷[5]),來反映系統(tǒng)后臺的運行狀態(tài),從而通過異常指標表征其中存在的故障。然而,在實踐中我們發(fā)現(xiàn),系統(tǒng)的故障不僅存在于后臺業(yè)務系統(tǒng)中,同樣也會廣泛地存在于前臺界面中,這些前臺故障同樣會對用戶使用體驗帶來嚴重的影響[6]。例如,前臺界面控件(如按鈕等)異常遮擋的故障將導致用戶無法正常進行相關操作;又如前臺界面中的內(nèi)容錯誤(如亂碼),會對用戶使用產(chǎn)生困擾和誤導。面對此類故障,上述基于系統(tǒng)后臺的指標監(jiān)控方法難以奏效,因為后臺相關運行指標難以反映前臺中的故障癥狀。更進一步地,由于前臺故障的類型與癥狀更為繁多且不可預知,若采用類似方法在前臺通過經(jīng)驗人為預設一些指標進行監(jiān)控,則難以達到良好的覆蓋面,許多未被事先考慮、甚至是新出現(xiàn)的前臺故障難以被預設的指標所表征。因此綜上,這類前臺故障尚需有效的方法對其進行合理的監(jiān)控與檢測。
為了解決面對前臺故障時后臺預設指標效力不足的問題,我們認為隨著故障發(fā)生而動態(tài)地構(gòu)建指標是一個良好的方式。我們發(fā)現(xiàn),前臺故障更直接面向用戶。由于用戶為系統(tǒng)前臺最直接的使用者,他們會對其中產(chǎn)生的故障有及時的感知,因此我們將問題轉(zhuǎn)化為從用戶的角度進行針對于前臺故障的動態(tài)的指標構(gòu)建。為了避免直接使用收集用戶數(shù)據(jù)可能造成的隱私問題,我們采用用戶反饋數(shù)據(jù)來構(gòu)建動態(tài)指標。我們發(fā)現(xiàn)用戶往往會對所遭遇的故障實時地提出大量的反饋(通過客戶端接口、客服、官方論壇等方式),這樣的反饋主要為文本形式,其中會包含對于故障癥狀的具體描述。因此我們可以通過設計合理的自然語言處理方法從中抽取出能夠表征前臺故障的指標,以便進行對前臺故障的監(jiān)控。由于這種指標構(gòu)建方式可以隨著不同出現(xiàn)的故障所對應的反饋文本進行實時抽取,因此實現(xiàn)了動態(tài)構(gòu)建,以及對不同故障的高覆蓋率表征。
進一步地,通過基于用戶反饋文本的動態(tài)的指標構(gòu)建我們將獲得海量的針對于前臺故障的指標。由于故障檢測的時效性十分重要,因此在海量指標上實現(xiàn)快速的異常檢測也是一大關鍵要求。本文基于從反饋文本中構(gòu)建的指標,設計了一種兩階段的檢測算法。該方法通過一個基于規(guī)則的快速過濾粗篩,以及一個基于機器學習分類模型的精細檢測,來做到準確、快速地對海量動態(tài)指標的實時監(jiān)控,從而實現(xiàn)對前臺故障及時的檢測。
本文所提出的基于用戶反饋的動態(tài)指標構(gòu)建方法以及異常檢測方法,被實際應用于多個真實的在線服務系統(tǒng)中,協(xié)助進行更全面的前臺故障檢測。我們通過在實踐中收集的數(shù)據(jù)來反映該方法效益,實踐結(jié)果證明提出的方法可以達到針對前臺故障良好的檢測效果。
本文所提出的具體貢獻總結(jié)如下:
(1) 為應對檢測系統(tǒng)前臺故障時傳統(tǒng)指標監(jiān)控方法的局限性,我們提出了動態(tài)構(gòu)建指標的新方案,并開創(chuàng)性地使用了利用用戶反饋數(shù)據(jù)來進行指標構(gòu)建。該方法所構(gòu)建的指標可以針對于前臺故障實現(xiàn)更大的覆蓋面,從而更全面地表征前臺出現(xiàn)的各種類型故障。
(2) 為在動態(tài)構(gòu)建的海量指標上實現(xiàn)快速檢測,我們進一步提出了一種兩階段的異常檢測算法,該方法通過快速過濾與機器學習的結(jié)合,實現(xiàn)在海量動態(tài)指標上的實時異常檢測,保障了故障檢測的時效性。
(3) 將該方案制作成工具以實際服務于真實大型在線系統(tǒng)。在多個真實系統(tǒng)上部署了我們提供的技術(shù)方案用于前臺故障實時檢測,實踐證明該方法可以取得良好的效果。
近年來,許多大型的服務運營商均上線了大量大型在線服務系統(tǒng)開放給公眾使用。這些系統(tǒng)均為前后臺分離的架構(gòu)[7],一方面,龐大的后臺系統(tǒng)為其業(yè)務功能提供支持,通常以上百臺云服務器的超大規(guī)模的方式進行部署。另一方面,前臺客戶端為用戶提供了服務接入的入口,通常安裝于不同類型的終端上。由于部署前臺的終端環(huán)境十分復雜且不可預知,可能產(chǎn)生不同的兼容性問題,因此系統(tǒng)前臺常常產(chǎn)生前臺故障[6]。這類前臺故障種類和癥狀十分多樣,如亂碼、界面控件錯亂遮擋或是部分控件無法顯示和響應等等。圖1給出了一個應用前臺故障的樣例,其按鈕控件被錯誤的遮擋,且界面上出現(xiàn)了亂碼。此類故障由于對系統(tǒng)后臺不產(chǎn)生明顯影響,因此很難由傳統(tǒng)后臺指標監(jiān)控的方法監(jiān)控到。即使有針對于前臺預設的指標,也難以良好地覆蓋和表征各種類型的前臺故障。然而,前臺故障在同樣系統(tǒng)用戶側(cè)均會造成較大的影響(如界面無法響應等),從而嚴重降低系統(tǒng)可靠性,影響用戶體驗,因此它們是一類無法忽略并且十分重要的故障問題。所以亟需一個更全面、有效的故障檢測方案來應對更多類型的故障。
圖1 大型在線服務系統(tǒng)前臺故障樣例
大型線上系統(tǒng)通常具有海量用戶。部分應用的日活躍用戶數(shù)量可達上億級別。由于用戶是前臺系統(tǒng)的直接使用者,會對各種前臺故障產(chǎn)生及時的感知,而這樣的故障也會在用戶群體中引起比較強烈的反響。用戶反饋就是反響的一種主要形式。當用戶在使用過程中發(fā)生不良體驗時,用戶就會試圖通過多種渠道來進行對這些不良體驗所對應的故障的反饋。這些渠道包括服務客戶端中自帶的反饋接口,或是系統(tǒng)官方論壇等等。由于巨大的用戶量,系統(tǒng)運營商每天可以收集到大量的用戶反饋,數(shù)量達到百萬級別。這些用戶反饋都是以自然語言的文本為主,內(nèi)容包含了各種各樣對于系統(tǒng)故障的描述。表1是一些用戶反饋的示例。
表1 用戶反饋示例
系統(tǒng)故障檢測是維護大型系統(tǒng)可靠性中的一個重要任務,引起了許多學術(shù)界和工業(yè)界的研究。對于后臺故障,已有許多研究利用系統(tǒng)后臺預設的關鍵運行指標來進行故障檢測。例如,Laptev等[8]提出了EGADS系統(tǒng),利用后臺指標的時序信息通過多種異常檢測及趨勢預測模型組合來檢測指標異常。Liu等[9]提出了Opprentice系統(tǒng),其面向于某一個時間窗口內(nèi)的后臺指標采用了機器學習的分類技術(shù)檢測異常。然而,利用預設的后臺指標無法有效表征和定位前臺故障。前臺故障由于癥狀繁多且復雜,目前研究方法僅針對了其中部分故障類型提出了解決方案,如Wang等[10]提出利用卷積神經(jīng)網(wǎng)絡技術(shù)識別前臺界面中產(chǎn)生的文字堆疊故障。而本文利用用戶反饋進行的動態(tài)指標構(gòu)建與監(jiān)控方案,不僅可以有效應對前臺故障,更可以實現(xiàn)各種故障類型的全面覆蓋。
用戶反饋數(shù)據(jù)在過去的研究中也體現(xiàn)出了對于推動軟件的開發(fā)、迭代和維護的重要價值。例如,Di Sorbo等[12]提出利用主題模型總結(jié)用戶反饋中的關鍵用戶需求來輔助軟件迭代。Vu等[13]提出基于短語的聚類機制來分析App市場中的用戶評價,從而分析App的優(yōu)缺點。Gao等[14]提出了IDEA工具,同樣利用主題模型分析歷史上所有的用戶反饋,從中發(fā)現(xiàn)與系統(tǒng)故障相關的主題內(nèi)容。然而,以上方法只可將歷史上的用戶反饋視為一個靜態(tài)的數(shù)據(jù)進行分析,無法做到基于用戶反饋進行動態(tài)的故障檢測。同時,以上方法都需要基于復雜的自然語言模型算法,其面對海量反饋文本的時候難以快速地得到分析結(jié)果。因此,這些工作無法有效勝任實時的系統(tǒng)故障檢測任務。
本文所提出的基于用戶反饋進行前臺故障檢測的技術(shù)方案整體流程架構(gòu)如圖2所示??梢钥吹?,該方案主要分為兩個部分:(1) 前臺系統(tǒng)關鍵指標構(gòu)建階段以及(2) 指標異常分析檢測階段。
(1) 前臺系統(tǒng)關鍵指標構(gòu)建階段 (2) 指標異常分析檢測階段圖2 基于用戶反饋的前臺故障檢測方案整體流程架構(gòu)
在第一部分中,我們先通過對反饋文本進行詞語抽取,來形成監(jiān)控指標的定義;并進一步對這些指標的監(jiān)控值進行量化和收集,從而構(gòu)建出海量針對前臺故障的監(jiān)控指標。通過反饋文本抽取的指標定義實現(xiàn)了對不同故障癥狀的覆蓋,而對監(jiān)控值的收集可以形成指標趨勢從而進行異常檢測。
在第二部分中,我們提出了兩階段的異常檢測算法來對前一部分中構(gòu)建的海量指標進行檢測。首先我們通過一個基于規(guī)則的快速過濾,找到具有潛在異常風險的部分指標;進而再對這些指標進行基于機器學習的精細檢測,從而精確找到其中包含異常的指標。在第一階段中我們快速過濾掉了絕大部分不包含異常的指標,極大地減少了第二階段精細檢測的工作量,從而實現(xiàn)了快速、實時的故障檢測。
兩部分設計中涉及到的關鍵技術(shù)點為:文本指標抽取及量化和兩階段異常檢測算法。
(1) 指標內(nèi)涵定義。我們通過對用戶反饋文本進行處理來構(gòu)建指標的定義。圖3展示了這一文本處理過程。首先,通過jieba分詞技術(shù)[15]對文本進行分詞處理。進一步地,通過構(gòu)建常用的停用詞表,過濾掉部分無關的停用詞。這一步操作使得我們可以分離出反饋中與故障描述相關的元素。接下來,將分離出的詞語進行兩兩組合,將每一對組合作為一個指標的定義。我們將通過這一構(gòu)建方法得到的指標稱為“詞語組合指標”。
圖3 文本處理構(gòu)建指標內(nèi)涵定義過程
構(gòu)建詞語組合指標有以下幾個方面的優(yōu)點:首先,詞語組合可以提供更多的語義描述信息,例如,“[圖片,加載]”這樣的指標可以表征前臺在圖片顯示方面的故障;“[按鈕,覆蓋]”這樣的指標可以體現(xiàn)前臺界面上出現(xiàn)控件重疊的故障。也正是由于用戶反饋往往是以短句、短文本的形式呈現(xiàn)的,采用其中詞語組合即可對句子的核心語義有比較好的表征。因此,詞語組合指標這種構(gòu)建方式在語義保留方面是有優(yōu)勢的。
其次,詞語組合指標的設計同樣實現(xiàn)了對多種故障類型的大范圍覆蓋。通過兩兩詞語組合,我們能迅速構(gòu)建出極其海量的指標(可達到十億級別)。我們可以在其中找到關于各種類型、癥狀的故障進行表征的指標,并且可以做到非常細的覆蓋粒度。相比于基于主題模型的直接主題聚類的方法,利用這種海量、細粒度的指標進行基于指標的異常檢測分析可以更有效地精確區(qū)分相似但不同的故障。
最后,構(gòu)建詞語組合指標比使用復雜的自然語言處理算法模型更加高效。由于該構(gòu)建方法僅需要簡單的詞語切分和詞語組合過程,因此可以在非常短的時間內(nèi)完成對海量反饋文本的處理。而形成的海量指標可以利用底層數(shù)據(jù)庫系統(tǒng)加以維護,從而實現(xiàn)良好的存儲和管理。而復雜自然語言處理模型則對于單個文本需要很長的處理時間,無法實時在海量反饋文本中完成分析。
(2) 指標量化。當通過詞語組合完成指標的定義后,我們進一步收集與指標相關的數(shù)據(jù),從而量化指標用于監(jiān)控的數(shù)值。我們使用每個指標中詞語組合在每小時內(nèi)所有反饋文本中的出現(xiàn)頻數(shù)作為其指標監(jiān)控值。例如,“[菜單,遮擋]”這一詞語組合在某日18:00至19:00這1小時內(nèi)所有反饋文本中出現(xiàn)5次,則其這1小時的指標監(jiān)控值即為5。值得注意的是,這樣的指標監(jiān)控值統(tǒng)計起來是非常迅速的,只需在對每個文本分詞并構(gòu)建詞語組合指標的同時,在數(shù)據(jù)庫中查詢,若已存在該指標的索引,則在該指標的在當前時間戳下對其頻數(shù)進行累加統(tǒng)計,若沒有這一指標索引,則新建這一指標索引,并且初始化其當前時間的指標值為1,作為后續(xù)累加的基礎。這樣一來,隨著時間的進行,詞語組合指標在每小時的監(jiān)控值會形成一個時間序列趨勢,我們將它稱為“歷史頻數(shù)趨勢”。圖4給出了一個歷史頻數(shù)趨勢的樣例。
圖4 指標對應歷史頻數(shù)趨勢樣例
從上述的定義可以看出,每一個詞語組合指標都將對應著一個專屬于它的歷史頻數(shù)趨勢。每一個指標的趨勢曲線都可以體現(xiàn)出其對應詞語組合在某個時間區(qū)間內(nèi)的出現(xiàn)次數(shù)的頻數(shù)變化。我們進而就可以根據(jù)這樣的趨勢曲線分析出其中異常的變化趨勢,從而發(fā)現(xiàn)其對應詞語描述的嚴重系統(tǒng)故障。
(1) 快速規(guī)則過濾。由于基于詞語組合生成的指標數(shù)量龐大,可達上千萬級別,直接對每個指標都進行復雜的機器學習異常檢測所需要的開銷是無法承受的。因此,我們首先設計了一個快速過濾機制,利用規(guī)則對指標進行篩選,選擇出少部分具有潛在異常風險的指標。通過這一方式,我們大大地減少了后續(xù)機器學習精確檢測的處理量,為實現(xiàn)實時異常檢測奠定了基礎。
這一過濾方式所基于的規(guī)則介紹如下:對于一個詞語組合指標I及其對應的歷史頻數(shù)趨勢HI,在t時刻時,我們設計邏輯函數(shù)Rem(I,t)來決定當前時刻這一指標是否被留下,即篩選為潛在異常風險的指標。這一函數(shù)的定義如下:
(1)
由式(1)可見,當兩方面條件同時被滿足時,這一指標將被留下作為具有隱含故障可能性的候選指標,以待后續(xù)更精確的檢測判斷。若任意一個條件不滿足,該指標將被視為正常而過濾。該過濾策略具有較好的可控性和合理性。
這樣的過濾對于后續(xù)異常檢測工作量的減少是十分有效的。一方面,這一過濾手段僅僅基于直接的數(shù)值計算和比較,可以通過底層簡單的數(shù)據(jù)庫查詢實現(xiàn)。另一方面,根據(jù)統(tǒng)計顯示,在一周的利用反饋數(shù)據(jù)做異常檢驗的過程中共能產(chǎn)生千萬級別的詞語組合指標,而經(jīng)過這一階段的過濾后,僅留下了數(shù)萬個具有潛在風險的詞語組合指標以供后續(xù)分析。因而這一過濾階段減少了超過99.9%的工作開銷,成為實現(xiàn)檢測實時性的關鍵。
(2) 機器學習檢測。通過上一過濾步驟獲得了少量具有潛在風險的指標,我們進一步利用精細的機器學習算法對其中真正具有異常的指標進行檢測。首先對這些指標進行了特征抽取。特征包含兩個方面,一是時間趨勢特征,我們將這些指標的過去7天及過去24小時內(nèi)的趨勢監(jiān)控值進行了提取,并計算平均數(shù)、方差等統(tǒng)計值,作為不同的特征維度。另一方面的特征為文本特征,我們利用詞袋模型的Jaccard距離計算了當前這一小時內(nèi)與該指標詞語組合相關的反饋文本的文本多樣性,并將這一值作為特征之一。我們認為當出現(xiàn)故障時,用戶的反饋會集中在這一故障的描述上,因此會有較低的文本多樣性。綜合這兩方面的特征,構(gòu)建出了對于每個指標的特征向量。
進一步利用XGBoost模型[16]來對這些特征向量進行分類,來識別每一個指標是否屬于異常。我們事先通過部分人工標注了千余條數(shù)據(jù)來進行訓練,來獲得具備識別功能的模型。這一標注過程引入了專家經(jīng)驗來指導模型識別,使得這一檢測過程更為精確。
通過以上方式,我們利用機器學習算法精確識別出了存在異常的指標,而這些指標對應著系統(tǒng)存在的故障??梢詫⑦@些異常指標根據(jù)指標詞語之間的相似性進行歸類,從而具體匯總出其中的故障。這樣,該方案就完成了利用用戶反饋對前臺故障進行實時檢測的過程。
本文提出的基于用戶反饋的前臺故障檢測方法被真實地應用在多個大型線上服務系統(tǒng)中進行輔助性故障檢測,這些系統(tǒng)包括某社交媒體應用、某企業(yè)辦公應用、某游戲運營平臺、某日常娛樂類應用、某資訊類應用等。這些線上服務系統(tǒng)均在各大終端平臺上有不同的前臺客戶端,并時常有頻繁的更新和迭代,因此,這些在線服務系統(tǒng)對于前臺故障的監(jiān)控有著明顯的需求。
另一方面,由于這些系統(tǒng)均擁有大量的用戶群體,這些用戶每日可以提供大量的用戶反饋數(shù)據(jù)來作為分析的數(shù)據(jù)源。根據(jù)統(tǒng)計,這些服務每日收集到的反饋量可以達到兩百萬條,其歷史反饋數(shù)據(jù)總量已達到上百GB。這樣豐富的反饋數(shù)據(jù)為本文提出方法的有效使用提供了有利條件。
作為一個檢測前臺故障的技術(shù)方案,本實驗的主要目的為檢測其檢測故障的準確率、以及對嚴重故障的召回率。此外,我們還對比了該方案與傳統(tǒng)上已人工方式檢測前臺故障之間的效果差異,從而體現(xiàn)該方案的效能。
準確率是考察該方法檢測出的所有故障中,對應著真實出現(xiàn)的故障的比例。檢測準確率體現(xiàn)了一個故障檢測方案是否可以精確地對真實故障進行報警,避免誤報的產(chǎn)生。
為了驗證準確率,我們對于檢測出的故障進行了人工審查,從而確認檢測到的故障中正確發(fā)現(xiàn)故障的數(shù)量以及誤報故障的數(shù)量。我們從兩個維度進行了實驗來評估本文方案檢測故障的準確率。一方面,以不同的服務系統(tǒng)為維度,研究在多種服務應用中,該方案進行故障檢測的準確性表現(xiàn)。這一維度主要驗證該方案在不同的服務系統(tǒng)場景下,是否均具有良好的通用表現(xiàn)。我們采用了前文所述部署該方案的五個服務系統(tǒng)(即社交媒體應用、企業(yè)辦公應用、游戲運營平臺、日常娛樂應用、資訊應用)為實驗對象,統(tǒng)計了這些應用在一個月內(nèi)各自被檢測出的所有前臺故障數(shù)量,并通過人工標注獲得正確對應真實故障的檢測數(shù)量,進而計算出準確率。實驗結(jié)果數(shù)據(jù)如表2所示。
表2 不同應用系統(tǒng)中故障檢測準確率
可以看到,該故障檢測方案在不同應用上總體可以達到比較良好的檢測準確率,均達到70%及以上水平,在某些應用中甚至可以達到90%以上或更高。注意這一檢測是從上百萬用戶反饋中進行的有效篩選而得出的數(shù)十個乃至數(shù)個故障檢測,因此這樣的準確率已經(jīng)可以達到滿意的水平,開發(fā)者可以以此檢測結(jié)果為依據(jù)在一個很小的范圍內(nèi)精確、高概率地定位真實故障。
另一方面,我們以時間為維度,研究該方案在一個較長的時間過程中是否能持續(xù)保持良好的檢測準確性。我們收集了在五個月內(nèi)在上述應用中的故障檢測情況及其人工審查結(jié)果,并統(tǒng)計其準確率,結(jié)果如表3所示。
表3 不同時間內(nèi)故障檢測準確率
可以看出,該方案在幾個月內(nèi)的綜合準確率表現(xiàn)相當穩(wěn)定,準確率均能保持在70%左右的水平。這體現(xiàn)了該方案可以應對不同時期出現(xiàn)的不同反饋描述內(nèi)容,在長期運維任務中也能做到良好的表現(xiàn)。
綜上所述,在本文提出的基于用戶反饋進行前臺故障檢測的方案在檢測準確率方面具備良好的效果。
召回率考察的是系統(tǒng)出現(xiàn)的所有故障中,被該故障檢測方案檢測到的故障數(shù)量。召回率體現(xiàn)了故障檢測是否可以將各種出現(xiàn)的故障均覆蓋到,避免漏報。
在這些服務系統(tǒng)中,有專門通過人工測試的方法前臺故障進行的收集。這些故障都是真實存在且經(jīng)過審核的。我們以這些故障為基礎,來考察本文提出的檢測方法是否能夠高覆蓋率地檢測到這些故障。表4展示了一周以內(nèi)所有人工驗證到的故障數(shù)量及其被該方案檢測到的數(shù)量和比例。
表4 人工驗證故障的召回率
可以看到,本文方案這批故障有著非常高的召回率(>90%),并且僅有非常少的故障被遺漏。這體現(xiàn)了該方案對于故障良好的覆蓋面,具有良好的召回表現(xiàn)。更進一步地,隨著數(shù)據(jù)的積累,我們事后可以使用更多的標注數(shù)據(jù)進一步訓練異常檢測模型,使得模型的檢測能力更強。被遺漏的故障也都在模型進一步訓練后可以被檢測出。因此,本文提出的基于用戶反饋的故障檢測方案可以實現(xiàn)全面、高覆蓋的前臺故障檢測。
為了更好地體現(xiàn)本文提出檢測方案的效益,我們進一步將對比了本文提出的檢測方案與前文提到的人力測試檢測發(fā)現(xiàn)前臺故障的能力。由于前臺故障種類繁多且不可預知,在以往的運維方式中人力檢測是一個尚能奏效的傳統(tǒng)方法。而由于本文提出的方案具有不同的檢測方式,使得它具有更全面的對故障的覆蓋能力,同時它可以自動化執(zhí)行檢測流程,也比人力檢測更為高效。因此,該方案可以發(fā)現(xiàn)很多傳統(tǒng)人力前臺故障檢測中難以發(fā)現(xiàn)的故障。圖5展示了一組數(shù)據(jù),展示了在該方案一個月檢測出的故障中,未被傳統(tǒng)人力方法檢測出,以及比傳統(tǒng)人力方法更快檢測出的占比。
圖5 基于用戶反饋檢測故障與傳統(tǒng)人力檢測對比情況
從這組數(shù)據(jù)中可以發(fā)現(xiàn),在所有被本文提出方案檢測到的故障中,有超過四分之一是沒有被傳統(tǒng)人力檢測發(fā)現(xiàn)的故障,這體現(xiàn)了該方案發(fā)現(xiàn)并覆蓋多種類型前臺故障顯著的效果,對于更全面的故障檢測具有明顯價值。更進一步地,在其他可以同時由本文提出方案與傳統(tǒng)人力檢測到的故障中,有接近一半的故障是由該方案更快檢測出的,說明該方案檢測前臺故障方面具有良好的實時性與時效性,可以獲得更好檢測效果。
大型線上服務系統(tǒng)中頻繁出現(xiàn)前臺故障問題。此類故障區(qū)別于后臺故障,其種類繁多、癥狀復雜且不可預知,因此無法通過傳統(tǒng)的預設后臺指標監(jiān)控來檢測出。本文提出了基于用戶反饋文本動態(tài)構(gòu)建指標的方式,巧妙地將無法有效檢測前臺故障從用戶體驗反饋中挖掘出來。本文提出了利用抽取反饋文本中詞語組合構(gòu)建動態(tài)指標的設計,這種動態(tài)指標實現(xiàn)了對各種故障類型的描述和覆蓋。進一步地,本文針對于構(gòu)建的海量指標設計了特制的兩階段檢測算法,實現(xiàn)對指標中存在的異常進行快速的檢測,并通過異常指標表征了存在的前臺故障。這一整體方案可以良好地檢測多種類型的前臺故障,其被實際應用于多個真實的在線服務系統(tǒng)中,并獲得了實時、有效的故障檢測效果。該方法為實際系統(tǒng)中的故障檢測提供了新的思路和方案,作出了創(chuàng)新性貢獻。