曹靖城 張繼東 吳春平
1引言
傳統(tǒng)監(jiān)控系統(tǒng)能夠?qū)崟r(shí)采集各項(xiàng)閾值類監(jiān)控項(xiàng)相關(guān)監(jiān)控?cái)?shù)據(jù)并進(jìn)行分析,結(jié)合預(yù)先設(shè)定的閾值進(jìn)行故障檢測(cè)和告警,但在異常判定閾值的設(shè)定上存在不足。對(duì)不同的應(yīng)用場(chǎng)景使用統(tǒng)一設(shè)定的閾值難以做適配,即使人為根據(jù)具體情況進(jìn)行不同的閾值設(shè)定,也無(wú)法避免會(huì)有主觀因素的影響。本方案提出在保證異常檢測(cè)可靠的前提下進(jìn)一步使檢測(cè)閾值合理化,提高監(jiān)控和告警效率。
2系統(tǒng)總體方案
2.1方案設(shè)計(jì)
使用一定周期內(nèi)各項(xiàng)指標(biāo)的置信區(qū)間來(lái)設(shè)定閾值,在大量數(shù)據(jù)的基礎(chǔ)上,采用統(tǒng)計(jì)學(xué)方法計(jì)算出合理的閾值區(qū)間,采用分時(shí)段、動(dòng)態(tài)閾值的方式對(duì)指標(biāo)進(jìn)行監(jiān)控并對(duì)異常發(fā)出告警。同時(shí)設(shè)置置信區(qū)間更新機(jī)制應(yīng)對(duì)突發(fā)情況,一旦監(jiān)控?cái)?shù)據(jù)超出置信區(qū)間或系統(tǒng)硬件參數(shù)發(fā)生變化,可在發(fā)出系統(tǒng)警告的同時(shí)清除當(dāng)前置信區(qū)間,重新統(tǒng)計(jì),生成新的置信區(qū)間。在新的置信區(qū)間未生成時(shí),依據(jù)人工設(shè)定初始閾值,待新的置信區(qū)間統(tǒng)計(jì)完成,自動(dòng)切換為新的置信區(qū)間。
2.2方案架構(gòu)
本方案包括5個(gè)核心模塊,方案整體架構(gòu)如圖1所示。
①指標(biāo)采集模塊,對(duì)監(jiān)控對(duì)象分時(shí)段周期進(jìn)行指標(biāo)數(shù)據(jù)采集。
②置信區(qū)間計(jì)算模塊,計(jì)算每一時(shí)段內(nèi)指標(biāo)的平均值、標(biāo)準(zhǔn)差,并結(jié)合相關(guān)數(shù)據(jù)對(duì)每一周期設(shè)置置信水平,計(jì)算置信區(qū)間。
③指標(biāo)監(jiān)測(cè)模塊,通過(guò)劃分時(shí)段的方法計(jì)算每個(gè)周期內(nèi)對(duì)應(yīng)指標(biāo)的相關(guān)統(tǒng)計(jì)數(shù)據(jù),可對(duì)每個(gè)周期分別動(dòng)態(tài)設(shè)置置信區(qū)間。
④動(dòng)態(tài)閾值微調(diào)模塊,指標(biāo)監(jiān)測(cè)正常則將采集到的數(shù)據(jù)用來(lái)更新相關(guān)統(tǒng)計(jì)值并微調(diào)動(dòng)態(tài)閾值。
⑤動(dòng)態(tài)閾值更新模塊,指標(biāo)監(jiān)測(cè)異常則重新采集數(shù)據(jù),計(jì)算并更新閾值區(qū)間,采用設(shè)定閾值保持監(jiān)控,在異?;謴?fù)期間重新采集數(shù)據(jù)進(jìn)行閾值自適應(yīng)更新。
2.3系統(tǒng)流程及核心算法
系統(tǒng)設(shè)計(jì)整體流程如圖2所示,具體步驟如下(以CPU利用率為例)。
步驟1:根據(jù)具體應(yīng)用場(chǎng)景的實(shí)際要求,將一天劃分成不同的時(shí)間周期,周期可自定義,采集不同時(shí)間周期內(nèi)的CPU利用率并進(jìn)行統(tǒng)計(jì)分析。
步驟2:計(jì)算連續(xù)個(gè)周期的CPU利用率數(shù)據(jù),每一時(shí)間周期的數(shù)據(jù)分別統(tǒng)計(jì),計(jì)算每個(gè)時(shí)間周期內(nèi)的平均值、標(biāo)準(zhǔn)差,對(duì)每一時(shí)間周期設(shè)置置信水平,按下式計(jì)算置信區(qū)間:
式(2)用于計(jì)算某一周期內(nèi)CPU利用率的標(biāo)準(zhǔn)差,其中為樣本數(shù)量,為式(1)計(jì)算得到的樣本均值。
選擇適用于場(chǎng)景的置信度并計(jì)算誤差范圍,結(jié)合樣本均值生成對(duì)應(yīng)置信度的置信區(qū)間,計(jì)算公式如下:
步驟3:使用計(jì)算得出的置信區(qū)間作為當(dāng)前周期的動(dòng)態(tài)閾值進(jìn)行CPU利用率監(jiān)測(cè),若數(shù)據(jù)處于置信區(qū)間內(nèi)則反饋到置信區(qū)間計(jì)算模塊進(jìn)行閾值的微調(diào),若數(shù)據(jù)超出置信區(qū)間則觸發(fā)告警。
步驟4:觸發(fā)告警后進(jìn)入置信區(qū)間更新?tīng)顟B(tài),重新采集一定量的數(shù)據(jù)并進(jìn)行統(tǒng)計(jì)分析,將計(jì)算得出的新置信區(qū)間更新為動(dòng)態(tài)閾值。更新數(shù)據(jù)采集期間使用人為設(shè)定的固定閾值進(jìn)行異常檢測(cè),數(shù)值超出告警閾值則觸發(fā)告警。
2.4測(cè)試結(jié)果及分析
本測(cè)試采用CPU使用率數(shù)據(jù)為例進(jìn)行分析,采用95 %的置信水平進(jìn)行置信區(qū)間的計(jì)算。實(shí)驗(yàn)數(shù)據(jù)表示,正常情況下CPU的使用率在20 %上下浮動(dòng),而當(dāng)某一時(shí)間點(diǎn)加入新服務(wù)后,該服務(wù)器的CPU使用率上升,維持在80 %上下浮動(dòng)。若使用固定閾值,并不能很好地反映當(dāng)前CPU的負(fù)載水平,只能依靠人為修改閾值。若使用動(dòng)態(tài)閾值,根據(jù)統(tǒng)計(jì)數(shù)據(jù)計(jì)算置信區(qū)間,得到較為合理的浮動(dòng)閾值,并且在服務(wù)增加之后能夠自適應(yīng)地調(diào)整閾值以適配業(yè)務(wù)環(huán)境變化,可以更好地反應(yīng)當(dāng)前CPU的負(fù)載水平,基于置信區(qū)間對(duì)業(yè)務(wù)系統(tǒng)設(shè)置“分時(shí)+分區(qū)”的個(gè)性化閾值動(dòng)態(tài)設(shè)定,規(guī)避人為主觀性,極大地提升準(zhǔn)確告警能力。
3結(jié)束語(yǔ)
文章簡(jiǎn)要介紹了監(jiān)控預(yù)警自適應(yīng)的系統(tǒng)方案、模塊設(shè)計(jì)、流程說(shuō)明以及對(duì)測(cè)試結(jié)果的分析,本設(shè)計(jì)支持嵌入監(jiān)控系統(tǒng)具有較好的實(shí)用性,動(dòng)態(tài)閾值設(shè)定精準(zhǔn)高效,能夠應(yīng)對(duì)各種突發(fā)情況并自動(dòng)適配多種數(shù)值監(jiān)控告警場(chǎng)景。