智能預測之磁碟空間使用率預測
背景與目標
存儲設備中磁碟容量是伺服器能夠可靠運行的重要保障。如何避免應用系統中出現存儲容量耗盡的情況而導致應用系統負載率過高,最終引發系統故障是一個比較棘手的問題。
目前,工業界普遍採用被動容錯機制,為磁碟容量設置一個閾值來保證系統的可靠性:即如果超過閾值,則會發生報警來讓人工干預以降低磁碟容量。如果系統管理員不及時進行相應的處理,系統很容易出現故障,從而導致用戶無法訪問系統,嚴重影響企業的利益。
本文提出一種主動的預測與處理機制,提前對磁碟使用率進行預測,發現使用率比較高的機器。但是只有預測是遠遠不夠的,如果能夠提前自動處理報警,將會最大程度減少報警的次數。我們的機制分為兩部分,一部分是預測,另一部分是處理,下圖是我們系統的框架圖:
智能預測
歷史數據分析
應用系統出現故障通常不是突然癱瘓造成的,而是一個漸變的過程。例如。系統長時間運行,數據會持續寫入存儲,存儲空間逐漸變少,最終磁碟被寫滿而導致系統故障。由此可見,在不考慮人為因素的影響時,**存儲空間隨時間變化存在很強的關聯性,且歷史數據對未來的發展存在一定的影響**。所以可以採用**時間序列分析法**對磁碟容量進行預測分析。
模型使用
本節將以分析磁碟容量時序介紹時間序列模型如何使用。
我們使用以下的步驟來建立一個時間序列模型:
獲取數據
我們採集過去7天的數據,採集間隔是1小時。使用下面代碼得到歷史的數據。
創建時間序列
為數據建立索引,轉換為pandas能夠識別的時間序列。
缺失值處理
使用均值來補齊缺失值。
歷史趨勢
查看磁碟容量過去一周的數據曲線:
平穩性檢測
觀察4中的圖,可以看出該序列不平穩,我們需要使用差分的方法來使該序列變為平穩序列。
可以看出,經過一階差分後,數據已經平穩了,可以進行ARMA模型了。
通過肉眼觀察每個圖像顯然不是平穩性檢測最好的方法,我們可以使用單位根檢測(ADF)進行平穩性檢測。
平穩性檢測代碼:
白雜訊檢驗
為了驗證系列中是否還有有用的信息,是否已經被提取完畢,需要對序列進行白雜訊檢驗。如果為白雜訊,則有用的信息已經被提取完畢,剩下的隨機擾動,無法進行預測和使用。
本節使用LB統計量的方法進行白雜訊檢驗,代碼如下:
確定p和q的值,建立ARIMA(p,1,q)模型
第一種方法:人工識別
根據自相關圖和偏自相關圖來確定p和q的值。
所以p為0,q為0
第二種方法:相對最優模型識別
計算ARIMA(p,q)。當p和q均小於一定值的所有組合的BIC信息量,去其中BIC信息量達到最小的模型階數。
確定p和q的值:
從7中獲得了p,q值,從5中獲得d的值後我們就可以建立ARIMA模型了。
預測未來趨勢
預測未來一段時間的值。
預測結果和歷史數據:
下面我們通過下面的代碼畫出歷史數據和預測數據的圖:
下面是圖像:
可以看出預測結果能夠真實的反映出歷史數據的走勢,能夠真實的預測出未來的數據值。
有人可能會問這個系統可能依賴於預測模型的準確率。為了驗證模型的準確率,我們提出來兩個概念來說明效果:
- 預測準確率:預測準確率=預測報警且具有報警趨勢的機器數/預測報警的機器數
- 報警減少率:預測覆蓋率=預測報警且真正報警的機器數/報警的機器數
我們對線上20000+台機器未來24小時的走勢進行預測,跟蹤了將近一個月的預測結果。可以發現我們的模型預測準確率能夠達到100%,報警減少率能夠達到70%左右,這說明我們的模型能夠獲得比較好的效果。
智能處理
接下來將重點介紹在預測磁碟使用率將要達到閾值後,我們如何自動處理的過程。用戶可以根據自己的意願選擇處理類型:一種是自動處理,一種是通知郵件。
如果是自動處理類型,我們會清理100%可以確定刪除的日誌文件,比如allweb文件以及一些歸檔的日誌文件。雖然我們有一定的目錄規範和定期的日誌輪轉,但是因為有些程序編寫的不規範,業務訪問量的增長,還是會有磁碟被寫滿的情況,所以單純依靠自動清理會有一定的風險,所以我們還有一種是通知郵件,我們會定期將掃描出來的佔用空間比較大的文件信息發送給用戶,由用戶自己去處理。
上面介紹的磁碟智能預測與處理機制已經在我們線上進行使用,並取得了比較好的效果。通過這種預測與處理機制,能夠儘可能減少磁碟報警,真正解放人力資源。
推薦閱讀:
※面壁者系列:線性回歸
※為什麼我們需要傳統方法?
※DL 學習 - 認識 RNN
※機器學習-模型選擇與評價
※鋼鐵直男的救世主來了!讓AI告訴你妹子到底是啥意思