劉永芬 陳志安 賴曉燕



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