AIOps?人工智能和IT運(yùn)營支撐 Ops 之間的故事,愈演愈烈,已經(jīng)成為當(dāng)今運(yùn)維圈的熱門話題,我打算從2篇文檔分享我們在 AIOps 上一些探索和實(shí)踐。(上篇)主要介紹了為什么事件(告警)處理需要 AIOps;(本篇)主要分享OneAlert 事件處理平臺(tái)在 AIOps 方面的探索。
上篇提到規(guī)?;?IT 事件管理中,需要人工智能識(shí)別重要信息,去除噪音,甄別關(guān)鍵信息,減少人力工作量。
舉個(gè)栗子:假設(shè)某企業(yè)的 IT 環(huán)境中的某個(gè)底層基礎(chǔ)設(shè)施,如網(wǎng)絡(luò)或存儲(chǔ)設(shè)備出現(xiàn)異常,相關(guān)聯(lián)的主機(jī)、中間件數(shù)據(jù)庫、消息隊(duì)列、緩存,應(yīng)用程序,業(yè)務(wù)服務(wù)會(huì)受到影響。當(dāng)監(jiān)控和管理系統(tǒng)全面的探測發(fā)現(xiàn)這些問題的話,會(huì)瞬間(數(shù)十秒)產(chǎn)生大量的事件,而且這些事件隨著時(shí)間的推移不斷的發(fā)生(1-2分鐘),假設(shè)都加入通知提醒的話,郵箱瞬間爆滿。實(shí)際上,隨著規(guī)?;蛷?fù)雜度增加,這些現(xiàn)象經(jīng)常性發(fā)生。
OneAlert?在事件(告警)處理方面經(jīng)營多年,借助人工智能技術(shù),在以下幾個(gè)方面進(jìn)行探索,嘗試解決上述問題:
降噪,消除不重要的事件,識(shí)別重要關(guān)鍵信息,避免告警疲勞。
聚類,將相關(guān)的事件聚合起來,分門別類,特別是在告警風(fēng)暴方面應(yīng)用。
識(shí)別根因,在數(shù)千事件中識(shí)別出可能是根因的問題。
決策支持,相似問題推薦,實(shí)現(xiàn)知識(shí)復(fù)用。

