◆孫路強 劉 磊 許 賀 柳艷麗
(天津市地震局 天津 300201)
天津測震臺網應用系統負載分析與磁盤容量預測技術
◆孫路強 劉 磊 許 賀 柳艷麗
(天津市地震局 天津 300201)
天津市地震局通過“九五”“十五”數字地震觀測網絡的建設,實現了測震臺站數據網絡化傳輸,波形數據實時存儲于AWS數據存儲服務器中,用戶通過人機交互系統從存儲數據中調取波形數據進行分析并提交分析結果。同時測震臺網集成地震速報、數據共享、系統監控、數據分析等多項功能,業務系統龐大。因此任何一種資源負載過大,都可能會引起測震系統的性能下降甚至癱瘓。服務器、數據庫、中間件和存儲設備的運行狀態成為管理員急需關注的,及時了解當前應用系統的負載情況,采取相應措施預防,降低測震系統運行風險。
資源負載;系統癱瘓;運行風險;測震系統
隨著計算機的相關軟件的開發,數學知識不再是空談理論,時間序列分析主要是建立在數理統計基礎之上(李紅梅,2016),是一種動態數據處理的統計方法,它承認事物發展的延續性,在考慮過去數據的情況下,同時考慮事物發展的隨機性,以預測未來事物的發展。
應用系統的負載率可以通過對一段時間內軟硬件性能的運行狀況進行綜合評分而獲得。通過對系統的當前負載率與歷史平均負載率進行比較,獲得負載率的當前趨勢。通過負載率以及負載趨勢可對系統進行負載分析。
作為存儲測震波形數據的數據存儲服務器,出現突發故障造成系統癱瘓的可能性很小,通常是一個逐漸變化的過程,由于系統長時間的使用,臺站實時數據不斷的寫入存儲服務器中,存儲空間逐漸變小,最終因存儲空間不足造成系統故障。因此,在不考慮人為因素的影響時,服務器存儲空間變化與時間是相關聯的,并且歷史存儲數據對未來存儲空間的發展存在影響,可利用時間序列分析方法預測服務器磁盤使用空間,并提醒測震臺網人員提前采取措施,保障測震系統正常運行。
應用系統容量預測建模首先從數據源中選擇性抽取歷史數據,并每天定時抽取數據,對抽取的數據進行周期性分析以及數據清洗、數據變換等操作,形成模型數據。隨后采用時間序列分析方法對建模數據進行模型的構建,利用模型預測服務器磁盤已使用情況(王巍,2016)。最后應用模型預測服務器磁盤將要使用情況,通過預測到的磁盤使用大小與磁盤容量大小按照定制化標準進行判斷,將結果反饋給系統管理員,提示管理員需要注意磁盤的使用情況,建模過程見圖1。
1.1 數據抽取
磁盤使用情況信息存放在性能數據中,但監控采集的性能數據中存在大量的其他屬性數據,為了抽取出磁盤數據,以采集指標的時間為條件,對性能數據進行抽取。模型以時序分析法進行建模,為了建立合理的預測模型,需要分析數據的平穩性。通過時序圖可以初步發現數據的平穩性,針對測震業務服務器磁盤已使用大小,以天為單位進行周期性分析,時序分析如圖2。

圖1 測震系統數據存儲容量建模流程圖

圖2 /root/emc_data磁盤使用空間時序圖
1.2 數據預處理
在實際測震系統磁盤空間預測和負載分析的過程中,監控系統會每天定時對磁盤的信息進行收集,一般情況下磁盤容量屬性是一個定值,因此磁盤原始數據中會存在磁盤容量的重復數據,在數據清洗過程中,剔除磁盤容量的重復數據(黃大榮,2004;劉芳,2005),并且將所服務器的磁盤容量作為一個定值,方便模型預警。經過數據清洗后磁盤相關屬性以記錄的形式存在數據中,每臺服務器的磁盤信息可以通過信息表中的 NAME、TARGET_ID、ENTITY三個屬性的值合并,構建新的屬性,如表1、表2所示。

表1 原始性能表

表2 屬性變換后的性能表
合并屬性變換的Python代碼如下:
#屬性變換
import pandas as pd
#參數初始化
discfile='../emc_data/waveform/discsize.xls' #磁盤相關屬性記錄
transformeddata='../tmp/discsize_process.xls' #預處理后磁盤信息記錄
data=pd.read_excel(discfile)
data=data[data['DISGET']==164].copy() #只保留DISGET為164的數據
data_group=data.groupby('COLLECTTIME') #以時間分組
defattr_trans(x): #屬性變換函數
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 模型構建
通過預處理后的數據可分為兩部分,包括用于建模的樣本數據和模型驗證數據,在構建磁盤空間預測模型之前,首先對時間序列值平穩性進行檢測,對不平穩的模型值序列進行差分處理直至數據平穩。對于平穩數據再次進行白噪聲檢驗,用于判斷序列中的有用信息是否已被提取完畢,并只剩下隨機干擾數據,通過白噪聲檢驗后,確定測震數據存儲磁盤空間預測模型為 ARIMA模型(葉豐艷,2009;孫志林,2012),利用模型識別方法進一步確認該模型的p,q參數,磁盤空間預測建模見圖3。

