視頻監控落地四要素:預測、檢測、報警及定位
背景介紹
本文引用地址:http://dyxdggzs.com/article/201808/384998.htm該分享是阿里媽媽Goldeneye業(yè)務(wù)監控平臺的智能監控解決方案。
這個(gè)分享主要包括智能監控的技術(shù)實(shí)現,以及大規模日志監測數據的自動(dòng)化接入兩部分。我先介紹一下智能監控部分,下一期分享中我的兩位同事將給大家著(zhù)重介紹日志分析處理的計算。智能監控現在其他一些公司也有在做,希望通過(guò)這次分享能夠給大家帶來(lái)一些新的啟發(fā),也歡迎大家能夠提出問(wèn)題和建議,互相切磋交流經(jīng)驗。——馬小鵬
相關(guān)廠(chǎng)商內容
分享內容的提綱如下:Goldeneye智能監控的業(yè)務(wù)背景、技術(shù)思想、技術(shù)實(shí)現細節、難點(diǎn)和今后的優(yōu)化方向。
嘉賓介紹
馬小鵬,阿里媽媽全景業(yè)務(wù)監控平臺技術(shù)負責人。2013 起在阿里從事大規模系統日志分析及應用的研發(fā),曾經(jīng)主導了直通車(chē)廣告主報表平臺和實(shí)時(shí)報表存儲選型。在加入阿里之前,曾負責網(wǎng)易電商 App 數據統計平臺的研發(fā)。
一、Goldeneye智能監控的背景
Goldeneye作為阿里媽媽業(yè)務(wù)監控平臺,主要在業(yè)務(wù)日志、數據的實(shí)時(shí)統計分析基礎上做監控報警以及輔助定位。阿里集團內部也有很多優(yōu)秀的監控平臺,它們在開(kāi)放性上做的很好,接入成本也不高,但是監控閾值也是開(kāi)放給用戶(hù)自己設定。這種情況下,對于業(yè)務(wù)監控人工維護閾值就比較復雜,需要有豐富的經(jīng)驗來(lái)拍定閾值,需要人工持續的維護不同監控項的監控閾值。所以,在業(yè)務(wù)快速發(fā)展的前提下,傳統的靜態(tài)閾值監控很容易出現了誤報、漏報的問(wèn)題,而且人工維護成本高,監控視野局限。Goldeneye就是在這種基礎上,我們試著(zhù)從大數據應用的角度,去解決業(yè)務(wù)監控中的問(wèn)題,由此誕生的。
1. 業(yè)務(wù)背景:
(1)體量大:Goldeneye現在接入的業(yè)務(wù)線(xiàn)覆蓋了阿里媽媽主體的90%業(yè)務(wù),每天處理的日志量在100T以上,業(yè)務(wù)監控需要對各業(yè)務(wù)線(xiàn)的流量分層級實(shí)時(shí)監控,核心數據以1分鐘為周期,一般監測數據以5分鐘或1小時(shí)為周期,監控目標非常多,按人工維護這些監控的閾值、啟停、生效實(shí)效等幾乎是達不到的。
(2)變化多:業(yè)務(wù)監控的監測數據大都是業(yè)務(wù)指標,不同于系統運維指標,比如RT/QPS/TPS等一般是比較穩定的,業(yè)務(wù)指標具有周期性變化的特點(diǎn),比如工作日和節假日的區別、業(yè)務(wù)營(yíng)銷(xiāo)策略調整的影響等,在這種情況下人工設定的靜態(tài)報警閾值準確性就很難保障了。
(3)迭代快:隨著(zhù)阿里媽媽資源整合和業(yè)務(wù)的快速發(fā)展,監控目標也經(jīng)常發(fā)生變化,比如流量監控資源位的調整、效果監控的產(chǎn)品類(lèi)型劃分等,曾經(jīng)出現過(guò)新流量上線(xiàn)后的監控盲點(diǎn)。
2. 技術(shù)背景:

