劉永芬 陳志安 賴曉燕
摘要:數(shù)據(jù)采集作為數(shù)據(jù)分析的基礎(chǔ)起著重要的作用。文章針對現(xiàn)有的大數(shù)據(jù)信息采集技術(shù)方案中存在的采集設(shè)備性能數(shù)據(jù)不可配置、采集容量小等問題,提出了一種性能好、可配置、自適應(yīng)的數(shù)據(jù)采集解析方案。該方案可以適配多種網(wǎng)絡(luò)拓撲及多廠家設(shè)備,最大限度地提高數(shù)據(jù)采集規(guī)模,還可以自動調(diào)整采集策略,以避免出現(xiàn)單源采集阻塞問題,保證整個采集平臺的有效運行。
關(guān)鍵詞:自適應(yīng);數(shù)據(jù)采集;組件設(shè)計
中圖分類號;TP39 文獻標(biāo)識碼:A 文章編號:1006-8228(2020)07-63-04
0引言
在大數(shù)據(jù)時代,人們的日常生活都離不開網(wǎng)絡(luò),各內(nèi)容提供商及其所使用的設(shè)備每天都會產(chǎn)生海量數(shù)據(jù)。設(shè)備上的數(shù)據(jù)類型多種多樣,不僅有與設(shè)備運行信息相關(guān)的數(shù)據(jù),也有與企業(yè)、用戶相關(guān)的數(shù)據(jù),如軟/硬件系統(tǒng)日志數(shù)據(jù)、設(shè)備接口流量數(shù)據(jù)、用戶上網(wǎng)行為數(shù)據(jù)等,這些數(shù)據(jù)中蘊藏著豐富的信息等著我們?nèi)ネ诰?。因此,我們通過不同的數(shù)據(jù)采集技術(shù)獲取數(shù)據(jù)是進行數(shù)據(jù)挖掘的先決條件。
所有設(shè)備都在采集平臺的管控中,為了監(jiān)控所有設(shè)備的健康狀態(tài)及統(tǒng)計設(shè)備接口的流量信息,需要每隔一定時間(假設(shè):x分鐘)采集所有設(shè)備的CPU、內(nèi)存、溫度、以及設(shè)備接口的相關(guān)指標(biāo)數(shù)據(jù)。假設(shè),有m臺設(shè)備是屬于跨公網(wǎng)采集,有k臺設(shè)備的接口數(shù)大于250,這兩類設(shè)備的采集速度會明顯慢于常規(guī)的采集速度。典型的數(shù)據(jù)采集場景網(wǎng)絡(luò)拓撲描述如圖1所示。
拓撲圖是典型的數(shù)據(jù)采集場景,使用常規(guī)的采集方案可能存在如下問題:當(dāng)m+k的值大于采集線程并發(fā)數(shù)時,可能導(dǎo)致整個采集組件阻塞。當(dāng)管理的設(shè)備規(guī)模變大時(n>=3000),采集組件在x分鐘內(nèi)可能無法采集完所有設(shè)備的數(shù)據(jù)。當(dāng)管理的設(shè)備中的一部分設(shè)備間斷性的出現(xiàn)協(xié)議不可達現(xiàn)象,常規(guī)的采集組件會在采集這類設(shè)備時消耗掉一部分性能,最終可能導(dǎo)致無法采集所有設(shè)備的數(shù)據(jù)。
綜上所述,現(xiàn)有的一些網(wǎng)管產(chǎn)品的性能采集模塊存在如下幾個問題:采用硬編碼方式來采集設(shè)備性能數(shù)據(jù),其不可配置,可擴展性差;采集功能與業(yè)務(wù)處理功能耦合在一起,不利于采集性能的優(yōu)化;采集容量太小,5分鐘只能采集600-700臺設(shè)備;單設(shè)備采集阻塞會導(dǎo)致后續(xù)采集計劃掛起(即單節(jié)點阻塞效應(yīng))。本文提出了一種高性能(5分鐘采集3000臺設(shè)備性能數(shù)據(jù))、可配置的采集組件設(shè)計方法,以支持不同粒度的采集器配置,包括廠商、型號、設(shè)備、指標(biāo)等,從而達到采集指標(biāo)與采集指令可配置。采集模塊支持多協(xié)議以及節(jié)點粒度的采集反饋機制,并向上層業(yè)務(wù)模塊反饋異常。基于反饋信息自動調(diào)整采集策略自適應(yīng)采集數(shù)據(jù),通過采集日志監(jiān)控調(diào)試。
1相關(guān)術(shù)語
簡單網(wǎng)絡(luò)管理協(xié)議(SNMP):由一組網(wǎng)絡(luò)管理的標(biāo)準(zhǔn)組成,包含一個應(yīng)用層協(xié)議、數(shù)據(jù)庫模型和一組資源對象嘲。該協(xié)議能夠支持網(wǎng)絡(luò)管理系統(tǒng),用以監(jiān)測連接到網(wǎng)絡(luò)上的設(shè)備是否有任何引起管理上關(guān)注的情況。SNMP用于簡化網(wǎng)絡(luò)設(shè)備的管理,每個網(wǎng)絡(luò)設(shè)備上都有一個SNMP代理,該代理有兩個作用:負責(zé)響應(yīng)采集平臺的SNMP請求(被動型);將設(shè)備上的一些重要事件主動發(fā)動給目標(biāo)采集平臺(主動型)。
設(shè)計模式是對面向?qū)ο笤O(shè)計中反復(fù)出現(xiàn)的問題的解決方案。設(shè)計模式的出現(xiàn)和廣泛應(yīng)用為實現(xiàn)軟件高內(nèi)聚和低耦合提供了有效的方法。觀察者模式是一種能夠有效降低軟件模塊間耦合度的設(shè)計模式,它的采用將有利于設(shè)計者敏捷的構(gòu)建信息系統(tǒng)。
數(shù)據(jù)采集指由采集平臺(請求方)利用網(wǎng)絡(luò)技術(shù)(如SNMP協(xié)議)或爬蟲技術(shù)嘲從目標(biāo)數(shù)據(jù)源獲取數(shù)據(jù)的過程,采集過程涉及幾個關(guān)鍵要素,包括用于提供采集指令的配置與加載的配置器;表示采集的目標(biāo)設(shè)備(應(yīng)用)的采集節(jié)點;體現(xiàn)采集結(jié)點某一屬性信息的采集指標(biāo);采集組件與采集結(jié)點交互時所使用的通信協(xié)議;采集器與采集結(jié)點通信時所用的信令,即采集指令;采集器的采集動作結(jié)束時對外通告的消息事件;用于解析采集結(jié)果的數(shù)據(jù)處理對象的采集解析器。
2采集方案設(shè)計
2.1總體流程
采集組件主要有三部分內(nèi)容:采集規(guī)則配置、采集核心、采集結(jié)果解析。采集規(guī)則配置模塊的主要任務(wù)是加載已配置的采集規(guī)則,提供采集規(guī)則配置服務(wù),配置信息在下一采集周期即可生效。采集核心的主要任務(wù)是發(fā)起采集任務(wù)。采集任務(wù)包括:準(zhǔn)備待采集結(jié)點、采集、采集結(jié)束時現(xiàn)場清理;采集監(jiān)控功能提供線程級別日志、采集異常事件即時反饋給監(jiān)控模塊。采集結(jié)果解析模塊的主要任務(wù)是解析采集結(jié)果,將解析結(jié)果通告相關(guān)業(yè)務(wù)模塊。
采集主流程如圖2所示,各邏輯步驟具體描述如下:
Step1采集平臺的定時調(diào)度組件按時啟動采集任務(wù);
Step2采集器獲取待采集的目標(biāo)節(jié)點列表,并根據(jù)每個采集目標(biāo)節(jié)點的特征信息獲取相應(yīng)的采集指令;
Step3配置器根據(jù)指定的匹配規(guī)則返回相關(guān)指標(biāo)的采集指令列表;
Step4采集器根據(jù)Step3返回的采集指令列表,向目標(biāo)采集節(jié)點發(fā)起采集動作(發(fā)送請求);
Step5目標(biāo)采集節(jié)點收到請求后,進行內(nèi)部處理并返回響應(yīng)采集數(shù)據(jù)或返回異常信息;
Step6采集器需要根據(jù)收到的反饋信息自動調(diào)整采集策略。如果采集成功,則向采集到的數(shù)據(jù)送入中,同時提供采集上下文給采集器;如果返回異常信息,則直接向采集器提供采集上下文及異常信息;
Step7解析器從Ring Buffer中獲取采集回來的原始數(shù)據(jù),并進行相應(yīng)的解析處理。
2.2核心模塊設(shè)計
2.2.1采集規(guī)則設(shè)計
為了方便表述,我們采用UML方式描述。如圖3所示,每個采集結(jié)點目標(biāo)(collectTarget)必定與某個目標(biāo)規(guī)則(TargetRule)實例關(guān)聯(lián),否則采集工作線程不會對CollectTarget發(fā)起數(shù)據(jù)采集業(yè)務(wù)。TargetRule告訴采集工作線程使用哪個采集器獲取CollectTarget的哪些指標(biāo);同時也告訴采集結(jié)果處理線程使用哪個解析器處理采集結(jié)果。
在上述模型中,TargetRule\CollectorParserPair\IndicatorRule中都可以指定采集器與解析器等,這樣設(shè)計的目的是為了批量配置,但同時就存在配置值的優(yōu)先級問題。因此對于不同模型中的相同屬性值,本設(shè)計做如下優(yōu)先級約定:
IndicatorRule>CollectorParserPair>TargetRule
每個采集目標(biāo)節(jié)點CollectTarget都需要關(guān)聯(lián)一個采集規(guī)則TargetRule,這里就存在一個關(guān)聯(lián)(搜索)規(guī)則,而搜索規(guī)則設(shè)計是否合理將決定搜索效率的高低。本文采用完全匹配規(guī)則與最長匹配規(guī)則相結(jié)合的方式,默認使用完全匹配規(guī)則,可通過采集組件全局參數(shù)配置接口實時切換關(guān)聯(lián)(搜索)規(guī)則。
如果出現(xiàn)特殊場景,同一廠商同一類型但不同型號的設(shè)備可能采用不同的采集規(guī)則,因此采集規(guī)則配置模板也需要支持這種場景,解決方法有如下兩種。
(1)在預(yù)處理階段識別出這種特殊型號的設(shè)備,然后設(shè)置一個可唯一標(biāo)識的matchValue值,同時提供一個新的TargetRule配置信息即可。
(2)關(guān)聯(lián)(搜索)規(guī)則不使用“完全匹配規(guī)則”,而使用新的“最長匹配規(guī)則”:CollectTarget的matchValue可直接設(shè)置為systemOid或vendor.type.serials.model;TargetRule的matchPattem可取值為systemOid或vendor.type.serials,model的一部分全部;TargetRule集合中,TargetRule,matchPattem與CollectTarget.matchValue值匹配部分最長的TargetRule即為與CollectTarget匹配的最優(yōu)采集規(guī)則。
基于以上分析,本設(shè)計同時提供兩種關(guān)聯(lián)(搜索)規(guī)則:完全匹配規(guī)則、最長匹配規(guī)則。默認使用完全匹配規(guī)則,但可通過采集組件全局參數(shù)配置接口實時切換關(guān)聯(lián)(搜索)規(guī)則。
2.2.2并發(fā)采集機制設(shè)計
(1)采集主線程如圖4所示,包括如下關(guān)鍵步驟:
Stepl數(shù)據(jù)準(zhǔn)備:獲取待采集的目標(biāo)結(jié)點CollectTarget列表(設(shè)置mmchValue、定位TargetRule、創(chuàng)建相應(yīng)的CollectComext、創(chuàng)建并發(fā)計數(shù)器CountDownLatch);
Step2啟動采集線程:創(chuàng)建CollectWorker實例并提交至線程池,線程結(jié)束時并發(fā)計數(shù)器減1;
Step3并發(fā)采集全部結(jié)束或采集超時:取消未結(jié)束的采集線程、記錄采集日志。
(2)采集工作線程CollectWorker的工作線程如圖5所示,主要包括以下步驟:
Stepl檢測目標(biāo)結(jié)點的協(xié)議可達性,若協(xié)議不可達則生成采集異常事件上報給采集監(jiān)控模塊并結(jié)束線程;
Step2根據(jù)TargetRule的配置信息調(diào)用相應(yīng)的Collector實例獲取目標(biāo)結(jié)點的指標(biāo)數(shù)據(jù);
Step3記錄單結(jié)點采集耗時,基于觀察者模式將生成的CollectEvent實例分發(fā)給事件訂閱者;
Step4并發(fā)計數(shù)器減1,結(jié)束線程。
2.3主要數(shù)據(jù)結(jié)構(gòu)
2.3.1采集目標(biāo)信息配置表
采集目標(biāo)信息配置表用于設(shè)置信息采集(抓取)目標(biāo)節(jié)點的基本信息,如服務(wù)器IP,采集結(jié)果解析規(guī)則(正則表達式)等;本配置表是采集組件正常運行的基礎(chǔ)。
2.3.2采集指標(biāo)配置表
采集指標(biāo)配置表主要用于指明想從采集目標(biāo)節(jié)點上獲取哪些關(guān)鍵信息,我們把這些關(guān)鍵信息統(tǒng)稱為指標(biāo),如節(jié)點的內(nèi)存利用率、CPU利用率等實時狀態(tài)信息都可以作為采集指標(biāo)。
3總結(jié)
數(shù)據(jù)采集對采集平臺來說是一個重要的基礎(chǔ)功能模塊。本方案所設(shè)計的數(shù)據(jù)采集組件具備高性能、采集動態(tài)自適應(yīng)、通用性等特點,在各種類型的應(yīng)用系統(tǒng)中均可以使用。在不增加硬件資源的情況下,本方案提供的設(shè)計組件能夠在指定的采集周期內(nèi),順利甚至提前采集完成指定規(guī)模網(wǎng)絡(luò)設(shè)備的數(shù)據(jù),而且不會因為某網(wǎng)絡(luò)設(shè)備的問題而影響對其他設(shè)備的采集,數(shù)據(jù)采集器具備自動調(diào)整能力以適應(yīng)不同的采集環(huán)境,實現(xiàn)設(shè)備采集的高內(nèi)聚和低耦合。