孫莉娜
(遼寧機(jī)電職業(yè)技術(shù)學(xué)院 遼寧省丹東市 118009)
傳統(tǒng)的運(yùn)維方式工作強(qiáng)度高、效率低,無法滿足實(shí)際應(yīng)用需要。所以開發(fā)一款的自動化運(yùn)維系統(tǒng)顯得尤為必要。在對系統(tǒng)進(jìn)行設(shè)計(jì)開發(fā)的過程中,可以對先進(jìn)的云計(jì)算技術(shù)進(jìn)行合理運(yùn)用,以此為依托,使開發(fā)出來的系統(tǒng)功能更加強(qiáng)大,從而滿足用戶的使用需求,提高整體的運(yùn)維水平。
自動化運(yùn)維系統(tǒng)(Automatic Operation and Maintenance system,以下簡稱AOMS)歸屬于管理平臺的范疇。與傳統(tǒng)的運(yùn)維模式相比,自動化運(yùn)維最為突出的特點(diǎn)是能夠?qū)⒃拘枰謩油瓿傻闹貜?fù)操作,變?yōu)橄到y(tǒng)自動完成,由此能夠使運(yùn)維人員的勞動強(qiáng)度大幅度降低,運(yùn)維效率隨之顯著提升。
1.1.1 云計(jì)算技術(shù)
云計(jì)算環(huán)境是整個(gè)自動化運(yùn)維系統(tǒng)AOMS 的基礎(chǔ),在本次系統(tǒng)設(shè)計(jì)中,運(yùn)用的是云計(jì)算中的Open Stack 及其相關(guān)組件,如Nova、compute 等等[1]。云計(jì)算技術(shù)的加入使AOMS 變得更加高效。
1.1.2 Web 技術(shù)
在本次系統(tǒng)開發(fā)中,交互頁面引入Web 技術(shù)。為實(shí)現(xiàn)AOMS性能和告警監(jiān)控的可視化,引入Web 中最為流行的框架體系SSH。
在對AOMS 進(jìn)行設(shè)計(jì)前,應(yīng)當(dāng)了解具體的需求,由此可使設(shè)計(jì)出來的系統(tǒng)功能更加貼合實(shí)際,以便用戶更好地使用。在云計(jì)算環(huán)境下,AOMS 應(yīng)當(dāng)具備以下功能:
1.2.1 實(shí)時(shí)監(jiān)控
AOMS 應(yīng)當(dāng)能夠?qū)φ麄€(gè)集群內(nèi)所有節(jié)點(diǎn)的資源使用情況進(jìn)行觀察,具體包括以下監(jiān)控項(xiàng):CPU 與內(nèi)存的使用率、系統(tǒng)與日志磁盤的使用率、網(wǎng)卡的出入流量、虛擬與計(jì)算服務(wù)異常數(shù)以及網(wǎng)絡(luò)故障數(shù)等等[2]。用戶可在運(yùn)維顯示屏上,對集群的健康狀況進(jìn)行查看,也可對各個(gè)主機(jī)進(jìn)行分別查看。
1.2.2 告警功能
AOMS 應(yīng)當(dāng)具備告警功能,在該功能下,用于可以對監(jiān)控過程中的告警項(xiàng)目進(jìn)行自定義。該功能可由以下部分予以實(shí)現(xiàn):告警主機(jī)、閾值、告警項(xiàng)以及級別等。在上述部分中,告警主機(jī)是核心,閾值為判斷機(jī)制,按實(shí)際需要設(shè)定好后,當(dāng)超出閾值,告警主機(jī)便會發(fā)出告警提示;告警項(xiàng)為所有的監(jiān)控項(xiàng);告警級別為次要、重要、缺數(shù)據(jù)以及正常[3]。
1.2.3 自動巡檢
AOMS 的自動巡檢機(jī)制有兩種,分別為服務(wù)狀態(tài)巡檢和一致巡檢。前者包括主機(jī)和所有控制節(jié)點(diǎn)在內(nèi),具體是對各個(gè)子系統(tǒng)、模塊中的故障信息進(jìn)行收集;后者則是對虛擬機(jī)資源中殘留信息和不可用資源的故障信息進(jìn)行檢測,并完成自動恢復(fù)機(jī)制的設(shè)置。
AOMS 以云計(jì)算平臺作為依托,采用當(dāng)前較為流行的B/S 架構(gòu)體系,整個(gè)系統(tǒng)由兩部分組成,一部分為Web 端,另一部分為服務(wù)器端。其中服務(wù)器端負(fù)責(zé)為系統(tǒng)提供云計(jì)算環(huán)境,包含諸多節(jié)點(diǎn),如計(jì)算、網(wǎng)絡(luò)、控制、存儲等等,數(shù)據(jù)庫是其核心組成部分,具備監(jiān)控功能的插件Zabbix 也被安裝在服務(wù)器端,相關(guān)的模塊則分別安裝在不同的節(jié)點(diǎn)中,比如控制節(jié)點(diǎn)中安裝的是Zabbix-Server,在計(jì)算節(jié)點(diǎn)中安裝的是Zabbix-Agent。
Web 頁面除了能夠?qū)ΡO(jiān)控信息進(jìn)行實(shí)時(shí)展示外,還能展示巡檢結(jié)果,并對告警規(guī)則進(jìn)行下發(fā)。B/S 架構(gòu)的運(yùn)用,使用戶能夠直接通過瀏覽器進(jìn)行對系統(tǒng)進(jìn)行訪問,無需安裝客戶端,避免了對系統(tǒng)內(nèi)存的占用和運(yùn)行速度的影響。借助瀏覽器,用戶可對系統(tǒng)中的具體功能進(jìn)行選擇,如監(jiān)控性能、大屏運(yùn)維、巡檢、告警等等。整個(gè)系統(tǒng)分為三個(gè)層次,分別為表現(xiàn)層(Web 頁面)、服務(wù)層(服務(wù)器端)、數(shù)據(jù)層(數(shù)據(jù)庫)[4]。
在對AOMS 進(jìn)行開發(fā)的過程中,功能設(shè)計(jì)是重中之重,具體開發(fā)時(shí),可對云計(jì)算環(huán)境加以充分利用。由于該系統(tǒng)是為自動化運(yùn)維服務(wù),所以在設(shè)計(jì)功能模塊時(shí),將性能監(jiān)控、告警以及巡檢作為重點(diǎn)。下面對上述功能模塊的設(shè)計(jì)過程進(jìn)行分析。
2.2.1 性能監(jiān)控模塊
可將該模塊分為集群健康狀況、主機(jī)歷史監(jiān)控信息兩部分,在對該模塊的功能進(jìn)行進(jìn)行的過程中,采用子項(xiàng)目結(jié)合設(shè)計(jì)的方法,具體的設(shè)計(jì)要點(diǎn)如下:
(1)對集群的性能進(jìn)行監(jiān)控包括以下內(nèi)容:CPU、內(nèi)存、虛擬機(jī)、告警、網(wǎng)絡(luò)、日志以及各數(shù)據(jù)庫等。上述信息可在運(yùn)維大屏上進(jìn)行集中展示,運(yùn)維人員則可通過大屏了解集群的健康情況。在監(jiān)控內(nèi)容中,容易突變的指標(biāo)有三個(gè),分別為告警、內(nèi)存和CPU,可將這三個(gè)指標(biāo)的刷新頻率設(shè)置的高于其它指標(biāo)??梢罁?jù)指標(biāo)的特性,對具體的展示方式進(jìn)行確定,如內(nèi)存與CPU 的展示方式為餅圖,這樣能夠?qū)Ξ?dāng)前使用和剩余的資源直觀了解;告警數(shù)量、異常數(shù)量等,可采用數(shù)顯的方式進(jìn)行展示;服務(wù)狀態(tài)可以圖標(biāo)顯示,并通過顏色判斷是否正常,綠色為正常,紅色為異常[5]。
(2)查看監(jiān)控周期內(nèi)的歷史信息是對集群內(nèi)主機(jī)性能進(jìn)行監(jiān)控的方法,可查看的歷史信息為之前6 個(gè)月。之所以將這個(gè)時(shí)間設(shè)定為6 個(gè)月,主要是考慮到數(shù)據(jù)存儲問題。由于監(jiān)控周期設(shè)置為5min,在多監(jiān)控項(xiàng)下,24h 采集到的將監(jiān)控?cái)?shù)據(jù)量較大,6 個(gè)月的數(shù)據(jù)量恰好是數(shù)據(jù)庫可以承受的范圍。具體的監(jiān)控項(xiàng)目如下:CPU與內(nèi)存的利用率、磁盤的使用率、網(wǎng)卡的出/入流量等等。為對歷史數(shù)據(jù)進(jìn)行直觀展示,在設(shè)計(jì)的過程中引入折線圖。該功能會按照控制節(jié)點(diǎn)的IP 地址,對主機(jī)信息進(jìn)行查詢,對主機(jī)名和管理網(wǎng)IP進(jìn)行獲取,對Zabbix 接口進(jìn)行調(diào)用,對主機(jī)CPU 的利用率進(jìn)行查詢,通過對頁面信息進(jìn)行刷新的方法,為服務(wù)器減負(fù)。
2.2.2 監(jiān)控告警模塊
對于AOMS 而言,監(jiān)控告警是較為重要的一項(xiàng)功能,在對該模塊進(jìn)行設(shè)計(jì)時(shí),可將以下功能作為重點(diǎn):告警項(xiàng)、告警歷史等。
(1)用戶可以通過告警規(guī)則對告警項(xiàng)進(jìn)行自定義,即可單獨(dú)設(shè)置,也可批量設(shè)置,這里的單獨(dú)和批量都是針對主機(jī)而言,監(jiān)控主機(jī)主要是指整個(gè)集群內(nèi)的主機(jī),具體的監(jiān)控項(xiàng)目包括CPU 與內(nèi)存的使用率、系統(tǒng)與日志磁盤的使用率、網(wǎng)卡的出入流量、虛擬與計(jì)算服務(wù)異常數(shù)以及網(wǎng)絡(luò)故障數(shù)等等。可分級別對告警項(xiàng)進(jìn)行設(shè)置,以便運(yùn)維人員能夠針對優(yōu)先級處理告警信息。共計(jì)設(shè)定四各告警級別,分別用W(WARNING)、C(CRITICAL)、I(INSUFFICINET)、O(OKAY)表示,其中W 表示次要告警,C 表示重要告警,I 表示缺數(shù)據(jù),O 表示正常無告警[6]。在對告警項(xiàng)進(jìn)行創(chuàng)建的過程中,除了應(yīng)當(dāng)對集群內(nèi)的主機(jī)進(jìn)行選擇之外,該應(yīng)對監(jiān)控項(xiàng)、閾值等進(jìn)行選擇,可一次性創(chuàng)建多條,從而達(dá)到批量的效果。當(dāng)用戶有其他使用要求時(shí),可對創(chuàng)建好的告警項(xiàng)進(jìn)行修改,不可以對所有的項(xiàng)目進(jìn)行同時(shí)修改,只能對某個(gè)告警項(xiàng)進(jìn)行修改。修改與創(chuàng)建過程類似,但無法實(shí)現(xiàn)批量。
(2)當(dāng)告警項(xiàng)觸發(fā)時(shí),會產(chǎn)生出告警信息,隨著時(shí)間的推移,這些信息會變?yōu)闅v史信息。為避免受到網(wǎng)絡(luò)不穩(wěn)定等因素的影響,引入多周期觸發(fā)的機(jī)制,即連續(xù)3 個(gè)周期全部觸發(fā)閾值,說明出現(xiàn)問題,此時(shí)會產(chǎn)生告警信息,未達(dá)到觸發(fā)機(jī)制,則會不會產(chǎn)生告警信息。在度告警周期的時(shí)間進(jìn)行設(shè)定時(shí),不宜過長,以1min 為宜,每間隔1min,系統(tǒng)會調(diào)用Zabbix 插件,對監(jiān)控項(xiàng)信息進(jìn)行獲取,并與告警項(xiàng)設(shè)定好的閾值進(jìn)行比對,若是超出則會產(chǎn)生告警信息。查看告警歷史信息時(shí),需要對篩選條件進(jìn)行設(shè)定,包括開始和結(jié)束時(shí)間等。
2.2.3 巡檢模塊
自動巡檢包括狀態(tài)和一致巡檢兩部分,其中前者主要是對整個(gè)集群的基礎(chǔ)服務(wù)狀態(tài)進(jìn)行檢測,以調(diào)用接口的方式對最新的數(shù)據(jù)進(jìn)行獲取,從而保證獲得數(shù)據(jù)的實(shí)時(shí)性;后者則是對虛擬機(jī)狀態(tài)的對比檢測。其中狀態(tài)巡檢可由接口調(diào)用予以實(shí)現(xiàn),在此不進(jìn)行分析。一致巡檢主要是指巡查OS(Open Stack)資源,檢測的模塊包括虛擬機(jī)、網(wǎng)絡(luò)、磁盤以及鏡像等等,虛擬機(jī)檢測是該模塊設(shè)計(jì)的重點(diǎn)。具體的設(shè)計(jì)方法與要點(diǎn)如下:
(1)在對虛擬機(jī)巡檢進(jìn)行設(shè)計(jì)的過程中,可以利用Ansible 架構(gòu)中的syscan 模塊來完成,所有的工作任務(wù)全都運(yùn)行屬于自己的進(jìn)程,當(dāng)任務(wù)執(zhí)行完畢后,獲得的結(jié)果會被直接寫入到RbabitMQ 中,而主進(jìn)程則負(fù)責(zé)對API 接口信息進(jìn)行實(shí)時(shí)接收,并完成POST 和GET 等操作。通過對RbabitMQ 進(jìn)行監(jiān)聽來獲取進(jìn)程消息,并將相關(guān)數(shù)據(jù)匯總后寫入到文件中,之后監(jiān)聽會自動關(guān)閉[7]。
(2)一致巡檢所得的結(jié)果會被保存到系統(tǒng)文件當(dāng)中,服務(wù)器通過對API 接口的調(diào)用,可對包含巡檢結(jié)果在內(nèi)的文件進(jìn)行獲取,并對該結(jié)果進(jìn)行分析,展示在Web 頁面上。在對自動化進(jìn)行實(shí)現(xiàn)時(shí),可通過對比虛擬機(jī)的情況,以重啟虛擬機(jī)的方法,對底層的數(shù)據(jù)進(jìn)行重建,當(dāng)確認(rèn)為殘留的資源時(shí),可將之與對應(yīng)的虛擬機(jī)刪除。當(dāng)出現(xiàn)主機(jī)位置不一致的情況時(shí),需要對compute 服務(wù)進(jìn)行重啟,與之相應(yīng)的重啟和刪除全部可以通過API 接口來實(shí)現(xiàn),這樣便可解決自動的問題。
2.3.1 數(shù)據(jù)庫瓶頸
在AOMS 設(shè)計(jì)中,從時(shí)間上對數(shù)據(jù)進(jìn)行考慮,以此來解決數(shù)據(jù)庫的瓶頸問題。由于總體性能監(jiān)控為實(shí)時(shí)數(shù)據(jù),所以無需存儲。而主機(jī)性能則需要對長期數(shù)據(jù)進(jìn)行觀察,但但因?yàn)橹芷谳^短,且監(jiān)控?cái)?shù)據(jù)量非常大,因此,在設(shè)計(jì)時(shí)引入保留機(jī)制,數(shù)據(jù)的保留時(shí)間設(shè)定為6 個(gè)月。監(jiān)控告警規(guī)則為用戶自定義,數(shù)據(jù)產(chǎn)生的比較少,正常情況下不會出現(xiàn)告警,即便長期運(yùn)行也不會產(chǎn)生出過多的數(shù)據(jù)[8]。為避免告警信息大量產(chǎn)生的情況出現(xiàn),在設(shè)計(jì)時(shí),加入手動刪除數(shù)據(jù)的功能,運(yùn)維人員可以采用手動的方式,刪除告警歷史信息。從本質(zhì)的角度上講,自動巡檢就是定期對相關(guān)的問題進(jìn)行巡查,而很多問題在正常情況下基本不會發(fā)生。故此只需要將文件保存到服務(wù)器即可,無需存儲到數(shù)據(jù)庫中,這樣便可使數(shù)據(jù)庫的瓶頸問題得到有效解決。
2.3.2 數(shù)據(jù)庫功能
在對AOMS 的 數(shù)據(jù)庫功能進(jìn)行設(shè)計(jì)時(shí),應(yīng)當(dāng)充分考慮監(jiān)控和告警。其中性能監(jiān)控不需要將數(shù)據(jù)存儲到數(shù)據(jù)庫中,所以告警數(shù)據(jù)的存儲成為數(shù)據(jù)庫功能設(shè)計(jì)的重點(diǎn)。在監(jiān)控告警信息中,告警項(xiàng)可由用戶以自定義的方式進(jìn)行刪減和增加,所以對它的存儲應(yīng)包括以下內(nèi)容:主機(jī)名與IP 地址、監(jiān)控項(xiàng)和閾值等。可以按照集群對監(jiān)控項(xiàng)進(jìn)行區(qū)分,當(dāng)告警信息產(chǎn)生后,可直接存儲到相應(yīng)的歷史表當(dāng)中[9]。
當(dāng)AOMS 設(shè)計(jì)開發(fā)結(jié)束后,應(yīng)當(dāng)對其進(jìn)行功能測試,看各個(gè)模塊是否可以正常操作,檢驗(yàn)系統(tǒng)是否能夠滿足用戶的使用需要。在對系統(tǒng)進(jìn)行功能測試的過程中,因AOMS是以云計(jì)算平臺為依托,故此只需要在PC 機(jī)上對系統(tǒng)功能進(jìn)行測試即可。測試用例如下:運(yùn)維中心顯示、監(jiān)控首頁顯示、告警項(xiàng)批量創(chuàng)建、告警項(xiàng)批量刪除、手動巡檢等。測試結(jié)果表明,上述測試全部合格,由此說明本次設(shè)計(jì)開發(fā)的系統(tǒng)具有良好的可用性。
綜上所述,基于云計(jì)算環(huán)境的自動化運(yùn)維系統(tǒng)設(shè)計(jì)開發(fā)是一項(xiàng)較為復(fù)雜的工作,由于其中涵蓋的內(nèi)容較多,一旦某個(gè)環(huán)節(jié)出現(xiàn)問題,都可能對系統(tǒng)的功能和性能造成影響。所以要求設(shè)計(jì)人員掌握設(shè)計(jì)方法,保證系統(tǒng)的設(shè)計(jì)質(zhì)量,為系統(tǒng)功能的發(fā)揮提供保障,這對于促進(jìn)運(yùn)維效率的提升具有重要意義。