圖1 Goldeneye技術(shù)背景
通常的業(yè)務(wù)監控系統或平臺,都是由采集、數據處理、檢測、報警等模塊組成的,Goldeneye也是如此,不過(guò)它的技術(shù)架構上用了阿里內部的一些技術(shù)中間件,比如采集我們使用TimeTunnel(它有agent在各臺日志服務(wù)器上拉日志到Topic,并且負責將離線(xiàn)日志放到ODPS上),這部分我不再介紹了。
數據處理我們使用的jstorm和ODPS MR job分別對日志進(jìn)行實(shí)時(shí)、離線(xiàn)批處理,主要包括日志解析、校驗、時(shí)間周期歸一化、聚合、寫(xiě)存儲(HBase)等操作,這部分下一期分享中我的同事會(huì )詳細介紹。今天的分享主要集中在閾值預測、監控檢測、報警生成通知、輔助定位這四部分。
二、技術(shù)思想
智能監控就是讓系統在業(yè)務(wù)監控的某些環(huán)節上代替人工執行和判斷的過(guò)程。人工維護監控目標和閾值是以經(jīng)驗為參考的,系統如何自動(dòng)判斷哪些目標需要監控、自動(dòng)設定監控目標的閾值水位、不用人力維護,是基于對歷史樣本數據統計分析得出判斷依據。
通過(guò)收集監測數據的樣本,并使用智能檢測算法模型,讓程序自動(dòng)對監控項指標的基準值、閾值做預測,在檢測判斷異常報警時(shí)使用規則組合和均值漂移算法,能精確地判斷需要報警的異常點(diǎn)和變點(diǎn)。
1.閾值水位自適應變化
以往我們添加監控有兩種做法:
給指標M1設置一個(gè)水位線(xiàn),低于(或高于)水位,觸發(fā)報警;
給指標M1設置同比、環(huán)比波動(dòng)幅度,比如同比波動(dòng)20%、環(huán)比波動(dòng)10%觸發(fā)報警;
以上兩種方式,是平常大家常用的監控方式,但是效果確不理想,這種靜態(tài)閾值長(cháng)期來(lái)看沒(méi)有適應變化的能力,需要人工維護,而且報警準確性也依賴(lài)于同環(huán)比數據的穩定性。
我們能否讓系統具備自動(dòng)適應變化的能力,自動(dòng)調整閾值水位?就如同手動(dòng)擋的汽車(chē)換成自動(dòng)擋一樣,可以根據速度自己調節檔位。
2.監控項自動(dòng)發(fā)現
當我們的監控系統具備預測動(dòng)態(tài)閾值的能力后,監控項的維護是否也可以交給系統去做?
可能大家也曾遇到過(guò)類(lèi)似的情況,舊的監控項已經(jīng)沒(méi)有數據了,新的監控目標卻因為各種原因被漏掉,人工維護監控項需要及時(shí)同步上下線(xiàn)變更,但是當我們需要監控的目標有一千個(gè)、一萬(wàn)個(gè)甚至更多的時(shí)候,人力是無(wú)法一直跟進(jìn)這些監控項的維護工作的,或者說(shuō)這種工作比較單調容易被忽視。
我們能否將判斷如何篩選監控項的規則交給系統,讓它去定期檢查哪些監控項已經(jīng)實(shí)效,哪些監控項需要新增,哪些監控項的閾值需要調節。這種發(fā)現規則是穩定的,僅僅是依據發(fā)現規則得出的監控項內容在不斷變化而已。
3.過(guò)濾誤報時(shí)欲擒故縱
當我們的監控系統具備預測動(dòng)態(tài)閾值、自動(dòng)發(fā)現并維護監控項的能力后,如何達到不漏報和不誤報之間的平衡?
對于監控而言,漏報是不可容忍的,但是誤報過(guò)多也容易使人麻木。
通常的做法是為了不被誤報干擾至麻木,會(huì )把閾值調節得寬松些,但是這種做法容易產(chǎn)生漏報,尤其是下跌不太明顯的情況。
Goldeneye采取的思路是對誤報case欲擒故縱,在首先確保不漏報的基礎上降低誤報率。先監控產(chǎn)生疑似異常點(diǎn),這一環(huán)節我們基于動(dòng)態(tài)閾值去檢測時(shí)相對嚴格一些(或者說(shuō)這一環(huán)節不用考慮報警收斂的問(wèn)題),然后對這些疑似異常點(diǎn)再做驗證、過(guò)濾,最終生成報警通知,驗證和過(guò)濾的依據是預先定義的規則,比如指標組合判斷、報警收斂表達式等。
三、技術(shù)實(shí)現細節
下面介紹技術(shù)實(shí)現的一些細節,分為監控系統的架構、動(dòng)態(tài)閾值、變點(diǎn)檢測、智能全景、輔助定位五個(gè)點(diǎn)。
1、整體介紹
Goldeneye監控系統的四個(gè)輸入:實(shí)時(shí)監測數據、歷史數據、預測策略、報警過(guò)濾規則。
其中,歷史數據是實(shí)時(shí)監測數據的積累。
而預測策略主要包括:
(1)閾值參數:設置基于預測基準值的系數決定閾值上下限區間、分時(shí)段閾值預測系數、分報警靈敏度閾值預測系數;
(2)預測參數:樣本數量、異常樣本過(guò)濾的高斯函數水位或者過(guò)濾比例、基于均值漂移模型的樣本分段選取置信度等。
關(guān)于報警過(guò)濾規則,主要是為了在充分捕捉疑似異常點(diǎn)的前提下,過(guò)濾不必要的報警。比如指標M1異常,但是組合規則是M1和M2同時(shí)異常才報警,這種就會(huì )過(guò)濾掉。再比如,按照報警收斂規則,一個(gè)監控項的第1次,第2次,第10次,第50次連續報警值得關(guān)注,可以設置收斂表達式為1,2,10,50,那么在報警通知生成時(shí)對于第3,4,…,9,11,12,…,49次報警可以忽略,因為反復通知的意義不大,這個(gè)規則可以按需要達到自動(dòng)收斂。也可以在同一監控項的多個(gè)實(shí)例同時(shí)發(fā)生異常報警的情況下,按規則合并成一條報警,這些規則可以按具體情況去實(shí)現,最終的目的是以最簡(jiǎn)潔的方式暴露最值得關(guān)注的報警。
(這里補充一句,我們最近在考慮新的收斂方式,對第1條和最后1條報警,并且自動(dòng)計算出累積gap,這樣異常的起止和影響范圍更明顯)

