<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費電子 > 設計應用 > 視頻監(jiān)控落地四要素:預測、檢測、報警及定位

          視頻監(jiān)控落地四要素:預測、檢測、報警及定位

          作者: 時間:2018-08-02 來源:網(wǎng)絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/201808/384998.htm

          圖4 均值漂移原理

          從上圖可以看到,均值漂移模型的算法原理,實際上是把程序不容易識別的陰跌趨勢,轉換成CUSUM時間序列,它的趨勢很明顯,在變點左側單調增、右側單調減,CUSUM時間序列描述了被監(jiān)測時間序列每個點偏離均值的累積變化量,它的規(guī)律是從S0=0開始,到Sn=0結束,變點兩側單調變化。

          CUSUM=Cumulative Sum。累積和用以在某個相對穩(wěn)定的數(shù)據(jù)序列中,檢測出開始發(fā)生異常的數(shù)據(jù)點。累積和最典型的應用是在“改變檢測”(Change Detection)中對參量變化的檢測問題轉化了以后,用程序求CUSUM序列上每個點的一階導數(shù),從持續(xù)增變?yōu)槌掷m(xù)減即可判定為變點,至于持續(xù)增、減多少個點,由自己來設定。

          關于變點檢測使用的mean-shift模型,大家可以去網(wǎng)上找找paper,我這臺電腦上找不到了,上面主要說明了發(fā)現(xiàn)變點的原理,通俗地講,就是把問題轉化成程序容易解決的狀態(tài)陰跌線程序不容易量化衡量、判斷,那么就用CUSUM控制圖里的“富士山”形狀去尋找,這是我個人的通俗解釋。

          上面說到我們使用CUSUM序列上每個點的一階導數(shù)來判斷拐點(變點)是否到來,其實圖上這個例子是比較理想的情況,在我應用mean-shift模型時,遇到了一些復雜情況,比如這個圖上就一個“山頭尖”,但是也時候會有多個,這種情況下就要再次轉化問題,比如可以把CUSUM再差分,或者以我們的做法,記錄一階導數(shù)的狀態(tài)值,從連續(xù)N個正值變?yōu)槌掷m(xù)N個負值時可以判定。

          另外,變點檢測的算法實現(xiàn)我這里不方便詳細說明,其中變點在反復迭代時自己可以根據(jù)實際情況設定迭代次數(shù)和置信度,有助于提高變點發(fā)現(xiàn)的準確性。

          4、智能全景

          變點檢測彌補了動態(tài)閾值對細微波動的檢測不足,這兩種方式結合起來,基本可以達到不漏報和不誤報的平衡,同時也不需要人工長期維護,這是智能全景監(jiān)控的基礎。當監(jiān)控的人力成本節(jié)省了以后,理論上我們可以依賴智能監(jiān)控無限制的開拓監(jiān)控視野,并將這些監(jiān)控報警連結起來分析。

          監(jiān)控項的自動發(fā)現(xiàn)規(guī)則,比如對維度D的指標M做實時監(jiān)控,維度D下可能由1000種維度值,而且是不斷變化的1000種,如何讓程序自動維護監(jiān)控項?你可以制定一個規(guī)則,比如指標M>X則認為需要監(jiān)控(畢竟不是所有的都需要監(jiān)控報警,至少在目前故障定位處理沒有完全自動化的狀況下,報警處理也是需要一定人力的)。在滿足M>X的條件下,為了提高報警準確性,我們還需要根據(jù)重要性區(qū)分報警靈敏度,也就是對于宏觀、核心的維度值我們希望能夠非常靈敏的監(jiān)控波動,而對于非重要的維度值我們預測閾值可以寬松一些,這些可以通過上面說的閾值參數(shù)來設定。

          (說明:這個規(guī)則我這里只是舉一個例子,各位同仁可以根據(jù)自己的實際場景去實現(xiàn)一些規(guī)則,比如系統(tǒng)運維層面的監(jiān)控,有些是按照距離故障發(fā)生的速度或風險系數(shù)來判斷,那么就可以圍繞這種指標來制定,假如是對磁盤利用率的監(jiān)控,就是容量增長速度與剩余資源比例作為參考等等)

          以上條件都滿足了之后,智能全景監(jiān)控基本可以運行,不過我們也曾遇到一些其他的問題,比如業(yè)務方需要接入監(jiān)控,但是不一定是必須要我們解析日志,他們有自己的數(shù)據(jù),可能是數(shù)據(jù)庫、接口返回、消息中間件里的消息等等。所以,我們在數(shù)據(jù)接入上采用分層接入,可以從日志標準輸出格式、存儲的時間序列schema約定、閾值預測的接口三個層次接入使用,這個內容將在下一次分享時由我的同事單獨介紹。這里之所以提到,是因為全景監(jiān)控接入的數(shù)據(jù)比較多,所以接入途徑要有層次、靈活性。

          5、輔助定位

          報警的最終目的是減少損失,所以定位問題原因尤為重要。Goldeneye嘗試著用程序去執(zhí)行人工定位原因時的套路,當然這些套路目前是通過配置生成的,還沒有達到機器學習得出來的地步,不過當業(yè)務監(jiān)控指標接入的越來越多,指標體系逐漸完善以后,通過統(tǒng)計學的相關性分析,這些套路的生成也有可能讓程序去完成。這里我介紹一下,程序可以執(zhí)行的人工總結處的幾個套路。

          (1)全鏈路分析

          從技術架構、業(yè)務流程的角度,我們的監(jiān)測指標是否正常,從外部因素分析,一般會受到它的上游影響。按照這個思路,逐一分析上游是否正常,就形成了一條鏈路。這種例子很多,比如系統(tǒng)架構的模塊A,B,C,D,E的QPS。

          圖5 全鏈路tracing

          (插一句,全鏈路分析有兩種數(shù)據(jù)記錄方式,要么鏈路每個節(jié)點內部透傳,拼接成完整鏈路處理信息記錄到最終的節(jié)點日志;要么異步地每個節(jié)點各自將信息push到中間件)

          (2)報警時間點上發(fā)生了什么?

          這是收到監(jiān)控報警后大多數(shù)人的反應,我們把運維事件、運營調整事件盡可能地收集起來,將這些事件地散點圖和監(jiān)測報警的控制圖結合起來,就能看出問題。如果程序自動完成,就是將事件發(fā)生的時間點也按相同的方式歸一化到固定周期的時間點,檢查與報警時間點是否吻合。

          圖6 生產(chǎn)事件與時間序列

          (3)A/B test或TopN

          有些人定位問題,使用排除法縮小出問題的范圍。比如在維度D上指標M有異常波動,可以將D拆分成D1,D2,D3來對比,常見的具體情況比如機房對照、分組對照、版本對照、終端類型對照等等,如果在監(jiān)測數(shù)據(jù)層級清晰的基礎上,我們可以一層一層的鉆取數(shù)據(jù)做A/B test,直到定位到具體原因。還有一種方式,不是通過枚舉切分做A/B test,而是直接以指標M為目標,列出維度D的子維度D1,D2,D3,……中指標M的TopN,找出最突出的幾項重點排查。

          圖7 A/B test or TopN

          topn也是類似的。大家可以也能看出來,智能監(jiān)控和輔助定位是需要一個清晰的數(shù)據(jù)層級和元數(shù)據(jù)管理系統(tǒng)來支撐的,這一點很基礎。

          (4)關聯(lián)指標

          不同的指標在監(jiān)控中都是持續(xù)的時間序列,有些指標之間是函數(shù)關系,比如ctr=click/pv,click和pv的變化必然帶來ctr的變化,這種聯(lián)系是函數(shù)直接描述的。還有一些指標的關聯(lián),無法用函數(shù)公式描述,它們之間的相關性用統(tǒng)計學指標來衡量,比如皮爾遜系數(shù)。Goldeneye的指標關聯(lián)依據(jù),目前還沒有自動分析,暫時是人工根據(jù)經(jīng)驗設置的,只是視圖讓程序去完成追蹤定位的過程,比如指標M1出現(xiàn)異常報警后能夠觸發(fā)相關指標RMG1/RMG2/RMG3的檢測(因為這些指標可能平時不需要7*24小時監(jiān)控報警,僅在需要的時候check),以此類推逐級檢測定位。

          圖8 關聯(lián)指標

          這些方式或許大家平時也嘗試著去做過一些程序化的處理,我個人認為關聯(lián)指標的方式,基礎在于構建指標體系,這個構建過程可以是人工經(jīng)驗和程序統(tǒng)計分析的結合,指標體系至少能夠描述指標的分類、數(shù)據(jù)出處、具體含義、影響相關指標的權重等等,有了這些基礎才能應用統(tǒng)計學的分析方法完成。

          四、難點

          1、時間序列平穩(wěn)化

          平穩(wěn)化的時間序列,對預測準確性有非常重要的意義,可是我們的業(yè)務監(jiān)測時間序列恰好大多數(shù)都不是平穩(wěn)化的,以5分鐘的監(jiān)測周期為力,除了大盤及核心監(jiān)測序列,其他的時間序列都是在一定范圍內正常波動但總體趨勢卻是穩(wěn)定的。我們目前采用的方法是:

          (1)滑動平均,比如波動鋸齒明顯,容易造成誤報干擾的化,則加大監(jiān)控監(jiān)測周期,將5分鐘提高到30分鐘,相當于擬合6個時間窗口的數(shù)據(jù)來平滑時間序列。

          (2)持續(xù)報警判斷,如果覺得30分鐘發(fā)現(xiàn)問題會比較晚,可以按5分鐘檢測,鋸齒波動容易發(fā)生報警,但可以連續(xù)3次報警再發(fā)通知,這樣就避免了鋸齒波動的誤報。

          (3)對于需要均值漂移來檢測細微波動的情況,24小時的時間序列本身有流量高峰和低谷,這種情況一般采用差分法做平滑處理,使用幾階差分自己掌握。Goldeneye沒有直接使用差分法,因為我們已經(jīng)預測了基準值,所以我們使用實際監(jiān)測值與基準值的gap序列作為變點監(jiān)測的輸入樣本。

          2、埋點代價

          業(yè)務監(jiān)控的監(jiān)測數(shù)據(jù)來源主要是日志、業(yè)務系統(tǒng)模塊吐出到中間件、采集接口被push,從系統(tǒng)各模塊吐出數(shù)據(jù)到中間件似乎比直接寫入磁盤的IO開銷小很多,不過對于請求壓力比較大的系統(tǒng),開旁路寫出數(shù)據(jù)即使是內存級也是有一定開銷的。

          解決這個問題的辦法是數(shù)據(jù)采樣,對于在時間上分布均勻的監(jiān)測數(shù)據(jù),直接按百分比采樣。

          3、數(shù)據(jù)標準化

          雖然數(shù)據(jù)接入是分層開放的,但是我們還是制定了標準的數(shù)據(jù)格式,比如時間序列數(shù)據(jù)存儲schema,可擴展的日志消息proto格式,在這些結構化數(shù)據(jù)的定義中,可以區(qū)分出業(yè)務線、產(chǎn)品、流量類型、機房、版本等一些標準的監(jiān)控維度信息,這樣做的目的是以后可以將這些監(jiān)測數(shù)據(jù)和故障定位的指標相關性分析銜接起來。

          但是,這些標準化的推進需要很多參與者的認可和支持,甚至需要他們在系統(tǒng)架構上的重構,看似是比較困難的。

          目前可以想到的辦法,就是在旁路吐出監(jiān)測數(shù)據(jù)時,以標準化的消息格式封裝,然后保證在Goldeneye的存儲層有標準的schema和接口訪問。

          五、今后的優(yōu)化方向

          時間序列預測模型,目前的模型只考慮了日期、節(jié)假日/周末、時間段的因素,沒有年同比趨勢、大促活動影響、運營調整影響的因素,需要抽象出來。

          指標相關性由統(tǒng)計分析程序來確定。


          上一頁 1 2 下一頁

          關鍵詞:

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();