新聞中心

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

        視頻監控落地四要素:預測、檢測、報警及定位

        作者: 時間:2018-08-02 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201808/384998.htm

        圖4 均值漂移原理

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

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

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

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

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

        4、智能全景

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

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

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

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

        5、輔助定位

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

        (1)全鏈路分析

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

        圖5 全鏈路tracing

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

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

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

        圖6 生產事件與時間序列

        (3)A/B test或TopN

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

        圖7 A/B test or TopN

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

        (4)關聯指標

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

        圖8 關聯指標

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

        四、難點

        1、時間序列平穩化

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

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

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

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

        2、埋點代價

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

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

        3、數據標準化

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

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

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

        五、今后的優化方向

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

        指標相關性由統計分析程序來確定。


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 汪清县| 松溪县| 高陵县| 彰化市| 华容县| 丽江市| 外汇| 社会| 武宣县| 如东县| 中西区| 余干县| 桐乡市| 佛冈县| 利辛县| 东乡族自治县| 武穴市| 若羌县| 农安县| 衡山县| 青海省| 河东区| 本溪市| 吴川市| 砚山县| 德钦县| 万荣县| 吉林省| 青田县| 福鼎市| 泗水县| 龙海市| 双鸭山市| 城口县| 洞口县| 浦城县| 安国市| 太保市| 上饶县| 衡水市| 岳池县|