田肖
摘 要 隨著云計算的快速發展,全球服務器規模持續擴大,運維難度、成本不斷提高。如何降低成本、確保服務的可靠性是所有云服務商所必須考慮的問題。監控系統對于提高云平臺的穩定性、提高服務質量、降低云平臺的運維成本發揮著非常關鍵的作用。因此,研究和實現云平臺的監控系統具有非常重要的意義。本文在研究當前多種監控系統解決方案的基礎上,設計了一種具有流量高峰預警機制的監控系統。
【關鍵詞】云計算 監控系統 穩定性 流量預警
1 引言
目前,云平臺監控系統在國內外有很多的開源解決方案,比如:Zenoss、collected、Zabbix、Nagios等。但是,它們都存在不同方面的缺點,無法滿足實際生產環境中多樣化的需求。對于中小規模的企業來說,他們的業務規模相對較小、需求比較單一、業務擴展的也相緩慢,為了降低開發成本并且迅速地將監控系統投入使用,開源的系統監控解決方案是一個很好的選擇。然而,對于很多企業來說,他們的需求變化較大、業務也比較復雜、集群擴展很快,這個時候開源產品就會顯得很乏力。針對這些問題,本文設計了一種具有流量高峰預警機制的監控系統。監控系統從功能上來看,主要分為四個模塊:數據采集模塊、數據轉發模塊、數據存儲模塊、報警和預警模塊。
2 數據采集模塊
數據采集模塊是監控系統最基礎的模塊,它負責監控數據的采集,并且把采集到的數據推送給數據轉發組件。在監控系統中,不同公司或者業務對于監控目標的需求存在一些差別,但是大部分監控目標是相同的,比如監控CPU和內存的使用率等。如果默認監控所有的監控目標(比如監聽所有的端口,實際上大部分端口并沒有開啟), 會造成系統資源浪費。如果默認不監控任何目標,則需要運維人員去做大量配置,浪費人力。
為了解決上述問題,本文將監控數據采集目標進行分類,分為:基本監控數據采集目標和特殊監控數據采集目標?;颈O控數據采集目標,本系統默認全部采集;特殊監控數據采集目標,則需要運維人員手動配置。這樣既節約了系統資源又節省了人力。
3 數據轉發模塊
數據采集模塊和存儲模塊及報警模塊之間,設計了一個數據轉發模塊。數據轉發組件是沒有狀態的,它不會存儲任何數據,而只是起到了一個中間轉發的作用。
監控數據由數據采集模塊或者用戶自定義腳本發送過來后,首先會進行合法性檢驗,存儲到相應的內存隊列中,之后會轉發給數據存儲模塊和報警模塊。
4 數據存儲模塊
監控數據的存儲是監控系統中非常核心的模塊,它對于系統的性能和整體的架構設計具有很大影響。本系統把監控數據存儲在RRD(Round Robin Database)中,即節省了空間又提高了數據查詢效率。監控系統中,對監控數據的存儲方式,主要分為兩類:
4.1 細粒度存儲
保存數據采集端推送過來的所有數據點。優點是數據保存完整,缺點是存儲代價和查詢繪圖代價過高。
4.2 粗粒度存儲
對歷史數據進行壓縮歸檔,節省存儲空問,提高查詢和繪圖效率。RRD提供了粗粒度存儲的完善解決方案。RRD,是一個環狀數據庫,適合存儲時間序列數據。
5 報警和預警模塊
通常來說,在監控系統中有兩個主要的關注點,一個是歷史數據的存儲和繪圖;另一個則是定義報警策略,及時發現問題,并且進行報警。目前,大多數監控系統只是對己發生事件進行報警,并沒有對潛在的威脅作出預測。本系統不僅能夠基于歷史數據對己發生的事件進行報警,而且能夠對潛在的危險作出預測?;跁r間序列預測技術,借助數據挖掘,本系統實現了對服務器流量的預警機制。通過流量預測模型,預測未來短時間內流量情況,如果超過了某個設定的流量閾值,則會發出預警,網絡管理員可以提前采取措施,避免意外情況的發生,增強了系統的安全性和穩定性。
報警模塊的功能有:
(1)從服務器獲取報警策略。
(2)接收數據轉發組件轉發過來的數據。但是,報警模塊并不會存儲所有的數據,而是只會存儲每個監控項下的最新的10個數據點。之所以這樣設計,主要是因為用戶在定義報警策略的時候,通常來說只會檢查最新的n個數據點,n的數值一般不會大于10。因此,為了節省資源和提高報警判斷的性能,本系統只存儲最新的10個數據點。
(3)接收到數據后,能夠高效率地判斷是否達到了閾值產生報警事件。
(4)當觸發報警事件后,把這個報警事件寫入隊列中。
因此,在報警模塊中需要對歷史數據進行存儲(只需要存儲最新的幾個數據點)。本系統需要對數據存儲進行選型,是應該把歷史數據存儲到外部機器上,還是應該把歷史數據存儲到本地的內存當中。如果把歷史數據存儲到報警服務器的本地內存中,那么就會導致報警服務器具有狀態,當進行水平擴展時,存在一定的難度。如果把數據存儲到外部服務器的內存中,則每次進行報警判斷時都需要經過網絡獲取歷史數據點,對報警判斷的性能存在很大的影響?;谌缦聨讉€原因:首先,監控系統中數據量非常的大,報警判斷的效率是至關重要的,它很可能會成為整個監控系統的瓶頸;監控數據是持續不斷的發送到報警服務器的,對報警模塊添加服務器節點進行水平擴展時,雖然有數據丟失,但是影響也不會很大,歷史數據點很快就可以填充上。本系統決定把最新的n條歷史監控數據點存儲在報警服務器的內存中。
參考文獻
[1]沈青,董波,肖德寶.基于服務器集群的云監控系統設計與實現[J].計算機工程與科學,2012,34(10):73-77.
[2]車路,張煥遠,夏亞東.基于開源軟件的云監控平臺設計與實現[J].計算技術與自動化,2015(01):136-140.
[3]Clay R W,Wild N R,Bird D J,eta1.A cloud monitoring system for remote sites[J].Publications of the Astronomical Society of Australia,1 998,15(03):332-335.
[4]ceto G,Botta A,De Donato W,et a1.Cloud monitoring:A survey[J].ComputerNetworks,2013,57(09):2093-2115.
[5]Oetiker T.Rrdtool:Round robin database tool[J].1999.