智能運維繫列(十二)| 智能運維的四大挑戰和應對之道

智能運維繫列專題已經進入尾聲,已經發表的文章從管理和技術上全面解釋了微衆是如何建設智能根因分析系統的。這篇文章主要闡述作者團隊的一些思考。

前文回顧

專題 | 智能時代下的運維

微衆銀行的RCA項目組成立了一年多,一直圍繞着異常識別及根因定位開展工作,並以異常識別準確率和根因定位準確率作爲最重要的衡量指標。經過這一年多的努力,異常識別準確率從最初每個月的30%左右到後來基本穩定在95%以上,根因定位準確率從50%左右到維持在85%左右,目前兩大指標仍在持續優化中,具體情況如下圖:

圖1 異常識別準確率和根因定位準確率月度趨勢

作爲經歷了整個RCA項目從0進化到當前狀態的一份子,在本文中我主要爲大家介紹我們所面臨過或正在面臨着的四大挑戰,同時也會分享一些我們的解決辦法及經驗,希望對大家有幫助。

挑戰1. 及時性和準確率,如何平衡?

金融行業對應用系統運行的穩定性要求很高,關鍵交易要做到無損服務,那麼如何及時的識別問題並通知責任方就非常重要。但如果異常識別算法過於敏感,將會產生很多誤告從而對運維同學造成騷擾,“寬鬆了容易漏告,嚴格了又會造成騷擾”。經過對一段時間的實際案例的分析判斷,我們使用了“算法+經驗/規則”結合的方式來維持誤告與漏告的平衡。另外,判斷誤告漏告的標準要儘量做統一、清晰,這樣算法在演進的過程中才能不斷進步,防止前後矛盾。

當算法識別到一個指標異常時,系統會及時通知業務運維的同學,隨着時間的推移,有可能發現更多指標曲線出現異常,不同的異常指標的曲線反應了不同的影響範圍。一個檢測週期內(一般是1分鐘)如果識別到了異常,我們先發出異常預警,同時輪詢根因定位結果,當異常指標發生變化後,再次啓動新的根因分析,如此往復,一旦根因有結果了取最新的結果推送根因,爲運維人員提供定位方向。從而在及時性和準確性之間找到一個平衡,具體流程見圖2。由於目前整個根因分析過程在2分鐘之內完成,結果也相對穩定,故我們目前只在圖2中的1、3進行推送,避免短時間內多次推送消息造成騷擾。

圖2 異常推送策略

挑戰2. 算法和經驗/規則,哪個更有效?

RCA是一個AI算法工程化的項目,開始時我們更傾向於使用算法來實現所需功能,但算法的調參過程週期比較長,對於一些根據專家經驗較明顯的特徵,通過加一些規則能更快的達到預期效果。經過我們的實踐,無論是在異常識別方面還是根因定位方面,“算法+經驗/規則”都是更加快速有效的解決方案。

在異常識別方面,通過算法已經可以覆蓋大部分異常場景的識別,這可以達到RCA的早期目標。隨着RCA項目的持續推進,標準和要求越來越高。有一段時期,運維人員常常反饋我們識別的異常是誤告,我們通過分析這段時間的異常事件,發現大多運維人員認爲是誤告的事件都是時延指標突增。有些時延指標波動的確較大,常常出現毛刺(見圖3),對比歷史來說,這些毛刺都是小概率事件,算法判斷爲異常,但對於運維人員來說,把毛刺當做異常顯得過於敏感,如果每個毛刺都投入人力分析也不現實。

爲了快速調整這種因爲算法太敏感導致的誤告,我們想到傳統異常識別中常用的思路——設置閾值,相當於人工觀察幾分鐘,如果只是毛刺就暫且忽略不當做異常,如果持續時間超過閾值才當做異常。如果僅通過調整算法來解決這個問題可能需要更多的時間去調參以適配所有指標曲線。當然,這種做法也有弊端,例如對專家經驗的依賴大,當指標曲線的行爲發生變化時很難及時發現從而及時調整參數,所以後續我們也會將“觀察分鐘數”參數由人工定義優化爲算法自動學習自動調整。

圖3 時延指標毛刺

在根因定位方面,我們依然選擇使用“算法+經驗/規則”的方式,包括將專家經驗進行總結,沉澱到算法中。

挑戰3. 實時數據和歷史數據,哪個更可信?

在異常識別中,常規做法就是使用歷史曲線的趨勢來預測實時曲線的趨勢。而在根因定位中,我們最初只重點關注了實時數據,忽略了歷史數據。那麼歷史數據在根因定位中是否也同樣具有參照意義呢?經過實踐證明,在根因定位中歷史數據也和實時數據一樣重要。

基於“擁有相似特徵的異常事件極大可能是同一根因導致的”,我們對所有的異常事件進行了特徵提取及根因分類,形成了歷史事件庫,使用神經網絡算法訓練模型,當出現新的異常事件時,我們提取新事件的特徵,通過根據歷史事件庫訓練出的模型,得出新異常事件最可能屬於哪些根因類別,每個根因類別會計算出一個相似度(異常屬於這個根因類別的可能性),再與異常發生時挖掘到的實時數據做匹配,那麼匹配值最高的就最可能是這個事件的根因,這個過程見圖4。

例如根據模型計算出新事件的根因類別可能是數據庫異常,而實時數據中存在數據庫變更、數據庫主機告警等信息,那麼匹配值會非常高,從而推斷出這個事件極有可能是數據庫變更或數據庫主機異常導致。而當新事件從未出現過,提取的特徵不能很好的推斷出這個事件屬於什麼根因類別,即根據歷史事件庫訓練出的模型新異常事件屬於各根因類別的可能性都較低時,我們選擇相信實時數據的分析結果,不和歷史數據做匹配,這樣也對這部分事件的根因定位進行了覆蓋。

圖4 結合歷史數據和實時數據進行根因定位

挑戰4. 當掌握全面的信息時,如何聚焦到有用的信息上?

根因定位掌握的數據源越多越好,挖掘到的數據越全面越好,但我們需要用有效的方式去評估各類數據源以及各類數據的置信度。
對於信息使用者來說,並不需要看到底層的所有數據,他們更希望直接看到對他們最有用的數據,甚至只想看到最終的結論——我該做些什麼來處理這個異常?而做到這一點實現數據可視化就很重要,我們需要從繁雜的數據中找到信息使用者最想要了解和最需要關注的數據,形成主要的推導鏈,讓信息使用者聚焦到這些有用的數據上,在能快速瞭解推導過程的同時建立起對推導方式的認同和信賴,從而快速採取對應的措施來解決異常。

所以無論是實現方還是信息使用者,都希望可以一眼看到最有用的信息。面對這個訴求,我們通過圖形化的推到展示推到過程。

圖5 根因定位推到可視化

以上就是在我們在智能根因分析過程中的面臨四個挑戰以及我們的一些思考,歡迎面臨同樣挑戰或有好的解決方案的朋友和我們交流。如果希望瞭解我們在智能運維中使用的機器學習算法以及支持根因分析的具體方法,請參閱該系列其他文章。

作者簡介

微衆銀行智能運維繫統高級產品經理 孫芮

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章