2022年05月10日
企業(yè)IT故障定位指診斷故障直接原因或根因,故障定位有助于故障恢復(fù)動(dòng)作更加有效。故障定位通常是整個(gè)故障過程中耗時(shí)最長(zhǎng)的環(huán)節(jié),定位的目標(biāo)圍繞在快速恢復(fù)的基礎(chǔ)上,而非尋找問題根因,后者由問題管理負(fù)責(zé)。通常大部分可用性故障,要借助運(yùn)維專家經(jīng)驗(yàn)的假設(shè)判斷或已知預(yù)案的執(zhí)行得到解決,但仍有部分故障,尤其是性能、應(yīng)用邏輯、數(shù)據(jù)故障需要多方協(xié)同與工具支持。故障定位的方法通常包括專家經(jīng)驗(yàn)驅(qū)動(dòng)的假設(shè)嘗試、測(cè)試復(fù)現(xiàn)、預(yù)案啟動(dòng)、代碼分析四種,這個(gè)過程涉及對(duì)日志、鏈路、監(jiān)控、數(shù)據(jù)感知、知識(shí)管理五類工具。隨著系統(tǒng)復(fù)雜性不斷提升,依靠專家經(jīng)驗(yàn)驅(qū)動(dòng)的假設(shè)嘗試準(zhǔn)確率會(huì)下降,如何將數(shù)字化手段結(jié)合專家經(jīng)驗(yàn),融入到協(xié)同機(jī)制中,這考驗(yàn)故障定位場(chǎng)景的設(shè)計(jì)水平。
1.定位方法
1) 專家經(jīng)驗(yàn)驅(qū)動(dòng)的假設(shè)嘗試
隨著企業(yè)的應(yīng)用系統(tǒng)架構(gòu)由原來單體架構(gòu)向分布式微服務(wù)架構(gòu)發(fā)展,以及研發(fā)、運(yùn)維團(tuán)隊(duì)對(duì)高可用架構(gòu)的重視與投入,越來越多的系統(tǒng)在服務(wù)級(jí)別的可用性、可靠性、健壯性更強(qiáng),再加上配套的監(jiān)控工具完善,一般的服務(wù)級(jí)別不可用故障有更好的應(yīng)對(duì)方案。當(dāng)前運(yùn)維面臨的故障定位問題,主要是:
海量并發(fā)下,故障的快速傳染,單個(gè)服務(wù)異常影發(fā)了大量異常的出現(xiàn),如何在大量異常服務(wù)中判斷根因服務(wù)。
判斷應(yīng)用邏輯層面的異常,比如功能、菜單級(jí)別的故障,如何更加主動(dòng)、從容的找到邏輯上的故障點(diǎn),并作出應(yīng)急。
應(yīng)用邏輯故障的問題定位與 “故障傳染”場(chǎng)景類似,如何在大量病態(tài)的功能中找到根因功能,并對(duì)功能進(jìn)行降級(jí)等恢復(fù)是難點(diǎn)。
判斷數(shù)據(jù)異常產(chǎn)生的異常,數(shù)據(jù)異常不僅僅指數(shù)據(jù)完成不可用,而是在大部分?jǐn)?shù)據(jù)正常下,找到個(gè)別數(shù)據(jù)不可用的問題。
在面對(duì)上面的故障時(shí),整體的自動(dòng)化能力還有較大提升空間,基于運(yùn)維專家經(jīng)驗(yàn)驅(qū)動(dòng)的假設(shè)性嘗試診斷與恢復(fù)仍是當(dāng)前主要的應(yīng)對(duì)手段。要讓運(yùn)維專家經(jīng)驗(yàn)發(fā)揮得更好,需要重點(diǎn)關(guān)注四件事:
專家技能的持續(xù)提升。應(yīng)用邏輯、數(shù)據(jù)異常問題對(duì)于傳統(tǒng)運(yùn)維專家通常是黑盒子,運(yùn)維專家需要轉(zhuǎn)換角色主動(dòng)去了解應(yīng)用邏輯功能,上下游調(diào)用鏈、數(shù)據(jù)流向、應(yīng)用配置、數(shù)據(jù)庫流水等要素。
運(yùn)維前移。了解軟件層的黑盒子,除了主動(dòng)對(duì)線上系統(tǒng)進(jìn)行學(xué)習(xí),還要落實(shí)前移工作,比如:標(biāo)準(zhǔn)化前移,推動(dòng)軟件更加可維護(hù);基礎(chǔ)平臺(tái)前移,用平臺(tái)推動(dòng)軟件標(biāo)準(zhǔn)化;交付前移,標(biāo)準(zhǔn)化、自動(dòng)化軟件交付鏈路;測(cè)試前移,圍繞系統(tǒng)穩(wěn)定性進(jìn)行主動(dòng)的體驗(yàn)、接口、壓力測(cè)試,提升穩(wěn)定性等等。
技能的沉淀與傳承。依靠經(jīng)驗(yàn)最大挑戰(zhàn)是應(yīng)對(duì)人員不在故障處理現(xiàn)場(chǎng)的問題,技能的沉淀與傳承是運(yùn)維管理需要考慮的問題。前者針對(duì)技能經(jīng)驗(yàn)的知識(shí)化,重點(diǎn)關(guān)注知識(shí)生產(chǎn)、保鮮、共享;后者針對(duì)崗位設(shè)置、培訓(xùn)、值班管理等機(jī)制。
工具賦能。應(yīng)用日志、交易報(bào)文、應(yīng)用流水等是了解軟件邏輯和數(shù)據(jù)的主要方案,組織要為專家提供方便的工具。這個(gè)思路同樣適用于運(yùn)維以外的專家,比如在故障協(xié)同中將應(yīng)用日志、功能級(jí)的性能等數(shù)據(jù)以在線工具方式分享給研發(fā)、測(cè)試團(tuán)隊(duì)也是一個(gè)有效的賦能手段。
2) 已知預(yù)案啟動(dòng)
對(duì)于疑難雜癥或重大故障,我們認(rèn)為故障診斷過程中,應(yīng)該采用兩條操作路徑,一是前面提到的基于專家經(jīng)驗(yàn)的嘗試性的診斷,另一點(diǎn)是圍繞已知預(yù)案的嘗試啟動(dòng)。已知預(yù)案指提前對(duì)故障場(chǎng)景進(jìn)行描述,并制定應(yīng)急操作步驟。在預(yù)案的啟動(dòng)中,我們做了幾件事:
預(yù)案線上化。線上化的預(yù)案主要解決當(dāng)前線下文檔式預(yù)案不可用、不好用的問題。采用樂高式拼裝的方式,將應(yīng)急策略卡片化,支持將多個(gè)策略拼裝成一個(gè)應(yīng)急場(chǎng)景下的預(yù)案。
預(yù)案自動(dòng)化。預(yù)案線上化后就能將預(yù)案的策略自動(dòng)化、社交化,比如根據(jù)鏈路關(guān)注自動(dòng)化的觸達(dá)應(yīng)急策略到關(guān)聯(lián)方,將預(yù)案應(yīng)急的協(xié)同在社交 IM 進(jìn)行處置等。具體的預(yù)案場(chǎng)景設(shè)計(jì)將在場(chǎng)景部分中進(jìn)行介紹。
預(yù)案融入故障處置過程。將預(yù)案的執(zhí)行與應(yīng)急處置場(chǎng)景工具整合在一起,作為一個(gè)標(biāo)準(zhǔn)化的動(dòng)作,一方面持續(xù)實(shí)戰(zhàn)使用中不斷的發(fā)現(xiàn)預(yù)案存在不足,另一方面故障處置驅(qū)動(dòng)預(yù)案設(shè)計(jì)者更加重視預(yù)案的編寫。
3) 測(cè)試復(fù)現(xiàn)
復(fù)雜系統(tǒng)的故障定位必然是一個(gè)跨團(tuán)隊(duì)協(xié)同的過程,測(cè)試復(fù)現(xiàn)是一個(gè)協(xié)同定位的解決方案。從崗位看,測(cè)試與 bug 打交道的機(jī)會(huì)最多,對(duì)于邏輯、數(shù)據(jù)引發(fā)的故障更敏感。測(cè)試復(fù)現(xiàn)與定位問題用什么方法,因?yàn)椴粚I(yè)不作說明,以下從運(yùn)維賦能測(cè)試復(fù)現(xiàn)問題的角度列一下運(yùn)維需要提前準(zhǔn)備的支持:
讓測(cè)試能夠更快的獲得問題描述,問題表現(xiàn)的截圖,工單系統(tǒng)的在線流轉(zhuǎn),或基于 chatOps的信息傳遞都是好的解決方案。
讓測(cè)試方便的查生產(chǎn)環(huán)境的異常日志,能看到獲得網(wǎng)絡(luò)服務(wù)的 500 錯(cuò)誤,還是空指針等等信息。
按接口細(xì)分訪問狀況,包括成功率,交易量,耗時(shí)等。
定期同步測(cè)試系統(tǒng),將生產(chǎn)已知缺陷數(shù)據(jù)在線化,輔助測(cè)試定位。
在線獲得配置信息,查看應(yīng)用配置項(xiàng)的生產(chǎn)設(shè)置情況。
4) 代碼分析
雖然開發(fā)可能不清楚復(fù)雜系統(tǒng)完整的上下游關(guān)系,部署架構(gòu),但一定是最清楚具體邏輯、數(shù)據(jù)的人角色。與測(cè)試復(fù)現(xiàn)提到的類似,運(yùn)維也要為研發(fā)團(tuán)隊(duì)提供應(yīng)急協(xié)同的工具。除上面為測(cè)試提供的工具適用于研發(fā)外,運(yùn)維還要為開發(fā)提供線上程序版本、配置信息、各功能號(hào)的性能信息等數(shù)據(jù)。性能管理, AIOps等場(chǎng)景的工具應(yīng)用,將有利于研發(fā)團(tuán)隊(duì)在故障定位環(huán)節(jié),提升代碼分析能力。
2. 定位工具
1) 日志
對(duì)于運(yùn)維而言,日志是運(yùn)維了解硬件及軟件內(nèi)部邏輯的一面窗口。以軟件為例,從系統(tǒng)生命周期看,由于運(yùn)維沒有參與到軟件的需求分析、系統(tǒng)設(shè)計(jì)、編碼開發(fā)、質(zhì)量測(cè)試等階段,當(dāng)系統(tǒng)交接到生產(chǎn)環(huán)境時(shí),軟件日志是運(yùn)維了解系統(tǒng)運(yùn)行狀況的重要手段。日志記錄了從業(yè)務(wù)、中間件、系統(tǒng)等全鏈路信息,可以有效監(jiān)控IT系統(tǒng)各個(gè)層面,從而有效的調(diào)查系統(tǒng)故障,監(jiān)控系統(tǒng)運(yùn)行狀況。利用日志,運(yùn)維可以了解用戶行為操作,服務(wù)請(qǐng)求調(diào)用鏈路,功能調(diào)用是否成功,失敗原因等信息,是故障定位的重要手段,幫助運(yùn)維人員快速定位問題。
傳統(tǒng)運(yùn)維依靠人力從日志中排查故障原因,主要通過 grep、sed等指令利用關(guān)鍵詞(error, fail, exception等)進(jìn)行搜索,或利用基于規(guī)則的日志提取方法,通過傳統(tǒng)方式手動(dòng)設(shè)置正則表達(dá)式來解析日志。這不僅對(duì)代碼要求高,而且要求運(yùn)維人員對(duì)系統(tǒng)和業(yè)務(wù)有著豐富的經(jīng)驗(yàn)。隨著系統(tǒng)的日趨復(fù)雜化,日志顯現(xiàn)出數(shù)量龐大、無固定模式、不易讀懂等特點(diǎn)。僅憑借管理員在海量日志中手動(dòng)查看日志記錄,需要登陸每一臺(tái)服務(wù)器,一次次重定向文件,操作繁瑣, 不利于故障定位。所以,構(gòu)建一體化的日志分析平臺(tái)和利用人工智能的技術(shù)對(duì)日志進(jìn)行分析是解決當(dāng)前日志分析的方向,實(shí)現(xiàn)分散日志的歸集,并在日志數(shù)據(jù)之上建立日志數(shù)據(jù)二次加工,提升故障定位能力。
2) 鏈路
這里提的鏈路主要包括縱向與橫向的依賴關(guān)系,縱向關(guān)系指從生產(chǎn)對(duì)象的部署關(guān)系建立的從基礎(chǔ)設(shè)施、網(wǎng)絡(luò)、計(jì)算資源服務(wù)器、存儲(chǔ)、虛擬機(jī)、容器、主機(jī)、應(yīng)用系統(tǒng)、應(yīng)用、服務(wù)的關(guān)系,通常圍繞應(yīng)用系統(tǒng)進(jìn)行擴(kuò)散;橫向關(guān)系主要從服務(wù)調(diào)用關(guān)系,通過通過業(yè)務(wù)進(jìn)行構(gòu)建關(guān)系鏈。從技術(shù)實(shí)現(xiàn)上,我覺得可以圍繞 CMDB 與 PAAS 平臺(tái)兩個(gè)平臺(tái)建設(shè)之上持續(xù)完善鏈路關(guān)系。其中 CMDB 應(yīng)該將關(guān)系定位為 CMDB 最重要的配置數(shù)據(jù)之一,如果當(dāng)前的 CMDB 到了以業(yè)務(wù)為中心的配置管理方案,那么集成必要的關(guān)系發(fā)現(xiàn)、關(guān)系繪制構(gòu)建、關(guān)系消費(fèi)的能力是下一代 CMDB 的重點(diǎn)( CMDB 的發(fā)展可以分為:滿足 IT 資源管理線上化,支撐運(yùn)維平臺(tái)化互聯(lián)互通,以業(yè)務(wù)為中心的配置管理,基于關(guān)系為核心的知識(shí)圖譜)。PAAS 平臺(tái),側(cè)重指企業(yè)以微服務(wù)為應(yīng)用平臺(tái),或是面向云原生的應(yīng)用平臺(tái)。通常應(yīng)用平臺(tái)為了解平臺(tái)上的系統(tǒng)的可維護(hù)性與可靠性,服務(wù)調(diào)用鏈有配套的解決方案,運(yùn)維需要對(duì)平臺(tái)現(xiàn)有鏈路關(guān)系進(jìn)行在線的獲取。
3) 監(jiān)控
以往,監(jiān)控往往被定位為“監(jiān)測(cè)”的角色,即只負(fù)責(zé)發(fā)現(xiàn)異常,將報(bào)警發(fā)出來即盡到監(jiān)控職責(zé)。站在運(yùn)維業(yè)務(wù)連續(xù)性保障的最終價(jià)值看,監(jiān)控要在“監(jiān)”的基礎(chǔ)上,增加“控”在故障恢復(fù)角度的要求,而要實(shí)現(xiàn)“控”前,需要監(jiān)控具備定位問題的能力。監(jiān)控提升故障定位能力,可以考慮以下幾個(gè)點(diǎn):
對(duì)于已知異常的監(jiān)控策略,在監(jiān)控發(fā)現(xiàn)問題后,對(duì)已知異常探測(cè)點(diǎn)結(jié)果進(jìn)行清晰的描述。
對(duì)于多個(gè)監(jiān)控告警進(jìn)行告警事件的收斂管理,基于 CMDB 關(guān)系數(shù)據(jù)進(jìn)行初步的定位。
利用監(jiān)控?cái)?shù)據(jù)與 AIOps算法,構(gòu)建智能化的故障定位場(chǎng)景應(yīng)用,增加故障定位的能力。
對(duì)于監(jiān)控方面的內(nèi)容將有專門的章節(jié)作介紹,這里不再展開。
4) 數(shù)據(jù)感知
數(shù)據(jù)感知不僅僅是將數(shù)據(jù)可視化,而是要從更高維度去感知系統(tǒng)運(yùn)行狀況。傳統(tǒng)應(yīng)用監(jiān)控主要采用 “點(diǎn)”的方式不斷完善監(jiān)控,即當(dāng)出現(xiàn)新的漏洞或事件,則在監(jiān)控系統(tǒng)增加相應(yīng)運(yùn)行“點(diǎn)”的數(shù)據(jù)采集,并加上對(duì)數(shù)據(jù)的預(yù)警策略達(dá)到預(yù)警的效果。這種“點(diǎn)”的監(jiān)控方式更多的是打補(bǔ)丁的方式,是一種“事后”、“被動(dòng)”、“加固”的思路,為了提高監(jiān)控能力需要利用每個(gè)運(yùn)維同事的專家經(jīng)驗(yàn)轉(zhuǎn)變成“事前”、“主動(dòng)”、“預(yù)防”為主,以“事后”、“被動(dòng)”、“加固”為輔思路。要實(shí)現(xiàn) “事前”、“主動(dòng)”、“預(yù)防”,需要將以“點(diǎn)”為主的監(jiān)控視角,轉(zhuǎn)變成“面”的視角(可以理解為上帝視角,自上而下),這種”面“的視角是對(duì)現(xiàn)有監(jiān)控方式的一個(gè)補(bǔ)充,是應(yīng)對(duì)應(yīng)用越來越復(fù)雜、業(yè)務(wù)連續(xù)性要求越來越高問題的要求。我覺得數(shù)據(jù)感知有以下的特征:
全景感知。舉一反三,面的思維,主動(dòng)思考同類的感知,主動(dòng)消費(fèi)己有的數(shù)據(jù)庫、日志的數(shù)據(jù)。
數(shù)據(jù)基線。感知系統(tǒng) “健康狀態(tài)”,利用同比、環(huán)比的基線比對(duì),利用多維度組合的可視化、即時(shí)的信息推送、數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)化操作讓運(yùn)維能夠更快、更全面的感知異常。
業(yè)務(wù)為中心。關(guān)注影響業(yè)務(wù)的點(diǎn),比如:是否影響業(yè)務(wù)服務(wù)可用性、性能、功能、體驗(yàn)。
數(shù)據(jù)驅(qū)動(dòng)。消費(fèi) &落地關(guān)系數(shù)據(jù)庫、內(nèi)存數(shù)據(jù)庫、日志數(shù)據(jù),與關(guān)系/鏈路的配置數(shù)據(jù)多維關(guān)聯(lián),形成評(píng)價(jià)系統(tǒng)是否“健康”的多維度指標(biāo)。
5) 知識(shí)管理
知識(shí)管理是一個(gè)大家都知道應(yīng)該要做,但大部分都沒做好的事情。原因可能有很多,比如:在管理上,執(zhí)行環(huán)節(jié)領(lǐng)導(dǎo)關(guān)注度不夠有關(guān),前三天很熱,后續(xù)推進(jìn)不足,缺少持續(xù)的管理、有效的獎(jiǎng)懲措施;在運(yùn)營(yíng)上,知識(shí)需要融入員工工作流程中,這需要知識(shí)的運(yùn)營(yíng)方參與運(yùn)維工作流程的設(shè)計(jì),在流程和線上化場(chǎng)景中整合知識(shí)的生產(chǎn)過程;在技術(shù)上,知識(shí)庫沒有與運(yùn)維場(chǎng)景工具整合在一起,知識(shí)的生產(chǎn)、加工,與知識(shí)的應(yīng)用脫節(jié),知識(shí)用得少無法驗(yàn)證知識(shí)數(shù)據(jù)的準(zhǔn)確性,引發(fā)對(duì)知識(shí)的信任問題。但是,可以預(yù)見,隨著系統(tǒng)架構(gòu)復(fù)雜性越來越高,數(shù)據(jù)量越來越大,當(dāng)前主要依靠運(yùn)維專家現(xiàn)場(chǎng)經(jīng)驗(yàn)驅(qū)動(dòng)的臨斷決策解決問題的模式在未來受到的挑戰(zhàn)會(huì)越來越大。尤其是對(duì)于未知故障的應(yīng)急管理成為當(dāng)前運(yùn)維組織重中之重需要解決的問題。
以手工維護(hù)為主的知識(shí)庫也許可以向基于下一代智能技術(shù)實(shí)現(xiàn)的知識(shí)圖譜發(fā)展,增強(qiáng)生產(chǎn)對(duì)象與對(duì)象關(guān)系的描述能力,將對(duì)故障定位起來至關(guān)重要的作用。比如,運(yùn)維知識(shí)圖譜能賦能故障的決策,將運(yùn)維知識(shí)圖譜融入到運(yùn)維應(yīng)急工具中,可以將運(yùn)維人員的故障定位決策過程數(shù)字化,構(gòu)建決策支持知識(shí)圖譜,借助機(jī)器對(duì)海量定位決策操作行為進(jìn)行窮舉式遍歷。如果運(yùn)維知識(shí)圖譜準(zhǔn)確性有保證,可以預(yù)見還能夠支持?jǐn)?shù)據(jù)源/指標(biāo)/文本異常檢測(cè)、基于人工故障庫/數(shù)據(jù)挖掘的故障診斷、故障預(yù)測(cè)、故障自愈、 成本優(yōu)化、資源優(yōu)化、容量規(guī)劃、性能優(yōu)化等場(chǎng)景。