◆孫路強 劉 磊 許 賀 柳艷麗
(天津市地震局 天津 300201)
天津測震臺網(wǎng)應(yīng)用系統(tǒng)負(fù)載分析與磁盤容量預(yù)測技術(shù)
◆孫路強 劉 磊 許 賀 柳艷麗
(天津市地震局 天津 300201)
天津市地震局通過“九五”“十五”數(shù)字地震觀測網(wǎng)絡(luò)的建設(shè),實現(xiàn)了測震臺站數(shù)據(jù)網(wǎng)絡(luò)化傳輸,波形數(shù)據(jù)實時存儲于AWS數(shù)據(jù)存儲服務(wù)器中,用戶通過人機交互系統(tǒng)從存儲數(shù)據(jù)中調(diào)取波形數(shù)據(jù)進行分析并提交分析結(jié)果。同時測震臺網(wǎng)集成地震速報、數(shù)據(jù)共享、系統(tǒng)監(jiān)控、數(shù)據(jù)分析等多項功能,業(yè)務(wù)系統(tǒng)龐大。因此任何一種資源負(fù)載過大,都可能會引起測震系統(tǒng)的性能下降甚至癱瘓。服務(wù)器、數(shù)據(jù)庫、中間件和存儲設(shè)備的運行狀態(tài)成為管理員急需關(guān)注的,及時了解當(dāng)前應(yīng)用系統(tǒng)的負(fù)載情況,采取相應(yīng)措施預(yù)防,降低測震系統(tǒng)運行風(fēng)險。
資源負(fù)載;系統(tǒng)癱瘓;運行風(fēng)險;測震系統(tǒng)
隨著計算機的相關(guān)軟件的開發(fā),數(shù)學(xué)知識不再是空談理論,時間序列分析主要是建立在數(shù)理統(tǒng)計基礎(chǔ)之上(李紅梅,2016),是一種動態(tài)數(shù)據(jù)處理的統(tǒng)計方法,它承認(rèn)事物發(fā)展的延續(xù)性,在考慮過去數(shù)據(jù)的情況下,同時考慮事物發(fā)展的隨機性,以預(yù)測未來事物的發(fā)展。
應(yīng)用系統(tǒng)的負(fù)載率可以通過對一段時間內(nèi)軟硬件性能的運行狀況進行綜合評分而獲得。通過對系統(tǒng)的當(dāng)前負(fù)載率與歷史平均負(fù)載率進行比較,獲得負(fù)載率的當(dāng)前趨勢。通過負(fù)載率以及負(fù)載趨勢可對系統(tǒng)進行負(fù)載分析。
作為存儲測震波形數(shù)據(jù)的數(shù)據(jù)存儲服務(wù)器,出現(xiàn)突發(fā)故障造成系統(tǒng)癱瘓的可能性很小,通常是一個逐漸變化的過程,由于系統(tǒng)長時間的使用,臺站實時數(shù)據(jù)不斷的寫入存儲服務(wù)器中,存儲空間逐漸變小,最終因存儲空間不足造成系統(tǒng)故障。因此,在不考慮人為因素的影響時,服務(wù)器存儲空間變化與時間是相關(guān)聯(lián)的,并且歷史存儲數(shù)據(jù)對未來存儲空間的發(fā)展存在影響,可利用時間序列分析方法預(yù)測服務(wù)器磁盤使用空間,并提醒測震臺網(wǎng)人員提前采取措施,保障測震系統(tǒng)正常運行。
應(yīng)用系統(tǒng)容量預(yù)測建模首先從數(shù)據(jù)源中選擇性抽取歷史數(shù)據(jù),并每天定時抽取數(shù)據(jù),對抽取的數(shù)據(jù)進行周期性分析以及數(shù)據(jù)清洗、數(shù)據(jù)變換等操作,形成模型數(shù)據(jù)。隨后采用時間序列分析方法對建模數(shù)據(jù)進行模型的構(gòu)建,利用模型預(yù)測服務(wù)器磁盤已使用情況(王巍,2016)。最后應(yīng)用模型預(yù)測服務(wù)器磁盤將要使用情況,通過預(yù)測到的磁盤使用大小與磁盤容量大小按照定制化標(biāo)準(zhǔn)進行判斷,將結(jié)果反饋給系統(tǒng)管理員,提示管理員需要注意磁盤的使用情況,建模過程見圖1。
1.1 數(shù)據(jù)抽取
磁盤使用情況信息存放在性能數(shù)據(jù)中,但監(jiān)控采集的性能數(shù)據(jù)中存在大量的其他屬性數(shù)據(jù),為了抽取出磁盤數(shù)據(jù),以采集指標(biāo)的時間為條件,對性能數(shù)據(jù)進行抽取。模型以時序分析法進行建模,為了建立合理的預(yù)測模型,需要分析數(shù)據(jù)的平穩(wěn)性。通過時序圖可以初步發(fā)現(xiàn)數(shù)據(jù)的平穩(wěn)性,針對測震業(yè)務(wù)服務(wù)器磁盤已使用大小,以天為單位進行周期性分析,時序分析如圖2。
圖1 測震系統(tǒng)數(shù)據(jù)存儲容量建模流程圖
圖2 /root/emc_data磁盤使用空間時序圖
1.2 數(shù)據(jù)預(yù)處理
在實際測震系統(tǒng)磁盤空間預(yù)測和負(fù)載分析的過程中,監(jiān)控系統(tǒng)會每天定時對磁盤的信息進行收集,一般情況下磁盤容量屬性是一個定值,因此磁盤原始數(shù)據(jù)中會存在磁盤容量的重復(fù)數(shù)據(jù),在數(shù)據(jù)清洗過程中,剔除磁盤容量的重復(fù)數(shù)據(jù)(黃大榮,2004;劉芳,2005),并且將所服務(wù)器的磁盤容量作為一個定值,方便模型預(yù)警。經(jīng)過數(shù)據(jù)清洗后磁盤相關(guān)屬性以記錄的形式存在數(shù)據(jù)中,每臺服務(wù)器的磁盤信息可以通過信息表中的 NAME、TARGET_ID、ENTITY三個屬性的值合并,構(gòu)建新的屬性,如表1、表2所示。
表1 原始性能表
表2 屬性變換后的性能表
合并屬性變換的Python代碼如下:
#屬性變換
import pandas as pd
#參數(shù)初始化
discfile='../emc_data/waveform/discsize.xls' #磁盤相關(guān)屬性記錄
transformeddata='../tmp/discsize_process.xls' #預(yù)處理后磁盤信息記錄
data=pd.read_excel(discfile)
data=data[data['DISGET']==164].copy() #只保留DISGET為164的數(shù)據(jù)
data_group=data.groupby('COLLECTTIME') #以時間分組
defattr_trans(x): #屬性變換函數(shù)
result=pd.Series(index=['SYSTEM' ,'CZTW_AWS:164:rootemc_datawaveform','COLLECTTIME'])
result['SYSTEM']=x['SYSTEM'].iloc[0]
result['COLLECTTIME']=X['COLLECTTIME'].ILOC[0]
result['CZTW_AWS:164:rootemc_datawaveform']=x['VALUE'].il oc[0]
return result
data_processed=data_group.apply(attr_trans) #分組處理
data_processed.to_excel(transformeddata,index=False)
1.3 模型構(gòu)建
通過預(yù)處理后的數(shù)據(jù)可分為兩部分,包括用于建模的樣本數(shù)據(jù)和模型驗證數(shù)據(jù),在構(gòu)建磁盤空間預(yù)測模型之前,首先對時間序列值平穩(wěn)性進行檢測,對不平穩(wěn)的模型值序列進行差分處理直至數(shù)據(jù)平穩(wěn)。對于平穩(wěn)數(shù)據(jù)再次進行白噪聲檢驗,用于判斷序列中的有用信息是否已被提取完畢,并只剩下隨機干擾數(shù)據(jù),通過白噪聲檢驗后,確定測震數(shù)據(jù)存儲磁盤空間預(yù)測模型為 ARIMA模型(葉豐艷,2009;孫志林,2012),利用模型識別方法進一步確認(rèn)該模型的p,q參數(shù),磁盤空間預(yù)測建模見圖3。
圖3 磁盤空間預(yù)測建模圖
為了確定原始數(shù)據(jù)序列中沒有隨機趨勢或確定趨勢,需要對數(shù)據(jù)進行平穩(wěn)性檢驗,從而避免出現(xiàn)“偽回歸”現(xiàn)象。同時需要對序列進行白噪聲檢驗,用于確認(rèn)序列中有用信息是否已被提取完畢,如果序列檢驗為白噪聲序列,就說明序列中的有用信息已被提取完畢,剩余全為隨機擾動,無法進行預(yù)測和使用。
為了評價時序預(yù)測模型效果的好壞,采用3個衡量模型預(yù)測精度的統(tǒng)計量指標(biāo):平均絕對誤差、均方根誤差和平均絕對百分誤差。這三個指標(biāo)從不同側(cè)面反映了算法的預(yù)測精度。選擇建模數(shù)據(jù)的后5行記錄作為實際值,將預(yù)測值與實際值進行誤差分析,模型評價代碼如下:
import pandas as pd
discfile=’ ../tmp/discsize_process.xls’
data=pd.read_excel(discfile)
data=data.iloc[:len(data)-5] #不使用最后5個數(shù)據(jù)
from statsmodels.tsa.stattools import adfuller as ADF #利用ADF方法進行平穩(wěn)性檢測
diff=0
adf=ADF(data['CZTW_AWS:164:rootemc_datawaveform'])
while adf[1]>=0.05: #p值小于0.05認(rèn)為平穩(wěn)
diff=diff+1
adf=ADF(data['CZTW_AWS:164:rootemc_datawaveform'].diff(d iff).dropna())
使用建立的ARIMA時序模型預(yù)測存儲服務(wù)器磁盤空間時,首先完成定時從AWS數(shù)據(jù)存儲服務(wù)器上抽取數(shù)據(jù),并對抽取數(shù)據(jù)進行預(yù)處理,將處理后的數(shù)據(jù)放到模型的初始數(shù)據(jù)中,作為該模型的輸入數(shù)據(jù),時序模型通過調(diào)用初始數(shù)據(jù)預(yù)測存儲服務(wù)器磁盤未來一周內(nèi)空間使用情況,從而判斷未來磁盤使用率,當(dāng)使用率達(dá)到預(yù)先設(shè)置的閾值時,就會以短信方式將報警信息發(fā)送給測震臺網(wǎng)系統(tǒng)維護人員。同時可根據(jù)需要將預(yù)測得到的空間使用率對應(yīng)不同的預(yù)警等級通知維護人員,采取不同的處理措施。
由于該系統(tǒng)基于歷史波形數(shù)據(jù)進行建模,隨著時間變化,每天定時將新增數(shù)據(jù)添加到初始建模數(shù)據(jù)中,通過數(shù)據(jù)初始分析發(fā)現(xiàn)磁盤空間日變化量較小,因此每半月對模型進行調(diào)整,減少預(yù)測結(jié)果誤差。
天津市測震臺網(wǎng)采用ARIMA時序模型對AWS存儲服務(wù)器磁盤進行監(jiān)控預(yù)警的同時,利用該模型對磁盤負(fù)載情況進行分析,統(tǒng)計AWS存儲目錄下徐莊子地震臺全天小時數(shù)據(jù)量變化,并與該臺站全天各時段的臺基噪聲 RMS統(tǒng)計情況進行對比,通過對比發(fā)現(xiàn)臺站波形數(shù)據(jù)量與臺基噪聲RMS值變化趨勢相對一致,因此可將臺站觀測數(shù)據(jù)變化情況作為臺基噪聲評估的一項指標(biāo),徐莊子臺基噪聲與數(shù)據(jù)量變化對比見圖4。
圖4 基于Python時序分析法臺站數(shù)據(jù)量變化與臺站臺基噪聲對比
通過系統(tǒng)負(fù)載分析與磁盤容量預(yù)測程序的應(yīng)用,天津測震臺網(wǎng)系統(tǒng)運行管理工作更加有序,管理員通過測震系統(tǒng)性能監(jiān)控,對系統(tǒng)整體運行情況進行判斷,準(zhǔn)確預(yù)測系統(tǒng)性能發(fā)展趨勢,向管理員提供信息服務(wù),并作出相關(guān)措施來解決問題。同時將數(shù)據(jù)量增長預(yù)測應(yīng)用到測震臺站噪聲評估中,提供臺站技術(shù)系統(tǒng)問題預(yù)警功能。
[1]李紅梅,唐嵐.基于Python的交通流數(shù)據(jù)清洗[J].電子技術(shù)與軟件工程,2016.
[2]王巍.基于ARIMA模型的安徽省城鎮(zhèn)化水平預(yù)測研究[J].赤峰學(xué)院學(xué)報:自然科學(xué)版.
[3]黃大榮,李勁.基于粗糙集理論的數(shù)據(jù)清洗模型[J].自動化技術(shù)與應(yīng)用,2004.
[4]劉芳,何飛.基于聚類分析技術(shù)的數(shù)據(jù)清洗研究[J].計算機工程與科學(xué),2005.
[5]葉豐艷.ARIMA模型在門診季節(jié)性時序預(yù)測中的應(yīng)用[J].中國醫(yī)院統(tǒng)計,2009.
[6]孫志林,盧雅倩等.港口吞吐量的馬氏鏈-時序分析預(yù)測[J].浙江大學(xué)學(xué)報:工學(xué)版,2012.
由中國地震局監(jiān)測、預(yù)測、科研“三結(jié)合”課題(CEA-JC/3JH-160201)資助。