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