基本核心思路是對(duì)數(shù)據(jù)進(jìn)行處理,將成千上萬的事件過濾、甄別、篩選,如漏斗般,多層過濾雜質(zhì),沉淀下金沙。
降噪
當(dāng)大量的雜音事件頻發(fā)騷擾我們工程師,會(huì)引發(fā)告警疲勞,就是所謂的無感。體現(xiàn)為事件太多,跟己相關(guān)的較少,重要的事情淹沒在汪洋大海中。
降噪的目的,就是去除噪音,留下樂章。事件處理過程中,傳統(tǒng)的做法是去重,將重復(fù)的事件去除掉,簡單有效。OneAlert 早期版本就是這樣,從時(shí)間維度上,相同的事件僅發(fā)生一次,之后再發(fā)生只會(huì)在事件的計(jì)數(shù)器上體現(xiàn)?;旧显摲椒苓_(dá)到 80%-95% 左右的壓縮率,刨去雜音,將數(shù)萬數(shù)千事件縮減為數(shù)百和數(shù)十。
OneAlert 的新用戶會(huì)有一個(gè)習(xí)慣過程,從?Zabbix?或者其他監(jiān)控工具過來的相同事件,只會(huì)合并為一條,通過分發(fā)升級(jí)機(jī)制通知到位,提醒快速處理。習(xí)慣后,基本上通知到位的事件都需要關(guān)注下。
去重的做法簡單有效,然而不能完全解決栗子中的很多不同類型事件發(fā)生問題,特別規(guī)模大的時(shí)候,幾百主機(jī)、數(shù)十中間件、數(shù)百應(yīng)用、數(shù)千微服務(wù)、數(shù)十業(yè)務(wù)服務(wù)的告警事件的過濾。所以我們引入了新的算法,借鑒信息論熵的概念。
什么是熵?
“說不清楚的事就叫傷(熵)!”。信息是一個(gè)很抽象的概念,信息多少很難說清楚。如一本小說有多少信息量?一個(gè)事件有多少信息量?
知道1948年,香農(nóng)提出了“信息熵”的概念,才解決了信息的量化度量問題。熱力學(xué)的熱熵表示分子狀態(tài)混亂程度,香農(nóng)用信息熵來度量信源的不確定性。
再舉個(gè)栗子~
小明不愛學(xué)習(xí),小李愛學(xué)習(xí),小明考試十有八九不及格,小李經(jīng)常滿分。
事件A:小明考試及格,對(duì)應(yīng)的概率 P(xA)=0.1,信息量為 I(xA)=?log(0.1)=3.3219
事件B:小李考試及格,對(duì)應(yīng)的概率 P(xB)=0.999,信息量為 I(xB)=?log(0.999)=0.0014
小明及格率低,如果有一次及格了,大家會(huì)很驚訝,小明居然及格了!!! 信息量好大呀!
從熵的角度看:
小明的熵:HA(x)=?[p(xA)log(p(xA))+(1?p(xA))log(1?p(xA))]=0.4690
小李的熵:HB(x)=?[p(xB)log(p(xB))+(1?p(xB))log(1?p(xB))]=0.0114
小明結(jié)果不確定,畢竟10次有9次不及格,小李比較確定(1000次考試只有一次可能不及格,結(jié)果相當(dāng)確定)
熵越大,信息的不確定性高,利用熵的特性,我們嘗試來解決告警事件信息的過濾問題。
熵和自然語言處理 NLP
由于 OneAlert 接收的事件是非結(jié)構(gòu)化的文本數(shù)據(jù),通過人工智能算法,結(jié)合自然語言處理 NLP 技術(shù)。使用 NLP 文本的分詞、命名實(shí)體識(shí)別等特性,實(shí)現(xiàn)數(shù)據(jù)處理。
從內(nèi)容信息上的信息量(熵)。例如 CPU 使用率超過閾值,和存儲(chǔ)設(shè)備宕機(jī)是完全不同的,后者明顯重要和信息量更大。做到這一點(diǎn)需要解決兩個(gè)問題:
1. 需要從自然語言內(nèi)容的角度去理解信息。特別要指出的是 IT 運(yùn)營支撐專業(yè)術(shù)語和電商語言、新聞?lì)愓Z言是有差異的。例如電商里面,面膜和護(hù)膚詞語有很大關(guān)聯(lián),而監(jiān)控里面交換機(jī) Switch 和端口 Port 有很大關(guān)聯(lián),通用的自然語言處理技術(shù)應(yīng)用到專業(yè)領(lǐng)域里面有一定的難度。
2. 某個(gè)用戶的告警事件有可能從來沒有發(fā)生過,意味著第一次發(fā)生的時(shí)候這些數(shù)據(jù)(內(nèi)容)需要在識(shí)別出來。如新上的存儲(chǔ)設(shè)備3月來運(yùn)行良好,結(jié)果今天剛好故障。
解決這兩個(gè)問題,依賴于 OneAlert 多年來?SaaS?運(yùn)營積累了各行各業(yè)的告警事件數(shù)據(jù),通過對(duì)這些數(shù)據(jù)進(jìn)行處理,建立起專業(yè)的監(jiān)控告警自然語言文本語料庫,這個(gè)庫可以說是當(dāng)今中國少見的。
1. 覆蓋各行各業(yè),感謝金融(招行、借貸寶、盛開金融),出行(馬蜂窩、ofo、摩拜),電信運(yùn)營商,云服務(wù)商(網(wǎng)宿、七牛、云牛)、制造業(yè)( TCL、美的)、游戲(殼木、靈刃、閑來胡娛)、以及用友、良品鋪?zhàn)?、德電、銅板街、供銷大數(shù)據(jù)、趨勢科技、華大基因等各行業(yè)優(yōu)秀公司。
2. 覆蓋層次多,基礎(chǔ)設(shè)施、中間件、應(yīng)用、大數(shù)據(jù)、業(yè)務(wù)以及微服務(wù),生產(chǎn)制造過程中各類信息。
通過建立專業(yè)的告警事件自然語言語料庫,幫助我們深入的從內(nèi)容的角度去告警事件信息。A 用戶首次發(fā)生的存儲(chǔ)故障,其實(shí)在 B 用戶已經(jīng)發(fā)生過了,我們能夠識(shí)別該信息的內(nèi)容熵,比 CPU 使用率告警更重要(每家每戶都發(fā)生)。
除了信息內(nèi)容的理解,建立內(nèi)容熵,我們還考慮時(shí)間維度,我們稱為時(shí)間熵。例如同樣是 MySQL Slave Down 進(jìn)程故障,天天發(fā)生和幾個(gè)月發(fā)生一次的信息量也不同,所以我們還要考慮時(shí)間維度的發(fā)生頻率問題。
結(jié)合內(nèi)容熵和時(shí)間熵,我們標(biāo)識(shí)事件(告警)的重要度,幫助工程聚焦問題,實(shí)現(xiàn)降噪處理。
信息熵的應(yīng)用還很廣,在事件處理上,應(yīng)該還要考慮上下文、IT 環(huán)境等一系列因素,我們也在探索。例如存儲(chǔ)設(shè)備/網(wǎng)絡(luò)故障會(huì)比主機(jī)故障更為重要,拓?fù)湟蕾囮P(guān)系、層次結(jié)構(gòu)等上下文因素會(huì)對(duì)信息的識(shí)別有更大影響。
利用人工智能、信息論等技術(shù),我們在成千上萬的事件,挑選和甄別出重要事件,讓工程師更聚焦,從而更快處理。但是事件本身還是零散的,還是需要工程師去挨個(gè)查看,所以我們引入了聚類技術(shù)。
聚類

