翟友鈞,趙旦譜,臺(tái)憲青
(1. 江蘇物聯(lián)網(wǎng)研究發(fā)展中心,江蘇 無錫 214135;2. 中國(guó)科學(xué)院大學(xué),北京 100049;3. 中國(guó)科學(xué)院電子學(xué)研究所,北京 100190; 4.中國(guó)科學(xué)院電子學(xué)研究所 蘇州研究院,江蘇 蘇州 215121)
在大數(shù)據(jù)分析場(chǎng)景中,豐富、全面、優(yōu)質(zhì)的數(shù)據(jù)源是決策支持的重要前提。數(shù)據(jù)越多越全面,得出的分析結(jié)果越準(zhǔn)確。但冗余的數(shù)據(jù)會(huì)加大分析難度,提高計(jì)算分析工作量,降低決策支持準(zhǔn)確性。目前,固定頻率采集策略被廣泛應(yīng)用,但不是高頻就是低頻,無法兼顧降低采集數(shù)據(jù)量冗余與保證采集信息精度。
針對(duì)分布式集群中的計(jì)算機(jī)資源狀態(tài)信息,本文設(shè)計(jì)了一種面向主動(dòng)安全的動(dòng)態(tài)采集策略,通過與固定頻率采集策略的對(duì)比,通過反復(fù)驗(yàn)證證明,該策略可以有效降低信息冗余并保證采集精度,同時(shí)還保證了對(duì)系統(tǒng)資源的低占用。
當(dāng)前對(duì)于動(dòng)態(tài)采集頻率的研究中,以采集目標(biāo)是否平滑作為動(dòng)態(tài)采集變頻依據(jù)[2]。集群中的計(jì)算機(jī)資源狀態(tài)信息具有連續(xù)變化的特點(diǎn)[3],其平滑程度與系統(tǒng)是否正常并無確定關(guān)系[4]。因此需要根據(jù)其特點(diǎn),制定動(dòng)態(tài)采集變頻依據(jù),在系統(tǒng)正常運(yùn)行時(shí)降低采集頻率,異常時(shí)提高采集頻率。
集群中可通過10種狀態(tài)信息共計(jì)164項(xiàng),對(duì)計(jì)算資源、存儲(chǔ)資源、操作系統(tǒng)、網(wǎng)絡(luò)狀態(tài)進(jìn)行刻畫。從這個(gè)角度出發(fā),可以將這些狀態(tài)信息分為4種,如表1所示。
表1 計(jì)算系統(tǒng)全量狀態(tài)信息分類
其中,只有閾值與系統(tǒng)是否正常具有緊相關(guān)性的狀態(tài)信息才可以作為動(dòng)態(tài)采集的變頻依據(jù)。經(jīng)過篩選,在164項(xiàng)可采集狀態(tài)信息中,能刻畫系統(tǒng)狀態(tài)是否正常的有49項(xiàng)。這49項(xiàng)狀態(tài)信息又可以分為以下3類。
1.1.1系統(tǒng)資源使用情況統(tǒng)計(jì)信息
這類信息統(tǒng)計(jì)刻畫了集群中的資源使用情況,在系統(tǒng)正常運(yùn)行時(shí),其數(shù)值應(yīng)處于一個(gè)正常閾值內(nèi);當(dāng)超出這個(gè)閾值,則表明系統(tǒng)可能存在問題。屬于該類別的狀態(tài)信息共計(jì)6項(xiàng),如表2所示。
1.1.2系統(tǒng)中某狀態(tài)資源統(tǒng)計(jì)信息
這類狀態(tài)信息記錄的對(duì)象主體本身是系統(tǒng)正常組成的一部分,在系統(tǒng)正常運(yùn)行時(shí)因處于較低水平(為0或幾乎為0);如果這類狀態(tài)信息記錄到了較高水平的數(shù)值,則表明系統(tǒng)可能處于異常狀態(tài)。屬于該類別的狀態(tài)信息共計(jì)8項(xiàng),如表3所示。
表2 系統(tǒng)資源使用情況統(tǒng)計(jì)信息
表3 系統(tǒng)中某狀態(tài)資源統(tǒng)計(jì)信息
1.1.3網(wǎng)絡(luò)狀態(tài)異常引起的報(bào)文失效統(tǒng)計(jì)信息
這類狀態(tài)信息記錄的對(duì)象主體是各類網(wǎng)絡(luò)協(xié)議中傳輸失效的報(bào)文數(shù),當(dāng)網(wǎng)絡(luò)狀態(tài)正常時(shí),其數(shù)值應(yīng)當(dāng)處于一個(gè)較低水平(為0或幾乎為0);如果記錄到了較高
水平的數(shù)值,則表明系統(tǒng)網(wǎng)絡(luò)可能處于異常狀態(tài)。屬于該類別的狀態(tài)信息共計(jì)35項(xiàng),如表4所示。
本文將上述49項(xiàng)狀態(tài)信息作為動(dòng)態(tài)采集的變頻依據(jù)。
表4 網(wǎng)絡(luò)狀態(tài)異常引起的報(bào)文失效統(tǒng)計(jì)信息
在現(xiàn)有動(dòng)態(tài)采集策略中,不同采集對(duì)象的采集頻率進(jìn)行同步調(diào)整。其優(yōu)勢(shì)是實(shí)現(xiàn)方便,適用于采集對(duì)象種類少、采集對(duì)象之間關(guān)系簡(jiǎn)單的系統(tǒng)。在計(jì)算機(jī)系統(tǒng)中,信息采集種類多、采集對(duì)象之間具有相關(guān)性,可以依此在不同種類的異常發(fā)生時(shí),對(duì)不同的采集對(duì)象進(jìn)行分組變頻。與現(xiàn)有動(dòng)態(tài)采集策略相比,這種策略可以在保證采集精度的同時(shí),進(jìn)一步降低數(shù)據(jù)冗余。
變頻策略設(shè)計(jì)如圖1所示。當(dāng)屬于變頻依據(jù)的某類狀態(tài)信息記錄到異常數(shù)值,改變其所屬整類狀態(tài)信息的采集頻率;同時(shí)依據(jù)狀態(tài)信息之間的關(guān)聯(lián)關(guān)系,改變具有相關(guān)性的其他類狀態(tài)信息的采集頻率;對(duì)不具有相關(guān)性的其他類狀態(tài)信息不改變采集頻率。
本文所設(shè)計(jì)的動(dòng)態(tài)采集策略,需要在大數(shù)據(jù)分布式環(huán)境中進(jìn)行部署與實(shí)現(xiàn)。在高并發(fā)時(shí),避免系統(tǒng)異常與提高采集頻率形成相互影響是本課題必須要解決的問題。
1.3.1并發(fā)模型——協(xié)程
在Linux分布式環(huán)境中,通常使用多進(jìn)程并發(fā)模型。這種并發(fā)模型的缺點(diǎn)是服務(wù)器的性能會(huì)隨著連接數(shù)的增多而變差。本文在進(jìn)行動(dòng)態(tài)采集策略的部署與實(shí)現(xiàn)時(shí),從底層采用了一種新的并發(fā)模型——協(xié)程(Coroutine),如圖2所示。協(xié)程十分輕量,可以在一個(gè)進(jìn)程中執(zhí)行數(shù)以十萬計(jì)的協(xié)程依舊保持高性能;一個(gè)進(jìn)程有數(shù)千個(gè)線程,其CPU會(huì)忙于上下文切換,性能急劇下降。執(zhí)行協(xié)程只需要極少的棧內(nèi)存(大概是4~5 KB),線程棧的默認(rèn)大小為1 MB。創(chuàng)建它們的初始內(nèi)存成本很低廉(傳統(tǒng)POSIX線程需要1~8 MB內(nèi)存),并可以根據(jù)需要?jiǎng)討B(tài)增長(zhǎng)和縮減占用的資源。這使得goroutine會(huì)從4 096 B的初始棧內(nèi)存占用開始按需增長(zhǎng)或縮減內(nèi)存占用,而無需擔(dān)心資源的耗盡。
圖1 動(dòng)態(tài)采集變頻策略
圖2 協(xié)程并發(fā)模型
圖5 動(dòng)態(tài)采集策略實(shí)現(xiàn)
1.3.2采集方法——procfs與psutil
本文通過利用procfs(process file system)實(shí)現(xiàn)計(jì)算資源狀態(tài)信息的采集。采集方法如圖3所示。在Linux系統(tǒng)啟動(dòng)時(shí),會(huì)動(dòng)態(tài)生成一個(gè)偽文件系統(tǒng),用于通過內(nèi)核訪問進(jìn)程信息。內(nèi)核中的所有信息及可調(diào)整參數(shù)都被以文件實(shí)體的形式映射到一個(gè)目錄樹中,本文使用gopsutil對(duì)procfs下文件進(jìn)行調(diào)用,實(shí)現(xiàn)計(jì)算資源狀態(tài)信息的采集。
本方法好處在于:procfs不是一個(gè)真的的文件系統(tǒng),只占用有限的內(nèi)存,不占用存儲(chǔ)空間;計(jì)算資源狀態(tài)信息由操作系統(tǒng)內(nèi)核動(dòng)態(tài)映射到文件中,無需占用額外的系統(tǒng)資源。
圖3 采集方法
1.3.3動(dòng)態(tài)采集策略實(shí)現(xiàn)
Telegraf由golang實(shí)現(xiàn),其底層架構(gòu)采用協(xié)程并發(fā)模型,通過gopsutil讀取procfs實(shí)現(xiàn)對(duì)系統(tǒng)狀態(tài)資源的采集,滿足系統(tǒng)資源低占用的要求。但其采集頻率由配置文件設(shè)置,改變采集頻率需要重啟生效,沒有使用動(dòng)態(tài)采集策略。其系統(tǒng)架構(gòu)如圖4所示:采集器啟動(dòng)時(shí),從配置文件Config中讀取采集間隔及其他配置參數(shù)并使其生效;Input插件從采集目標(biāo)源中獲取采集對(duì)象數(shù)據(jù);Processor插件和Aggregator插件對(duì)Input插件得到的數(shù)據(jù)進(jìn)行處理和聚合;Output插件將采集數(shù)據(jù)傳輸?shù)綌?shù)據(jù)存儲(chǔ)目標(biāo)(數(shù)據(jù)庫(kù))中。
圖4 Telegraf架構(gòu)
本文通過對(duì)其進(jìn)行源碼改編,實(shí)現(xiàn)了所提出的動(dòng)態(tài)采集策略。如圖5所示:當(dāng)Input插件從采集目標(biāo)源獲取采集數(shù)據(jù)后,根據(jù)上文提出的變頻依據(jù)判別集群運(yùn)行狀態(tài)是否正常、是否需要改變采集頻率,如果不需要,則不進(jìn)行后續(xù)操作;如果需要,則根據(jù)上文提出的計(jì)算資源狀態(tài)信息相關(guān)關(guān)系確定需要改變采集頻率的狀態(tài)信息;然后將要改變的采集頻率目標(biāo)值通過Internal接口傳輸?shù)絀nput插件中,實(shí)現(xiàn)采集頻率改變的即時(shí)生效。
同時(shí)還設(shè)計(jì)了一個(gè)狀態(tài)接口:當(dāng)其他外部組件(如:集群健康度監(jiān)控、主機(jī)異常檢測(cè)模塊等)判別系統(tǒng)處于異常狀態(tài)需要改變采集頻率時(shí),也可通過該狀態(tài)接口使用本文所提出的動(dòng)態(tài)采集策略。
本實(shí)驗(yàn)的實(shí)驗(yàn)環(huán)境是由6臺(tái)服務(wù)器搭建的分布式集群,配置如表5所示。
表5 實(shí)驗(yàn)環(huán)境服務(wù)器參數(shù)
為了真實(shí)地模擬分布式集群計(jì)算資源狀態(tài)信息的動(dòng)態(tài)變化情況,在實(shí)驗(yàn)分布式集群上運(yùn)行OpenTSDB標(biāo)準(zhǔn)測(cè)試程序,該測(cè)試程序可以模擬不同的應(yīng)用類型的工作負(fù)載,包括CPU、內(nèi)存、I/O等。
對(duì)于監(jiān)控系統(tǒng)來說,應(yīng)當(dāng)盡量做到全量監(jiān)控,這樣看到的問題才足夠接近真實(shí)。監(jiān)控盡量做到實(shí)時(shí),延遲1 min都意味著故障處理總時(shí)間的延長(zhǎng)。根據(jù)全量采集的標(biāo)準(zhǔn),心跳數(shù)據(jù)是1 min一次;如果是服務(wù)器或者硬件監(jiān)控,一般幾秒一次;如果是特別重要的,可以1 s一次。對(duì)于全量采集,心跳頻率是采集頻率的最低底線。
本文提出的動(dòng)態(tài)采集策略希望在進(jìn)行分布式集群計(jì)算資源狀態(tài)信息數(shù)據(jù)采集時(shí),兼顧降低采集數(shù)據(jù)量冗余和保證采集信息精度。理想情況下,二者越高代表動(dòng)態(tài)采集策略效果越好。然而,通常情況下,兩者之間相互影響,希望正常狀態(tài)信息數(shù)據(jù)量冗余降低度越高,需要將最大采集間隔設(shè)置越大,導(dǎo)致對(duì)異常狀態(tài)信息的反應(yīng)靈敏度越低,異常狀態(tài)信息采集精度隨之下降。因此,兼顧降低采集數(shù)據(jù)量冗余和保證采集信息精度需要合理的最大采集間隔時(shí)間。
(1)
(2)
異常狀態(tài)信息采集靈敏度定義(Abnormal sensitivity)如下:
(3)
在其他參數(shù)不變的情況下,正常狀態(tài)信息數(shù)據(jù)量冗余降低度Re隨最大采集間隔T的變化規(guī)律如圖6所示,異常狀態(tài)信息采集靈敏度As隨最大采集間隔T的變化規(guī)律如圖7所示??梢钥闯觯顟B(tài)信息數(shù)據(jù)冗余降低度Re隨最大采集間隔T的增大而對(duì)數(shù)提高,異常狀態(tài)信息采集靈敏度As隨最大采集間隔T的增大而線性減小。在最大采集間隔較小時(shí),正常狀態(tài)信息冗余降低效率較高且異常狀態(tài)信息采集靈敏度降低代價(jià)較?。欢S著最大采集間隔取值的增大,不僅異常狀態(tài)信息采集靈敏度降低代價(jià)增加,且正常狀態(tài)信息冗余降低效率較低。
圖6 冗余降低度變化規(guī)律
圖7 異常靈敏度變化規(guī)律率
為了取得較好的正常狀態(tài)信息冗余降低效率和較小的異常狀態(tài)信息采集靈敏度降低代價(jià),需要綜合考慮二者的關(guān)系,選取合適的最大采集間隔T。定義正常狀態(tài)信息數(shù)據(jù)量冗余降低度Re與異常狀態(tài)信息采集靈敏度As的綜合評(píng)估指標(biāo)F-measure如下:
(4)
圖8展示了其他參數(shù)不變的情況下,F(xiàn)ReAs隨最大采集間隔T的變化規(guī)律??梢钥闯觯嬖谝粋€(gè)最大采集間隔最佳取值,能夠以最小的異常狀態(tài)信息靈敏度降低代價(jià)取得最大的正常狀態(tài)信息冗余降低效率。
圖8 FReAs變化規(guī)律
在本實(shí)驗(yàn)方案中,設(shè)置高頻采集頻率為5 s/次,低頻采集頻率為25 s/次。通過故障注入方法模擬計(jì)算機(jī)系統(tǒng)中出現(xiàn)的異常狀態(tài)。本文提出的動(dòng)態(tài)采集策略可在8類故障產(chǎn)生時(shí)觸發(fā)動(dòng)態(tài)采集,在實(shí)驗(yàn)中主要向被檢測(cè)虛擬機(jī)中注入了如下3類故障,測(cè)試覆蓋率37.5%。
(1)內(nèi)存故障注入:主要是通過在注入對(duì)象服務(wù)器中運(yùn)行一個(gè)內(nèi)存密集型程序來實(shí)現(xiàn),例如不斷地調(diào)用malloc函數(shù)申請(qǐng)內(nèi)存,此時(shí)被注入對(duì)象服務(wù)器會(huì)出現(xiàn)內(nèi)存泄露,內(nèi)存占有率會(huì)提高。
(2)CPU故障注入:主要是通過在被注入對(duì)象服務(wù)器中運(yùn)行一個(gè)計(jì)算密集型程序來實(shí)現(xiàn),例如死循環(huán)、復(fù)雜數(shù)學(xué)計(jì)算等,此時(shí)被注入對(duì)象服務(wù)器的CPU使用率會(huì)發(fā)生變化。
(3)I/O故障注入:該類故障是通過在被注入對(duì)象服務(wù)器中運(yùn)行一個(gè)數(shù)據(jù)傳輸密集型應(yīng)用程序,被注入對(duì)象服務(wù)器的磁盤I/O吞吐率會(huì)發(fā)生變化。
為了驗(yàn)證本文提出的動(dòng)態(tài)采集策略的有效性,在2個(gè)完全相同的分布式集群計(jì)算環(huán)境中,同時(shí)分別應(yīng)用動(dòng)態(tài)采集策略與固定頻率采集策略進(jìn)行重復(fù)的對(duì)比實(shí)驗(yàn),并得到相應(yīng)的實(shí)驗(yàn)結(jié)果。
本實(shí)驗(yàn)主要通過準(zhǔn)確率、召回率、F-measure來評(píng)價(jià)動(dòng)態(tài)采集策略的性能[5]。
實(shí)驗(yàn)結(jié)果評(píng)價(jià)指標(biāo)如表所示。
表6 實(shí)驗(yàn)結(jié)果評(píng)價(jià)指標(biāo)
根據(jù)表6, 定義NTP、NFP、NFN、NTN代表四種情況下采集樣本數(shù)量。在此基礎(chǔ)上,準(zhǔn)確率與召回率這兩個(gè)指標(biāo)定義如下:
準(zhǔn)確率(Precision):
(5)
召回率(Recall Rate):
(6)
準(zhǔn)確率和召回率之間相互影響,準(zhǔn)確率高時(shí)一般召回率就低。因此,為了進(jìn)行更全面的評(píng)價(jià),本文引入綜合評(píng)價(jià)指標(biāo)(F-measure),其定義如下:
(7)
實(shí)驗(yàn)中通過3種故障注入方法,模擬系統(tǒng)運(yùn)行狀態(tài)空閑、正常、異常、最后回歸正常4個(gè)階段下的狀態(tài)信息。圖9~14分別展示了3種故障注入實(shí)驗(yàn)結(jié)果,實(shí)驗(yàn)時(shí)間分段如表7所示。
表7 故障注入實(shí)驗(yàn)時(shí)間分段 (min)
圖9 任務(wù)節(jié)點(diǎn)CPU使用率
圖10 監(jiān)控節(jié)點(diǎn)網(wǎng)絡(luò)流量
圖11 任務(wù)節(jié)點(diǎn)內(nèi)存占用
圖12 監(jiān)控節(jié)點(diǎn)網(wǎng)絡(luò)流量
圖13 任務(wù)節(jié)點(diǎn)磁盤IO
圖14 監(jiān)控節(jié)點(diǎn)網(wǎng)絡(luò)流量
表8展示了3種異常模擬實(shí)驗(yàn)的采集結(jié)果。由表可知,在不同的故障注入方法中,本文提出的動(dòng)態(tài)采集策略在面對(duì)不同的異常狀態(tài)時(shí),采集結(jié)果穩(wěn)定性高,能保持較高的準(zhǔn)確率。
表8 故障注入實(shí)驗(yàn)結(jié)果
在進(jìn)行3種異常模擬實(shí)驗(yàn)的同時(shí),采集監(jiān)控節(jié)點(diǎn)的網(wǎng)絡(luò)通信流量結(jié)果。測(cè)試結(jié)果如圖10、圖12、圖14所示。對(duì)于監(jiān)控節(jié)點(diǎn),網(wǎng)絡(luò)通信主要是采集數(shù)據(jù)的傳輸,因此可以通過它來觀察兩種策略在采集數(shù)據(jù)量上的差異[6]??梢钥闯觯瑢?duì)于系統(tǒng)正常運(yùn)行狀態(tài),動(dòng)態(tài)采集策略所采集的數(shù)據(jù)量大約只有非動(dòng)態(tài)采集策略的1/6;對(duì)于系統(tǒng)異常運(yùn)行狀態(tài),動(dòng)態(tài)采集策略所采集的數(shù)據(jù)量與非動(dòng)態(tài)采集策略基本相同。由此可以得出結(jié)論:本文提出的動(dòng)態(tài)采集策略在面對(duì)不同的異常狀態(tài)時(shí),均能在保證采集精度的同時(shí),有效降低采集數(shù)據(jù)冗余。
本文主要針對(duì)計(jì)算資源狀態(tài)信息,提出了一種動(dòng)態(tài)采集策略。根據(jù)計(jì)算資源狀態(tài)信息自身特性,設(shè)計(jì)了變頻依據(jù)和變頻策略。實(shí)驗(yàn)結(jié)果表明,該策略穩(wěn)定、準(zhǔn)確、有效。
參考文獻(xiàn)
[1] 張斌,朱建濤,徐曌.基于動(dòng)態(tài)頻率算法的遠(yuǎn)程監(jiān)控系統(tǒng)數(shù)據(jù)采集優(yōu)化策略[J].微電子學(xué)與計(jì)算機(jī),2016,33(8):86-91.
[2] 曾文序,庫(kù)少平,鄭浩.基于旋轉(zhuǎn)門算法的自適應(yīng)變頻數(shù)據(jù)采集策略[J].計(jì)算機(jī)應(yīng)用研究,2018(03):769-772.
[3] PADHY P, DASH R K, MARTINEZ K, et al. A utility-based sensing and communication model for a glacial sensor networt[C]//Proceedings of the 5th International Conference on Autonomous Agents and Multi-Aent Systems, 2006:1353-1360.
[4] SOLIMAN S S, AWONIYI O O. System and method for assisted network acquisition and search updates[P].US:US20120069800A1, 2012-063-22.
[5] 許福. 虛擬計(jì)算環(huán)境下節(jié)點(diǎn)異常檢測(cè)方法研究[D].南京:南京理工大學(xué),2017.
[6] 孫鵬. 云計(jì)算環(huán)境下的仿生自主監(jiān)控系統(tǒng)和多指標(biāo)均衡調(diào)度機(jī)制的研究[D].成都:電子科技大學(xué),2017.
網(wǎng)絡(luò)安全與數(shù)據(jù)管理2018年4期