張繼棟+許鵬
摘要:數(shù)據(jù)的采集是起點(diǎn)而非終點(diǎn),如何對(duì)采集到的數(shù)據(jù)進(jìn)一步加工處理,并且能夠幫助我們改善工作和生活才是最終目標(biāo),數(shù)據(jù)改變?nèi)藗兊臎Q策方式,數(shù)據(jù)改善人類自身和環(huán)境?,F(xiàn)在的任何平臺(tái)不是無(wú)謂的宣傳和夸大而是讓數(shù)據(jù)說(shuō)話。
關(guān)鍵詞:架構(gòu);設(shè)計(jì);采集系統(tǒng);安全;可擴(kuò)展
一、引言
隨著大數(shù)據(jù)商業(yè)化運(yùn)營(yíng)的發(fā)展,迫切需要實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)化的采集、管理等,所以設(shè)計(jì)一套可以實(shí)現(xiàn)對(duì)用戶等大數(shù)據(jù)的實(shí)時(shí)采集、監(jiān)控系統(tǒng),可以有效提高管理的效率。所以本文以大數(shù)據(jù)時(shí)代的用電數(shù)據(jù)采集系統(tǒng)為例來(lái)介紹,它集先進(jìn)性、精確性和實(shí)時(shí)性于一體,完全可以滿足用戶的不同需求。
二、系統(tǒng)的功能與特點(diǎn)
(一)開放性
設(shè)計(jì)時(shí)采用基于國(guó)際標(biāo)準(zhǔn)的系統(tǒng)平臺(tái)和商用數(shù)據(jù)庫(kù),能支持與相關(guān)的數(shù)據(jù)通信和數(shù)據(jù)庫(kù)訪問(wèn),向這些系統(tǒng)提供計(jì)量(計(jì)費(fèi))數(shù)據(jù)。分層開放式跨平臺(tái)跨數(shù)據(jù)庫(kù)設(shè)計(jì),可以按照電力系統(tǒng)關(guān)口表和大用戶分別管理,采集的電量數(shù)據(jù)和負(fù)控?cái)?shù)據(jù)直接傳輸?shù)綒v史數(shù)據(jù)庫(kù),通過(guò)對(duì)于所有計(jì)量點(diǎn)和監(jiān)控點(diǎn)的相關(guān)數(shù)據(jù)定義、管理,與采集數(shù)據(jù)建立相應(yīng)的對(duì)應(yīng)關(guān)系,實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)存、計(jì)算、處理,并提供數(shù)據(jù)訪問(wèn)服務(wù)。
數(shù)據(jù)庫(kù)管理模塊可采用面向電網(wǎng)的定義方式,使其具備對(duì)電網(wǎng)結(jié)構(gòu)以及電網(wǎng)相關(guān)設(shè)備的表述能力,保證重要關(guān)口表數(shù)據(jù)的準(zhǔn)確性。數(shù)據(jù)庫(kù)可采用雙服務(wù)器集群機(jī)制,保證數(shù)據(jù)高可用性。
(二)靈活性
該系統(tǒng)可支持多種規(guī)約和通信手段,以支持多種電能表的接入,適應(yīng)網(wǎng)絡(luò)技術(shù)的發(fā)展;可支持多種數(shù)據(jù)采集方式,接收不同來(lái)源的數(shù)據(jù),以支持電力市場(chǎng)運(yùn)營(yíng)結(jié)算所需的大量的、復(fù)雜的數(shù)據(jù)采集和處理要求。
(三)方便性
支持客戶服務(wù)器,具有友好的用戶界面,方便的可編程,可維護(hù)性能。用戶可分級(jí)對(duì)時(shí)段、處理方式、運(yùn)算輸出等數(shù)據(jù)參數(shù)進(jìn)行定義,并能方便的查詢、處理、分析和結(jié)算。所提供的操作系統(tǒng),窗口環(huán)境、高級(jí)語(yǔ)言、作圖軟件和計(jì)算機(jī)數(shù)據(jù)通信軟件應(yīng)符合國(guó)際標(biāo)準(zhǔn)或工業(yè)標(biāo)準(zhǔn)。用戶界面是國(guó)際流行的WINDOWS風(fēng)格,具有漢字顯示和打印功能,使用戶操作簡(jiǎn)便快捷。
(四)可擴(kuò)展性
系統(tǒng)采用模塊化設(shè)計(jì)方式,充分考慮了不同用戶的不同需求,或者同一用戶今后規(guī)模及功能擴(kuò)展的需要。隨變用戶規(guī)模和系統(tǒng)的擴(kuò)大、采集點(diǎn)的增多,通過(guò)增加系統(tǒng)廠站數(shù)目和采集點(diǎn)數(shù)目就可完成,不影響系統(tǒng)的可靠性和穩(wěn)定性。
系統(tǒng)具備硬、軟件的擴(kuò)充功能,支持系統(tǒng)結(jié)構(gòu)的擴(kuò)展和功能的升級(jí),系統(tǒng)所提供的支持軟件能支持用戶進(jìn)一步開發(fā)應(yīng)用軟件,以期實(shí)現(xiàn)原系統(tǒng)的增值。
(五)安全性
系統(tǒng)具備完善的安全保密措施和用戶權(quán)限管理功能,擁有自己的用戶體系,只有系統(tǒng)管理員才可增加和刪除用戶、分配用戶權(quán)限,使用客戶端或?yàn)g覽器登陸的用戶必須正確輸入用戶名和相應(yīng)的密碼才能正確進(jìn)入系統(tǒng)。系統(tǒng)確保作到嚴(yán)格防止非法入侵和嚴(yán)禁對(duì)原始數(shù)據(jù)的修改,計(jì)算數(shù)據(jù)的修改必須在規(guī)定的權(quán)限范圍內(nèi)進(jìn)行,并作上永久標(biāo)志。
(六)同步性
系統(tǒng)以標(biāo)準(zhǔn)GPS時(shí)鐘為基準(zhǔn),并實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)時(shí)功能,以保證各個(gè)采集點(diǎn)/計(jì)量點(diǎn)基于相同時(shí)間基準(zhǔn)完成對(duì)電能量的計(jì)量及電能量數(shù)據(jù)帶時(shí)標(biāo)的存儲(chǔ)。
三、采集系統(tǒng)的設(shè)計(jì)
根據(jù)需求靈活組成系統(tǒng),有較大的選擇余地。以最簡(jiǎn)單的模式來(lái)介紹系統(tǒng)的搭建。在這里僅選用一臺(tái)計(jì)算機(jī)來(lái)實(shí)現(xiàn)所有的功能。監(jiān)控?cái)?shù)據(jù)是標(biāo)準(zhǔn)的時(shí)間序列數(shù)據(jù),傳統(tǒng)的監(jiān)控系統(tǒng)中,一條監(jiān)控?cái)?shù)據(jù)一般是由監(jiān)控指標(biāo)、時(shí)間戳和值組成,比如有10臺(tái)服務(wù)器的內(nèi)存使用率需要監(jiān)控,一個(gè)時(shí)間周期內(nèi)映射到系統(tǒng)中可能就是10條mem.userd.percent 時(shí)間值這種格式的數(shù)據(jù),然后分別和對(duì)應(yīng)的主機(jī)關(guān)聯(lián)。
這樣做的缺點(diǎn)是,如果某一時(shí)刻想統(tǒng)計(jì)某個(gè)產(chǎn)品線、業(yè)務(wù)系統(tǒng)、集群、數(shù)據(jù)中心的某些監(jiān)控指標(biāo)的使用情況,可能就不太好實(shí)現(xiàn)。所以需要在傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)上增加一個(gè)字段,用來(lái)存儲(chǔ)自定義的數(shù)據(jù)標(biāo)簽。為此,調(diào)研當(dāng)前主流的時(shí)序數(shù)據(jù)庫(kù),如RRDtool、Graphite、InfluxDB、openTSDB等,其中RRDtool和Graphite 只能支能持時(shí)間維度和值維度,Cacti和Zabbix就是基于RRDtool來(lái)繪圖展示的。而InfluxDB和openTSDB都能滿足需求:其中InfluxDB版本比較低,而且每次更新變動(dòng)都比較大;而openTSDB則在企業(yè)中有大量的成功案例。所以在數(shù)據(jù)結(jié)構(gòu)的定義上,可以借鑒openTSDB的數(shù)據(jù)結(jié)構(gòu),每條數(shù)據(jù)由metric、timestamp、value、tags組成,用tags鍵值對(duì)來(lái)標(biāo)識(shí)不同的屬性。
四、三種數(shù)據(jù)類型
既然有了上面的數(shù)據(jù)結(jié)構(gòu)的定義,當(dāng)然就會(huì)有數(shù)據(jù)類型,不同的數(shù)據(jù)可能代表的意義都不一樣,OWL中采用了RRDtool中比較常用的三種數(shù)據(jù)類型,分別為GAUGE、COUNTER、DRIVER。
GAUGE類型是一個(gè)計(jì)量器,可以理解最終存儲(chǔ)的數(shù)據(jù)就是采集到的數(shù)據(jù),比如服務(wù)器上的磁盤使用率,內(nèi)存使用率,cpu使用率,硬件的溫度,風(fēng)扇的轉(zhuǎn)速,業(yè)務(wù)系統(tǒng)中的訪問(wèn)時(shí)間等等,這種數(shù)據(jù)會(huì)隨時(shí)間的變化而變化,并且沒(méi)有什么規(guī)律可言。
COUNTER類型是一個(gè)計(jì)數(shù)器,該類型一般用于記錄連續(xù)增長(zhǎng)的記錄,例如操作系統(tǒng)中的網(wǎng)卡流量,磁盤的io,交換機(jī)接口的流量,業(yè)務(wù)的吞吐量等等,COUNTER類型會(huì)假設(shè)計(jì)數(shù)器的值永遠(yuǎn)不會(huì)減小,除非達(dá)到數(shù)據(jù)類型的最大值產(chǎn)生溢出,OWL客戶端會(huì)存儲(chǔ)最近一次的值和上一次的值,每次上報(bào)的過(guò)程中會(huì)取每秒的速率發(fā)送到repeater,當(dāng)計(jì)數(shù)器溢出,agent會(huì)自動(dòng)對(duì)數(shù)據(jù)進(jìn)行補(bǔ)值,否則可能會(huì)因?yàn)橐绯霎a(chǎn)生一個(gè)巨大的錯(cuò)誤值導(dǎo)致錯(cuò)誤告警。
DRIVER類型用于表示單位時(shí)間內(nèi)的數(shù)據(jù)變化,簡(jiǎn)單來(lái)說(shuō)就是用來(lái)表示當(dāng)前值和上一次值之間的差值,在監(jiān)控領(lǐng)域中的實(shí)際應(yīng)用場(chǎng)景可能不是很多。agent每次采集都會(huì)判斷數(shù)據(jù)類型,并應(yīng)用對(duì)應(yīng)的運(yùn)算規(guī)則?;谠撓到y(tǒng),可以在上層構(gòu)建報(bào)警系統(tǒng),統(tǒng)計(jì)分析系統(tǒng),報(bào)表系統(tǒng)等等。其中,報(bào)警服務(wù)在上個(gè)版本中是基于Python 的Celery去實(shí)現(xiàn)的,由于依賴眾多模塊,安裝部署復(fù)雜,在開源過(guò)程中大部分反饋的問(wèn)題都是在該模塊的部署上。因此,在該版本中使用go語(yǔ)言對(duì)重構(gòu)了報(bào)警服務(wù),分為控制器和報(bào)警邏輯處理模塊:其中控制器負(fù)責(zé)報(bào)警策略生成和報(bào)警結(jié)果處理;邏輯處理模塊負(fù)責(zé)從控制器獲取策略并去OpenTSDB讀取數(shù)據(jù)進(jìn)行對(duì)比,產(chǎn)生的結(jié)果返回給控制器處理。
五、結(jié)語(yǔ)
監(jiān)控系統(tǒng)是整個(gè)IT架構(gòu)中的重中之重,小到故障排查、問(wèn)題定位,大到業(yè)務(wù)預(yù)測(cè)、運(yùn)營(yíng)管理,都離不開監(jiān)控系統(tǒng),可以說(shuō)一個(gè)穩(wěn)定、健康的IT架構(gòu)中必然會(huì)有一個(gè)可信賴的監(jiān)控系統(tǒng),而一個(gè)監(jiān)控系統(tǒng)的基石則是一個(gè)穩(wěn)定而健壯的數(shù)據(jù)采集系統(tǒng)。endprint