回到文中第一個(gè)栗子,降噪將告警事件處理后,還有數(shù)十?dāng)?shù)百個(gè)事件,很多是類似的,例如存儲(chǔ)類 Lun1、Lun2故障,主機(jī) A\B\C… 故障,數(shù)據(jù)庫 Master1、Master2、Slave1… 應(yīng)用 Order_1_8080,order_2_8080…,業(yè)務(wù) 支付、門戶等。
其實(shí)就是有幾類事情,存儲(chǔ)類、主機(jī)類(支付類主機(jī)、門戶類主機(jī))、數(shù)據(jù)庫集群、支付類應(yīng)用、門戶類應(yīng)用等幾大類。從職責(zé)劃分和管理流程方面,也是不同團(tuán)隊(duì)負(fù)責(zé)。如果能夠?qū)⑦@些零散的事件分門別類,就更清晰和有助于處理(職責(zé)劃分)。
常用做法一般是定義大量的規(guī)則,建立起專家系統(tǒng)(規(guī)則庫),這種模式在IT系統(tǒng)規(guī)?;蛘呤菑?fù)雜度相對(duì)較小時(shí),比較適用。例如同一個(gè)網(wǎng)絡(luò)設(shè)備上的端口故障合并在一起。隨著時(shí)間的推移,配套的知識(shí)規(guī)則需要不斷的完善,對(duì)人力的要求和管理要求更高。當(dāng)IT環(huán)境變化和調(diào)整后,如果配套的規(guī)則沒有更新,或者是規(guī)則不夠全面和完善,則有可能逐漸荒廢,淪落為無用。
也有不少用戶提出使用 CMDB,構(gòu)建完善的拓?fù)湟蕾囮P(guān)系的模式,去從根源上進(jìn)行追溯實(shí)現(xiàn)聚類合并,然而CMDB和拓?fù)潢P(guān)系的維護(hù),也面臨著動(dòng)態(tài)化實(shí)時(shí)準(zhǔn)確性問題。而且在 CMDB 建設(shè)過程中往往會(huì)出現(xiàn)過大過重,蘿卜青菜一起管的情況,實(shí)現(xiàn)管理職責(zé)清晰、邊界明確的可能性很低,特別是在業(yè)務(wù)和服務(wù)驅(qū)動(dòng)的情況下,后端和底層IT支撐往往迫于形勢,CMDB 被迫納管更多內(nèi)容。
以上兩類做法其實(shí)都是依賴于管理制度,并輔助工具的做法。特點(diǎn)是需要依賴人工大量干預(yù)。歷經(jīng)多年建設(shè),有些優(yōu)秀互聯(lián)網(wǎng)企業(yè)做的很極致,管理也很到位,效果明顯。
我們希望通過輕量級(jí)的方式和重量級(jí)相結(jié)合來實(shí)現(xiàn)聚類的準(zhǔn)確性。輕量級(jí)的意思是,通過算法和簡化的策略規(guī)則,無需過多的前提條件,快速實(shí)現(xiàn)告警事件的聚合。將上述栗子的大量事件,劃分為存儲(chǔ)、數(shù)據(jù)庫、應(yīng)用和不同業(yè)務(wù)。普適性更強(qiáng),見效更快~
告警事件之間是存在一定的關(guān)聯(lián)性的,將一組類似的有關(guān)系的事件聚合在一起就是一個(gè)場景。以場景為單位去實(shí)現(xiàn)團(tuán)隊(duì)的分派/協(xié)作,最終解決問題,而不是單一事件的逐條解決。在移動(dòng)化今天,有什么事,臨時(shí)拉個(gè)討論組/微信群,一起討論和解決問題;場景與此類似。
利用人工智能無監(jiān)督學(xué)習(xí)技術(shù),結(jié)合自然語言處理 NLP,我們從內(nèi)容相似性、相關(guān)性進(jìn)行數(shù)據(jù)挖掘和學(xué)習(xí)。
內(nèi)容相似性,一名普通工程師一眼就能看清楚 MySQL Slave1 和 Slave2 的相似性,然而程序和計(jì)算機(jī)能夠理解這事就有點(diǎn)困難了。幸運(yùn)的是,我們利用在降噪過程中我們建立的專業(yè)語料庫,能夠識(shí)別出當(dāng)下相似告警,將符合相似度(如80%)的事件聚合在一起。
時(shí)間相關(guān)性,這個(gè)可能會(huì)好理解一些,就是根據(jù)事件發(fā)生的時(shí)間差,在一瞬間爆發(fā)的大量事件是存在一定關(guān)聯(lián)性的,特別是開篇的那個(gè)栗子。然而由于監(jiān)控工具的數(shù)據(jù)采集問題,現(xiàn)實(shí)的事件并不是嚴(yán)格的按照時(shí)間序列過來的,例如業(yè)務(wù)故障和存儲(chǔ)故障,從直覺角度上看,應(yīng)該是存儲(chǔ)故障先發(fā)生,之后才影響業(yè)務(wù)。實(shí)際上,兩者的事件時(shí)間有可能是相反的。
通過算法,在沒有過多的前提條件下,實(shí)現(xiàn)將相似相關(guān)事件聚合稱為一個(gè)場景。
與降噪一樣,算法應(yīng)該跟上下文和環(huán)境相關(guān),所以未來在聚類的方面可以做的更深入,更重量級(jí)。
識(shí)別根源

