UAV.Monitor提供了對全維監(jiān)控指標(biāo)的預(yù)警功能,各類型的監(jiān)控指標(biāo)均可配置預(yù)警策略,當(dāng)預(yù)警策略被觸發(fā)后,可通過郵件、HTTP調(diào)用等方式進(jìn)行通知報警,并會根據(jù)預(yù)警時間頻率等對報警動作進(jìn)行壓制。
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計制作的公司,為廣大用戶提供了網(wǎng)站設(shè)計、成都網(wǎng)站制作,成都網(wǎng)站設(shè)計,1元廣告,成都做網(wǎng)站選創(chuàng)新互聯(lián),貼合企業(yè)需求,高性價比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。
預(yù)警分為流式預(yù)警、統(tǒng)計預(yù)警以及混合預(yù)警三種。
同環(huán)比預(yù)警就屬于統(tǒng)計預(yù)警的一種。
首先介紹一下同環(huán)比的概念,同環(huán)比描述的是統(tǒng)計數(shù)據(jù)的增/降幅度,即某一時間段(本期)的統(tǒng)計結(jié)果與之前另一相同長度時間段(基期)的比較結(jié)果。同比表示的是本期與上一個同期的比較,比如今年4月與去年4月比較,今天8點到9點與昨天8點到9點比較;環(huán)比表示的是本期與上期的比較,如今年4月與今年3月比較,今天8點到9點與7點到8點比較。而同環(huán)比預(yù)警則是對一段時間內(nèi)監(jiān)控指標(biāo)的統(tǒng)計結(jié)果同比上一同期(或環(huán)比上期)的增/降幅進(jìn)行預(yù)警,即指標(biāo)的同/環(huán)比計算結(jié)果超過了策略指定的增/降幅度則進(jìn)行報警。
預(yù)警條件與動作由預(yù)警策略定義,預(yù)警策略的結(jié)構(gòu)如下:
strategy { "type":"", "instances":[], "conditions":[], "relations":[], "actions":[] } condition { "expressions":[] }
一個預(yù)警策略(strategy)包含多個預(yù)警條件(condition),condition是最小的預(yù)警判定元,每個condition可包含多個表達(dá)式(Expression);預(yù)警表達(dá)式定義了單一預(yù)警條件,表達(dá)式又分為統(tǒng)計(stat)表達(dá)式和流式(stream)表達(dá)式兩種,分別對應(yīng)統(tǒng)計預(yù)警條件與流式預(yù)警條件;relations中各relation對應(yīng)各condition中策略表達(dá)式Expression的邏輯判斷關(guān)系。instances表示該預(yù)警影響的實例,actions表示預(yù)警觸發(fā)后的報警動作,type表示預(yù)警策略的類型,type根據(jù)包含的表達(dá)式種類分為含統(tǒng)計表達(dá)式的統(tǒng)計(stat)策略和只含流式表達(dá)式的流式(stream)策略。
同環(huán)比的計算公示為:同/環(huán)比值=本期數(shù)-基期數(shù),同/環(huán)比率=(本期數(shù)-基期數(shù))÷基期數(shù)×100%。根據(jù)計算公式,我們需要的輸入條件是:
1)需預(yù)警的指標(biāo)名。
監(jiān)控的各項數(shù)值型指標(biāo)均可作為預(yù)警的指標(biāo),如cpu、訪問量等。
2)本期時間段與基期時間段。
由于預(yù)警是一個比較實時性的動作,所以我們把時間段限制在了24小時內(nèi),對于大于24小時比如一周或一個月的統(tǒng)計值或同環(huán)比,以周報或月報的形式直接統(tǒng)計效果更好?;跁r間則根據(jù)同比周期或環(huán)比間隔計算得出。
3)指標(biāo)在時間段內(nèi)統(tǒng)計值的計算方式。
同環(huán)比比較的是指標(biāo)在一段時間內(nèi)的統(tǒng)計值,統(tǒng)計方式有求和、求平均等。由于UAV的監(jiān)控歷史值都存儲在opentsdb,可通過opentsdb自帶的聚合操作進(jìn)行統(tǒng)計值的計算。
4)預(yù)警閾值
增/降幅上限,可設(shè)置為數(shù)值型閾值或百分比閾值。
同環(huán)比預(yù)警屬于統(tǒng)計預(yù)警,所以同環(huán)比預(yù)警表達(dá)式也是統(tǒng)計(stat)類型的表達(dá)式。綜上,同環(huán)比預(yù)警表達(dá)式結(jié)構(gòu)如下。
expression { "type":"stat", "arg":"" //預(yù)警指標(biāo) "time_from":"" //初始時間段-from "time_to":"" //初始時間段-to "interval":"" //環(huán)比間隔(同比則此項為空) "unit":"" //同比周期(環(huán)比則此項為空) "aggr":"" //統(tǒng)計方式 "upperLimit":"" //比值上限 "lowerLimit":"" //比值下限 }
預(yù)警模塊通過流式條件或定時任務(wù)觸發(fā)對預(yù)警表達(dá)式的判定,過程如下
當(dāng)預(yù)警策略判定被觸發(fā)時,各condition獨立進(jìn)行判定,遍歷其中的各個Expression進(jìn)行判定,然后將Expression判定結(jié)果按relation定義的邏輯關(guān)系進(jìn)行組合判斷,若結(jié)果為true則將結(jié)果匯總到策略判定結(jié)果,然后整合策略判定結(jié)果進(jìn)行報警。
同環(huán)比預(yù)警屬于統(tǒng)計預(yù)警的一種,所以同環(huán)比的預(yù)警流程就是統(tǒng)計預(yù)警的預(yù)警流程,預(yù)警模塊啟動一個用于統(tǒng)計策略判定的Timer,每分鐘(因為統(tǒng)計表達(dá)式的時間都是以分鐘為單位,所以每分鐘輪詢一次即可)輪詢一次策略,并觸發(fā)統(tǒng)計策略的判定。
當(dāng)策略被觸發(fā)后,便會遍歷各condition下的表達(dá)式,進(jìn)行一一判定,定時任務(wù)觸發(fā)表達(dá)式判定的規(guī)則如下。
當(dāng)最小判定元condition內(nèi)只有統(tǒng)計表達(dá)式時,遍歷判定各統(tǒng)計表達(dá)式,首先會判定是否是統(tǒng)計表達(dá)示的判定時間,同環(huán)比表達(dá)式根據(jù)屬性值time from,timeto和環(huán)比間隔或同比周期來確定。若不是判定時間,考慮到多個統(tǒng)計表達(dá)式的組合判定情況時,各表達(dá)式的判定時間可能不一致,我們會取出緩存中上次的未過期的判定結(jié)果返回。若是判定時間,則進(jìn)行同環(huán)比計算判定,構(gòu)造opentsdb查詢語句調(diào)用API查詢本期值與基期值,計算得出同/環(huán)比值(率),并與閾值進(jìn)行比較得出判定結(jié)果,結(jié)果會緩存到redis,這里也會將此condition的判定置為有效,因為如果condition里的表達(dá)式都未達(dá)到判定時間,這次判定其實是無效的。
若condition內(nèi)既有統(tǒng)計表達(dá)式又有流式表達(dá)式(即為混合預(yù)警)時,統(tǒng)計表達(dá)式會進(jìn)行正常的判定運算操作,但對于定時任務(wù)觸發(fā)的流式表達(dá)式則直接返回false,因此condition判定結(jié)果也為false。
混合預(yù)警的最終判定是在流式條件觸發(fā)預(yù)警策略時產(chǎn)生,condition中的流式表達(dá)式的判定會正常進(jìn)行,統(tǒng)計表達(dá)式的判定過程如下
如果流式條件的觸發(fā)時間在表達(dá)式的判定時間(誤差一分鐘)內(nèi),會直接從緩存獲取由定時任務(wù)觸發(fā)策略時計算得出的未過期的判斷結(jié)果返回,返回結(jié)果便可與流式表達(dá)式的結(jié)果一同得出混合預(yù)警的結(jié)果。
判定結(jié)果返回后,會根據(jù)預(yù)警表達(dá)式信息及判定結(jié)果生成報警信息。如圖
以上便是同環(huán)比預(yù)警的完整實現(xiàn)過程。
實時預(yù)警關(guān)注的是系統(tǒng)的瞬時狀態(tài),同環(huán)比預(yù)警則反映了指標(biāo)的變化趨勢以及與過去同期相比的波動狀態(tài)。比如系統(tǒng)服務(wù)訪問量異常檢測,由于系統(tǒng)量可能根據(jù)時間有一定的規(guī)律性,如周一到周五訪問量大,周末訪問量小。若采用流式預(yù)警只能定義一個預(yù)警閾值,不能根據(jù)不同時間設(shè)置不同的預(yù)警閾值,這時可以在業(yè)務(wù)高峰時間對系統(tǒng)訪問量指標(biāo)配置按周同比預(yù)警,便可對業(yè)務(wù)訪問量異常做出及時有效的報警。
有時單一的同環(huán)比預(yù)警也不足夠,比如剛才的情況下,如果我們不僅關(guān)心訪問量的相對波動還需要報警時的平均響應(yīng)時間大于某一閾值才報警,這時就需要與流式預(yù)警進(jìn)行結(jié)合預(yù)警。
同環(huán)比預(yù)警豐富了預(yù)警體系,與流式預(yù)警相結(jié)合更有助于對系統(tǒng)異常與業(yè)務(wù)異常的及時精確發(fā)現(xiàn)。
下載UAVStack的源碼(https://github.com/uavorg)
來源:宜信技術(shù)學(xué)院