陳澤生
在醫(yī)療系統(tǒng)網(wǎng)絡(luò)、醫(yī)療業(yè)務(wù)應(yīng)用和數(shù)據(jù)中心運(yùn)維場景下,面對大量的醫(yī)療IT服務(wù)終端和系統(tǒng)以及其關(guān)聯(lián)關(guān)系的運(yùn)維工作,健康監(jiān)測工具是必不可少的,然而即使有了相關(guān)監(jiān)測工具后,隨之而來因醫(yī)務(wù)變更、維護(hù)配置變更、片區(qū)故障、人為失誤等異常情況導(dǎo)致的醫(yī)療系統(tǒng)告警風(fēng)暴和連鎖告警,往往讓運(yùn)維人員頭痛,有價值的告警信息往往會被告警風(fēng)暴淹沒掉,導(dǎo)致故障排查的響應(yīng)與分析定位工作受到很大阻礙,嚴(yán)重影響醫(yī)務(wù)工作的開展,甚至?xí)?dǎo)致醫(yī)療事故。本文就醫(yī)療系統(tǒng)導(dǎo)致的告警風(fēng)暴的問題,研究對其的收斂技術(shù)并加之實(shí)踐,進(jìn)一步提高檢測告警的有效性、及時性和精準(zhǔn)性,討論如何從告警風(fēng)暴中辨別出有效告警、重復(fù)告警和誤告警,如何精準(zhǔn)發(fā)現(xiàn)觸發(fā)其告警背后的醫(yī)療業(yè)務(wù)問題根源,如何讓運(yùn)維人員從告警風(fēng)暴中釋放更多精力。
在醫(yī)療系統(tǒng)運(yùn)維監(jiān)測工作中,告警收斂是指對原始告警信息進(jìn)行分析和處理,以此來降低告警信息的整體數(shù)量規(guī)模。告警收斂的目的就是把無關(guān)的告警信息過濾或合并,盡量保留有價值的告警信息,幫助運(yùn)維人員作出快速而準(zhǔn)確的判斷。據(jù)此我們整個告警收斂框架設(shè)計(jì)主要分為四個步驟,包括原始告警輸入、相關(guān)性處理、告警收斂處理和主告警輸出。
(一)原始告警輸入
通過對接運(yùn)維監(jiān)控和日志等工具,把原始的告警、日志和指標(biāo)等信息按照標(biāo)準(zhǔn)化格式推送到告警收斂系統(tǒng)的告警事件庫,作為告警收斂的原始告警信息輸入。
(二)告警相關(guān)性處理
根據(jù)業(yè)務(wù)相關(guān)性,把輸入的數(shù)據(jù)進(jìn)行各種信息相關(guān)性處理,對告警信息進(jìn)行分層分組處理,形成具有較強(qiáng)業(yè)務(wù)相關(guān)性的告警堆棧陣列,作為下一步告警收斂處理的樣本。
(三)告警收斂處理
對告警堆棧陣列中的各個堆棧,適配各自的告警收斂策略算法,進(jìn)行自動去重、自定義規(guī)則壓縮,以及基于關(guān)系拓?fù)渌惴ǖ氖諗?,?shí)現(xiàn)不同堆棧告警信息按照各自的業(yè)務(wù)規(guī)則進(jìn)行收斂和類聚。
(四)主告警輸出
對進(jìn)行收斂處理后的主告警進(jìn)行輸出,包括收斂后主告警的標(biāo)識、收斂策略、壓縮量、新增的自定義維度等信息。并把主告警信息輸出到通知推送系統(tǒng)中,根據(jù)推送策略,向運(yùn)維人員推送郵件、短信、電話和第三方API發(fā)送告警通知;也可以把告警推送到根因分析模塊,與知識圖譜結(jié)合分析,智能識別和定位告警產(chǎn)生的根因問題。
原始告警信息來源于運(yùn)維監(jiān)控工具,包括Zabbix、Prometheus、Nagios、Open-Falcon等,我們可以采用HTTP API、ElasticSearch、郵件等多種方式從監(jiān)控工具中獲取到原始告警信息。以Zabbix為例,可通過Zabbix的觸發(fā)器動作配置,把告警信息按照定義好的標(biāo)準(zhǔn)化格式推送到告警收斂系統(tǒng)的HTTP API,作為告警收斂的原始告警信息輸入。
原始告警輸入后,是一種無序散亂的形態(tài),我們必須根據(jù)各種業(yè)務(wù)的特性和預(yù)警場景,對具有關(guān)聯(lián)性的告警進(jìn)行歸類和打包。通過數(shù)據(jù)分層法和分組法,把告警分配到各個堆棧陳列中,并為各堆棧標(biāo)記上時間窗口和權(quán)重標(biāo)記。為了更好說明,下面引用一個告警相關(guān)性處理例子。如下表是一組原始告警的輸入。
對原始數(shù)據(jù)進(jìn)行分層和分組處理,分層的維度可以按照告警的等級進(jìn)行劃分,分組的維度可以按照告警的類別劃分,也可以根據(jù)業(yè)務(wù)特性按照不同的維度進(jìn)行劃分。劃分后形成的相關(guān)性堆棧陣列,然后把告警分配到各自的堆棧中。
對告警進(jìn)行相關(guān)性處理后,形成各個告警堆棧,根據(jù)堆棧的業(yè)務(wù)特性,關(guān)聯(lián)各個告警收斂策略,每個告警策略包含有一組或多組的收斂算法,常用的收斂算法有:
(一)時間窗口
根據(jù)每個堆棧的等級,定義每個堆棧的時間窗口,滿足時間窗口條件的告警觸發(fā)時間的告警,將會觸發(fā)一次收斂處理。例如A01堆棧設(shè)置了10分鐘的時間窗口,則每10分鐘對該堆棧中的告警進(jìn)行一次收斂處理。
(二)同類去重
根據(jù)堆棧中告警的ID、對象、內(nèi)容、地域等信息匹配程度,自動合并重復(fù)告警。例如樓宇片區(qū)停電的場景,對導(dǎo)致大量交換機(jī)告警內(nèi)容為“ping超時”的告警,可以根據(jù)告警的地域信息和告警內(nèi)容的同類一致匹配性,達(dá)到自動合并同類告警的目的。
(三)自定義收斂規(guī)則
根據(jù)業(yè)務(wù)特性,自定義收斂規(guī)則,運(yùn)用正則表達(dá)式,對告警信息進(jìn)行提取,對符合正則表達(dá)式的告警進(jìn)行收斂壓縮。
(四)周期性收斂
在生產(chǎn)環(huán)境中會存在很多定時任務(wù),如數(shù)據(jù)備份、定期重啟、晝夜策略變更等,這些定時任務(wù)的運(yùn)行可能會觸發(fā)某些告警,通過設(shè)置有針對性的時間表,與告警堆棧進(jìn)行關(guān)聯(lián),實(shí)現(xiàn)基于時間表的周期收斂策略。
(五)靜默
某些業(yè)務(wù)的中斷會伴隨著一連串連鎖告警的觸發(fā),而我們關(guān)注的只會是最關(guān)鍵的一個節(jié)點(diǎn)或指標(biāo)的告警,這個時候就需要把其他連鎖反應(yīng)的節(jié)點(diǎn)告警盡量靜默掉,使告警更精準(zhǔn)。
(六)基于拓?fù)潢P(guān)系的收斂
網(wǎng)絡(luò)中的各個節(jié)點(diǎn)都具有拓?fù)浠蛏舷掠蔚募壜?lián)關(guān)系,業(yè)務(wù)系統(tǒng)和組件之間的調(diào)用鏈也是存在類似的依賴或映射關(guān)系,基于這種關(guān)系,位于拓?fù)潢P(guān)系上層節(jié)點(diǎn)或指標(biāo)產(chǎn)生的上游告警必然會連鎖觸發(fā)下游告警,我們把這種關(guān)系轉(zhuǎn)換為“節(jié)點(diǎn)IP+告警觸發(fā)器”組合的上下游關(guān)系,即可實(shí)現(xiàn)告警與告警之間的層級圖譜關(guān)系,進(jìn)而實(shí)現(xiàn)基于拓?fù)潢P(guān)系的告警收斂。例如以下是一組簡單的拓?fù)涫纠?wù)器主機(jī)與網(wǎng)絡(luò)交換機(jī)的連接關(guān)系:
● 【上游】節(jié)點(diǎn):10.12.20.1,對象:網(wǎng)絡(luò)交換機(jī)
● 【下游】節(jié)點(diǎn):172.16.4.1,對象:服務(wù)器主機(jī)
上游節(jié)點(diǎn)產(chǎn)生的網(wǎng)絡(luò)中斷、硬件告警、流量擁塞等高等級告警,很大可能會導(dǎo)致下游節(jié)點(diǎn)也產(chǎn)生一系列的告警,有了這種拓?fù)潢P(guān)系,我們就可以通過收斂掉其下游節(jié)點(diǎn)的告警,歸并到上游節(jié)點(diǎn)的主告警上。這種拓?fù)潢P(guān)系可以以數(shù)據(jù)表的方式構(gòu)建,也可以基于已有的拓?fù)鋱D或CMDB圖譜來構(gòu)建。
多條告警收斂處理后形成的一條主告警,主告警信息可以包括標(biāo)識、收斂策略、壓縮量、以及一些基于根因判斷知識的自定義維度等信息。把主告警信息輸出到通知推送系統(tǒng)中,根據(jù)推送策略,向運(yùn)維人員推送郵件、短信、電話和第三方API發(fā)送告警通知。也可以把告警推送到根因分析模塊,與知識圖譜結(jié)合分析,智能識別和定位告警產(chǎn)生的根因問題。
本文提出了應(yīng)對醫(yī)療系統(tǒng)海量告警風(fēng)暴的告警收斂整體框架構(gòu)想,通過對多個醫(yī)療系統(tǒng)的原始告警輸入、告警相關(guān)性處理、告警收斂處理和主告警輸出四個步驟,通過對原始告警的分層分組方法相關(guān)性處理,把原始告警類聚到各個業(yè)務(wù)堆棧中,再通過時間窗口、同類去重、收斂規(guī)則、基于拓?fù)潢P(guān)系等多種告警收斂算法,實(shí)現(xiàn)告警的收斂。目前該醫(yī)療告警收斂系統(tǒng)已在市\區(qū)醫(yī)院醫(yī)療系統(tǒng)中正式上線運(yùn)行,運(yùn)行效果良好,能為運(yùn)維人員提供簡潔而準(zhǔn)確的告警推送,提高了運(yùn)維效率的同時大大降低了運(yùn)維人員的告警信息分析負(fù)擔(dān)。