在現(xiàn)在為止,我們通過降噪將事件從數(shù)千數(shù)萬降低為數(shù)百數(shù)十,聚類降低為數(shù)類數(shù)十。到此為止基本上能夠更高效的處理問題,然而,我們總是期望能夠定位到根源,甄別是那些異常引發(fā)的,快速識(shí)別根因是所有IT支撐工程師的追求。找到標(biāo)靶,拉弓射箭,中靶,一氣呵成。
現(xiàn)實(shí)是很困難,如果想100%的確定根因,必須對(duì) IT 環(huán)境的每個(gè)環(huán)節(jié)和設(shè)施進(jìn)行管理,并建立數(shù)據(jù)模型。在當(dāng)今的規(guī)模化、虛擬化、微服務(wù)化情況下,這是很困難的事情。
所以往往依賴于有經(jīng)驗(yàn)的工程師進(jìn)行分析和判斷,如果在跨職責(zé)、跨業(yè)務(wù)、跨團(tuán)隊(duì)的時(shí)候,就需要多個(gè)不同領(lǐng)域的專家工程師去診斷和分析了。
借助人工智能算法,通過有監(jiān)督的訓(xùn)練方式,通過歷史和人為標(biāo)注的數(shù)據(jù)。工程師每一次的根源識(shí)別,都可以作為機(jī)器學(xué)習(xí)訓(xùn)練的素材。隨著時(shí)間的推移,診斷標(biāo)注的根源數(shù)據(jù)積累越多,機(jī)器就能夠準(zhǔn)確的識(shí)別出因果關(guān)系,根源識(shí)別也越來越準(zhǔn)確。
前文的栗子中,如果有類似歷史數(shù)據(jù),并且完成人工標(biāo)注,那么再次發(fā)生的時(shí)候,我們就可以判斷存儲(chǔ)或者是網(wǎng)絡(luò)故障是根因,可能性85%。
通過人工智能方式,逐漸的擺脫嚴(yán)重依賴專家工程師的模式,讓運(yùn)營支撐系統(tǒng)成為一個(gè)能夠自我學(xué)習(xí)和進(jìn)化的智能系統(tǒng)。
決策支持
識(shí)別場景,甄選根因后,我們基本上就可以著手解決問題。在處理問題的過程中,會(huì)出現(xiàn)一個(gè)知識(shí)傳遞的問題。例如有經(jīng)驗(yàn)的工程師和新入職的工程師的差異,其實(shí)這就是一個(gè)集體知識(shí)共享的問題。
以往大多團(tuán)隊(duì)會(huì)使用 Wiki 或者是別的工具建立知識(shí)庫,人工編輯文章和處理預(yù)案。以方便工程師參考借鑒,但是也有很多團(tuán)隊(duì)沒有建立起共享知識(shí)庫。
我們通過人工智能的方式做了一些嘗試,讓整個(gè)事件(告警)處理更流暢起來。場景歷史推薦,對(duì)于新發(fā)生的場景,如果以前有類似的場景,系統(tǒng)會(huì)推薦出來,如在上個(gè)月有一個(gè)類似的故障,相似度80%,也是一個(gè)存儲(chǔ)類故障。通過查看歷史場景的解決方案/過程,幫助我們做決策,可以快速的復(fù)用歷史知識(shí)。整個(gè)過程中,人工智能自動(dòng)學(xué)習(xí)和推薦,告別人工手動(dòng)編輯知識(shí)文檔的方式。
隨著時(shí)間的推移,系統(tǒng)越發(fā)智能,信息積累越多,也會(huì)持續(xù)反復(fù)使用。
小結(jié)
AIOps 的應(yīng)用和實(shí)踐會(huì)越來越多,我們有理由相信人工智能技術(shù),會(huì)對(duì) IT 運(yùn)營支撐產(chǎn)生極大的影響力。
OneAlert 在該領(lǐng)域的探索還屬于入門級(jí),然而我們也迫不及待和大家分享。我們將發(fā)布 OneAlert AI 版,這應(yīng)該是國內(nèi)鮮見、SaaS 模式的人工智能事件處理平臺(tái)?,F(xiàn)在開始對(duì)新老用戶開放內(nèi)測 www.onealert.com,歡迎大家一起探索。
隨著更多的用戶對(duì)人工智能的了解應(yīng)用,相信不久的將來,正如?Gartner?說的,未來將有50%的企業(yè)使用 AIOps 方式運(yùn)營支撐,人工智能對(duì)企業(yè) IT 運(yùn)營效率的提升和變革,也將促進(jìn)這些企業(yè)的商業(yè)發(fā)展提速。
未來已來。
OneAlert?是北京藍(lán)海訊通科技股份有限公司旗下產(chǎn)品,是國內(nèi)首個(gè)?SaaS?模式的云告警平臺(tái),集成國內(nèi)外主流監(jiān)控/支撐系統(tǒng),實(shí)現(xiàn)一個(gè)平臺(tái)上集中處理所有 IT 事件,提升 IT 可靠性。想了解更多信息,請(qǐng)?jiān)L問?OneAlert?官網(wǎng) ,歡迎免費(fèi)注冊體驗(yàn) 。
來源:http://blog.oneapm.com/apm-tech/824.html