圖2 Goldeneye報警系統架構
2、動(dòng)態(tài)閾值
監控使用控制圖,對監測指標的時(shí)間序列可視化,讓人們可以清楚的看到指標的波動(dòng)?;诳刂茍D的監控,以往很多都是靜態(tài)閾值方式,比如前面提到的靜態(tài)水位線(xiàn)、同環(huán)比。動(dòng)態(tài)閾值是為控制圖的時(shí)間序列每個(gè)點(diǎn),預估該點(diǎn)對應時(shí)刻這個(gè)指標的基準值、閾值上限、閾值下限,從而讓程序可以自動(dòng)判斷是否有異常。因為這種預估基于過(guò)去幾個(gè)月甚至更多的歷史樣本作為參考,所以比同環(huán)比兩個(gè)數據作為參照的準確度要高。動(dòng)態(tài)閾值預測的理論基礎是高斯分布和均值漂移模型。

圖3 動(dòng)態(tài)閾值原理
動(dòng)態(tài)閾值預測的步驟主要是這樣:
(1)樣本選?。哼@個(gè)根據自己的需要,一般建議選取過(guò)去50天左右的樣本。
(2)異常樣本篩除:這個(gè)過(guò)程主要使用高斯分布函數過(guò)濾掉函數值小于0.01,或者標準方差絕對值大于1的樣本。
(3)樣本截?。阂驗楹髞?lái)我們優(yōu)化的版本,在(2)的基礎上使用均值漂移模型對歷史樣本在時(shí)間序列上進(jìn)行分段檢驗,如果有周期性變化、或者持續單調變化,則會(huì )反復迭代均值漂移模型尋找均值漂移點(diǎn),然后截取離當前日期最近第一段(或者可以理解為最近一段時(shí)間最平穩的樣本序列)。樣本選取還有一個(gè)需要注意的問(wèn)題,節假日和工作日的樣本要分開(kāi)選取,預測工作日的閾值要選擇工作日的樣本,節假日亦然,也就是對預測樣本從日期、周末、平穩性三個(gè)維度拆分選取。
(4)預測基準值:經(jīng)過(guò)(2)和(3)的篩選、截取,剩下的樣本基本上是最理想的樣本了,在此基礎上,保持樣本在日期上的順序,按指數平滑法預測目標日期的基準值,得到基準值以后根據靈敏度或閾值系數,計算閾值上下限。
(補充說(shuō)明:第四步預測基準值,有些人可能之前用過(guò)指數平滑法預測,跟第四步我們在樣本權重加權時(shí)的做法很相近,但是他們預測的效果不理想,因為對樣本整體沒(méi)有充分的過(guò)濾選取最穩定的樣本集合)
3、變點(diǎn)檢測
動(dòng)態(tài)閾值用數據統計分析的辦法解決了靜態(tài)閾值的誤報漏報問(wèn)題,節省了人工維護的成本,一定程度上降低了監控風(fēng)險。不過(guò)在微量波動(dòng)、持續陰跌的故障面前,動(dòng)態(tài)閾值也有局限性,閾值區間收的太緊誤報會(huì )增多,區間寬松就會(huì )漏報一些不太顯著(zhù)的故障。在review漏報case時(shí),我們從控制圖上發(fā)現這些微量波動(dòng)肉眼可以觀(guān)察到趨勢,但是程序通過(guò)閾值區間擊穿的判斷方式很難控制,所以引入了均值漂移模型來(lái)尋找變點(diǎn)。所謂變點(diǎn),就是持續微量下跌到一定時(shí)間,累積變化量到一定程度后,使得變點(diǎn)前后監測指標在一段時(shí)間內的均值發(fā)生漂移。
評論