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