圖3 磁盤空間預測建模圖
為了確定原始數據序列中沒有隨機趨勢或確定趨勢,需要對數據進行平穩性檢驗,從而避免出現“偽回歸”現象。同時需要對序列進行白噪聲檢驗,用于確認序列中有用信息是否已被提取完畢,如果序列檢驗為白噪聲序列,就說明序列中的有用信息已被提取完畢,剩余全為隨機擾動,無法進行預測和使用。
為了評價時序預測模型效果的好壞,采用3個衡量模型預測精度的統計量指標:平均絕對誤差、均方根誤差和平均絕對百分誤差。這三個指標從不同側面反映了算法的預測精度。選擇建模數據的后5行記錄作為實際值,將預測值與實際值進行誤差分析,模型評價代碼如下:
import pandas as pd
discfile=’ ../tmp/discsize_process.xls’
data=pd.read_excel(discfile)
data=data.iloc[:len(data)-5] #不使用最后5個數據
from statsmodels.tsa.stattools import adfuller as ADF #利用ADF方法進行平穩性檢測
diff=0
adf=ADF(data['CZTW_AWS:164:rootemc_datawaveform'])
while adf[1]>=0.05: #p值小于0.05認為平穩
diff=diff+1
adf=ADF(data['CZTW_AWS:164:rootemc_datawaveform'].diff(d iff).dropna())
使用建立的ARIMA時序模型預測存儲服務器磁盤空間時,首先完成定時從AWS數據存儲服務器上抽取數據,并對抽取數據進行預處理,將處理后的數據放到模型的初始數據中,作為該模型的輸入數據,時序模型通過調用初始數據預測存儲服務器磁盤未來一周內空間使用情況,從而判斷未來磁盤使用率,當使用率達到預先設置的閾值時,就會以短信方式將報警信息發送給測震臺網系統維護人員。同時可根據需要將預測得到的空間使用率對應不同的預警等級通知維護人員,采取不同的處理措施。
由于該系統基于歷史波形數據進行建模,隨著時間變化,每天定時將新增數據添加到初始建模數據中,通過數據初始分析發現磁盤空間日變化量較小,因此每半月對模型進行調整,減少預測結果誤差。
天津市測震臺網采用ARIMA時序模型對AWS存儲服務器磁盤進行監控預警的同時,利用該模型對磁盤負載情況進行分析,統計AWS存儲目錄下徐莊子地震臺全天小時數據量變化,并與該臺站全天各時段的臺基噪聲 RMS統計情況進行對比,通過對比發現臺站波形數據量與臺基噪聲RMS值變化趨勢相對一致,因此可將臺站觀測數據變化情況作為臺基噪聲評估的一項指標,徐莊子臺基噪聲與數據量變化對比見圖4。

圖4 基于Python時序分析法臺站數據量變化與臺站臺基噪聲對比
通過系統負載分析與磁盤容量預測程序的應用,天津測震臺網系統運行管理工作更加有序,管理員通過測震系統性能監控,對系統整體運行情況進行判斷,準確預測系統性能發展趨勢,向管理員提供信息服務,并作出相關措施來解決問題。同時將數據量增長預測應用到測震臺站噪聲評估中,提供臺站技術系統問題預警功能。
[1]李紅梅,唐嵐.基于Python的交通流數據清洗[J].電子技術與軟件工程,2016.
[2]王巍.基于ARIMA模型的安徽省城鎮化水平預測研究[J].赤峰學院學報:自然科學版.
[3]黃大榮,李勁.基于粗糙集理論的數據清洗模型[J].自動化技術與應用,2004.
[4]劉芳,何飛.基于聚類分析技術的數據清洗研究[J].計算機工程與科學,2005.
[5]葉豐艷.ARIMA模型在門診季節性時序預測中的應用[J].中國醫院統計,2009.
[6]孫志林,盧雅倩等.港口吞吐量的馬氏鏈-時序分析預測[J].浙江大學學報:工學版,2012.
由中國地震局監測、預測、科研“三結合”課題(CEA-JC/3JH-160201)資助。