林為偉
(福建師范大學)
隨著云計算和大數(shù)據應用的飛速發(fā)展,服務行業(yè)的IT運力需求漸漸的轉移到云服務中來,有鑒于云計算的各種優(yōu)勢,越來越多的企業(yè)也開始著手建立自主的云計算數(shù)據中心.云計算數(shù)據中心必須保障部署于虛擬機中各應用系統(tǒng)的正常運行,在虛擬機或者云計算基礎硬件設備發(fā)生故障前能夠及時發(fā)現(xiàn)并排除,以保證整個系統(tǒng)的正常運行,提高系統(tǒng)運行的質量和效率.這就需要有一個良好的監(jiān)控和管理軟件.開源監(jiān)控軟件Nagios具有跨平臺、高度擴展性、接口標準化、松散耦合、可基于HTTP協(xié)議靈活訪問等特點[1],可以完成對被監(jiān)控服務或資源進行全天候不間斷地智能監(jiān)控,做到及時報警.大大減輕了網絡管理員的工作量,并提高工作效率,是企業(yè)實施云計算數(shù)據中心監(jiān)控的較好選擇.
盡管Nagios作為一款網絡管理監(jiān)控的軟件,功能很強大,但是其并沒有自帶監(jiān)管功能[5]. Nagios是一款高度插件化的軟件,具有很高的可擴展性,插件可以由Nagios官方提供的,也可以由用戶自己開發(fā).當插件每一次監(jiān)測對象時,只需返回四種狀態(tài)值中的一種,Nagios核心會根據反饋的狀態(tài)值做出相應的動作.這四種狀態(tài)值分別是:OK(正常)、WARNING(警告)、CRITICAL (非常嚴重的錯誤)、UNKNOWN(未知錯誤).Nagios的web界面默認情況下是每5 min自動刷新一次,但是對被監(jiān)控對象的監(jiān)控時間可以根據管理員的需要自己分配的.
監(jiān)控軟件Nagios運行在Linux或Unix環(huán)境下,并提供web瀏覽器直觀展示監(jiān)控狀態(tài)信息. Nagios還附有功能非常強大的報警機制,支持手機短信報警、飛信報警、郵件報警等.
云計算的核心理念是基于互聯(lián)網提供的計算服務,云計算建立在分散的服務器的基礎之上實現(xiàn)計算需求,這里以業(yè)界流行的開源云計算框架OpenStack的云主機Nova物理架構[2]為例說明如何在云計算數(shù)據中心中部署Nagios監(jiān)控.
圖1 云計算物理架構圖
如圖1所示,云計算物理架構從網絡上劃分為管理網、數(shù)據網、存儲網和公網.管理網控制計算節(jié)點、存儲節(jié)點、網絡節(jié)點以及控制節(jié)點的網絡連接,計算節(jié)點與存儲節(jié)點之間有大量的數(shù)據傳輸,所以通常需要千兆或者萬兆高速交換網絡實現(xiàn)連接;數(shù)據網連接虛擬機和網絡節(jié)點,為虛擬機提供互聯(lián)互訪服務,同樣需要千兆或者萬兆的高速交換網絡實現(xiàn)連接.Nagios監(jiān)控服務器部署于管理網絡中,實現(xiàn)了業(yè)務數(shù)據流量和管理流量的分離,這樣由監(jiān)控輪詢產生的流量不會影響網絡用戶的業(yè)務流量.Nagios可以監(jiān)控云計算數(shù)據中心各個虛擬機資源的CPU負荷、內存負載、磁盤利用率、自身提供服務(HTTP、SSH等)、當前用戶數(shù)、上傳下載數(shù)據包流量等,同時也可以監(jiān)控網絡中交換機和路由器的的運行狀態(tài)、端口狀態(tài)、端口流量等,確保了云計算數(shù)據中心的穩(wěn)定可靠運行.
根據企業(yè)云計算數(shù)據中心布局和需求,管理員應該制作合理的監(jiān)控策略.不是盲目對任何資源都進行監(jiān)控,適當舍去非必要項,對監(jiān)控資源進行分類,設置不同的優(yōu)先級,從而保障整個監(jiān)控機制的效率.首先,云計算數(shù)據中心各個虛擬機服務器在網絡中充當著重要角色,比如企業(yè)中備份服務器、人事管理系統(tǒng)服務器、FTP服務器等.對于服務器主要監(jiān)控CPU、內存、硬盤的使用情況、郵件傳輸、用戶使用數(shù)、文件傳送.對于交換機和路由器需要監(jiān)控其CPU和內存的負載以及各個端口流量值,若是大數(shù)據流量可能會使端口“壞掉”.然后對這些被監(jiān)控對象的參數(shù)給定合理的閥值,設置報警方案,一出現(xiàn)故障就發(fā)信息及時通知管理員.
Nagios監(jiān)控主要基于SNMP協(xié)議,所以監(jiān)控方式主要是輪詢,輪詢機制在數(shù)據采集時設置的頻率應該定義一個合理的范圍,時間間隔太短會消耗太多的網絡資源,因此對于輪詢間隔時間的選擇就顯得尤為重要.正常情況下應該根據不同企業(yè)的監(jiān)控需求和監(jiān)控對象的數(shù)量規(guī)模的實際情況選擇不同的輪詢間隔時間.但是對于一般情況下重要的監(jiān)控參數(shù)可以配置成每隔5 min檢測一次,在警告狀態(tài)下每1分鐘檢測一次.連續(xù)檢測5次是故障狀態(tài),必須立即發(fā)短信通知管理員.
如果按照一般的固定輪詢間隔時間的方式進行監(jiān)控數(shù)據的采集,整個管理系統(tǒng)會存在輪詢時間長,效率低下,管理站負擔過重,監(jiān)控數(shù)據流量占用過大帶寬等問題.因此需要對現(xiàn)有的輪詢方式進行改進,這里提出一種基于優(yōu)先級的條件控制的動態(tài)SNMP輪詢間隔時間生成算法以實現(xiàn)對網絡設備的更為高效的監(jiān)控[3].
為了合理設置動態(tài)輪詢時間間隔TimeInterval,提出了監(jiān)控對象優(yōu)先級的概念,采用了基于標準方差分析的方法,即在每一次輪詢之后都會記錄下結果,并將結果參與標準方差運算,然后觀察輪詢數(shù)據結果偏離統(tǒng)計的樣本平均值的偏差,再根據偏差程度去設置優(yōu)先級別的高低,最后根據優(yōu)先級確定輪詢間隔時間.如果對象輪詢參數(shù)結果出現(xiàn)經常性的偏離樣本平均值非常大的情況,就說明該對象可能會出現(xiàn)異常,可以設置較高的優(yōu)先級,加快輪詢的頻率,方便管理服務器對其進行進一步的處理.基本方法如下:
(1)設置輪詢間隔時間TimeInterval的初始值,通??梢匀≈禐檎]喸冮g隔時間的中間值.
(2)根據統(tǒng)計原理計算取值偏離樣本平均值的情況.
在公式(1)和(2)中Vi為每一次輪詢獲取的結果值;為歷史輪詢結果統(tǒng)計的樣本平均值;Vj為歷史輪詢過程中每一次的獲取的返回結果值,S(i)是每一次計算出的標準方差值.
(3)確定輪詢時間間隔
這一步主要是根據上一步算出的輪詢值偏差程度來確定其優(yōu)先級別的大小.基本思路是:如果標準方差值比較高,則輪詢值波動變化較大,說明該對象動態(tài)過程明顯,可以設置較高的優(yōu)先級,在進行輪詢時,應該選擇較短的輪詢時間間隔.而如果標準方差值不高,則輪詢值保持平穩(wěn),說明該輪詢對象靜態(tài)特征明顯,可以設置較低的優(yōu)先級,在處理的時候應該選擇較長輪詢時間間隔.關于函數(shù)F的選擇可以根據具體輪詢對象和用戶需求而定.通過該基于優(yōu)先級的條件控制的動態(tài)SNMP輪詢間隔時間算法的控制后,大大提高了管理站的輪詢效率,降低了網絡負載.
Nagios服務器端必須安裝在Linux或者Unix的操作系統(tǒng)環(huán)境下,下面簡要說明一下安裝流程.
(1)從Nagios官網中下載nagios-4.0.1.tar.gz并編譯安裝.
(3)安裝 Nagios完成,隨后安裝 nagios插件.
(4)插件安裝好后,在web頁面的地址欄輸入Nagios監(jiān)控服務器IP地址.例:192.168.1. 11/nagios/.在彈出驗證密碼窗口上輸入密碼即可進入相關監(jiān)控頁碼,如圖2所示,目前只有Localhost的狀態(tài),說明安裝成功.
圖2 localhost狀態(tài)圖
這里以最常見的兩種操系統(tǒng)Linux和Windows虛擬機服務器說明Nagios監(jiān)控客戶端的安裝配置.
(1)Linux虛擬機監(jiān)控客戶端的安裝
Nagios監(jiān)控 Linux虛擬機原理是:Nagios Server(服務端)運用check_nrpe插件跟客戶端的nrpe進程進行通信.二者能夠通信的前提就是要在Linux虛擬機客戶端啟用nrpe,服務端要安裝nrpe插件但不需要啟動nrpe服務.由于必須先安裝nagios-plugins插件再進行nrpe的安裝,這就促使了后者對前者的依賴.默認情況下nrpe是監(jiān)聽在5666端口上,啟動nrpe服務后可以用命令netstat–an查看該端口是不是處于LISTENING狀態(tài).
nrpe的工作過程:Nagios服務端通過nrpe向客戶端發(fā)起命令,客戶端的nrpe接收到請求就執(zhí)行監(jiān)測本地的插件然后得到數(shù)據并返回給對方的check-nrpe,nagios core(nagios核心)對返回數(shù)據進行分析得到最終結果狀態(tài)值.客戶端也可以主動向被監(jiān)控端發(fā)起監(jiān)控某資源的請求.
(2)Windows虛擬機監(jiān)控客戶端的安裝
Windows虛擬機必須安裝 NSClient++組件.NSClient++的組建的安裝過程很簡單,一般根據安裝向導一步步執(zhí)行下去即可.其中允許主機地址是要填寫Nagios服務所在的系統(tǒng)IP地址.安裝好NSClient++后可以在Windows虛擬機查看該服務是否開啟,缺省端口是12489.
Nagios服務器段和客服端都安裝部署完畢后,就可對云計算機中心的云服務器進行監(jiān)控.如圖3所示,Nagios監(jiān)控Linux虛擬機組的CPU負載(LOAD)、總進程數(shù)(TOTAL)、登陸用戶數(shù)(USER)、VDA1的使用情況(VDA1)、僵尸進程(ZOMBIE)、ssh服務(SSH)、丟包率(PING).四種狀態(tài)分別使用四種顏色標記,綠色是OK、黃色是WARNING、紅色是CRITICAL、深黃色是UNKNOWN.通過顏色馬上就能知道哪些服務出現(xiàn)什么狀態(tài).如圖4所示,Nagios監(jiān)控Windows虛擬機的C盤的使用情況(C:Drive Space)、CPU負荷(CPU Load)、進程數(shù)(Explorer)、內存利用率(Memory Usage)、組件NSClient++的版本類型(NSClient++Version)、運行時間(Uptime)等信息.
圖3 Linux云服務器組狀態(tài)圖
圖4 Windows云服務器狀態(tài)圖
企業(yè)通過構建云計算平臺提高了資源的利用率并降低了運營成本,但是在給定的資源和負載下,虛擬機的性能通常會比物理機更差一些,因此有必要進行實驗和測試,對這種性能上的差異進行測試和分析,從而實現(xiàn)更為高效透明地部署云計算平臺.Nagios監(jiān)控軟件對這種分析和測試提供了有力的支持.
實驗環(huán)境使用Grizzly版本的OpenStack構建云計算平臺搭建在5臺物理服務器上,服務器的配置均為2* Intel Xeon E5-2620 cpu 64GB內存、2*千兆網卡,2*300GB SAS硬盤支持全虛擬化技術.
表1 實驗環(huán)境配置
如表1所示,通過硬件環(huán)境和操作系統(tǒng)都相同的物理服務器和由OpenStack云計算平臺生成的虛擬機來對比物理機環(huán)境和虛擬化環(huán)境的性能差異.首先通過在5個物理服務器上獨立安裝測試工具RFT[4],并為每臺服務服務器平均分配100條測試用例,然后同時開始執(zhí)行.每臺物理服務器上安裝Nagios客戶端,通過Nagios服務器監(jiān)控各個服務器的CPU利用率和內存使用情況.接著由OpenStack云計算平臺生成同樣配置的5臺虛擬機同樣并行運行這500條測試用例,每臺虛擬服務器上同樣安裝Nagios客戶端,通過Nagios服務器監(jiān)控各個服務器的CPU利用率和內存使用情況.
5臺物理服務器在正常情況下執(zhí)行完測試用例所花費的時間約為163 min,而5臺同樣配置的虛擬機花費的時間大約為196 min.可以看出執(zhí)行同樣的測試用例,物理服務器所花費的時間比云計算平臺的虛擬機要少,效率要高.但是通過觀察服務器的CPU利用率和內存的使用情況,可以發(fā)現(xiàn)云計算平臺的虛擬機的平均負載要比物理服務器均衡的多.如圖6所示.物理服務器的CPU利用率和內存的占用率上下波動比較大,不均衡,而云計算平臺的虛擬機的CPU利用率大致維持在34%左右,而內存的占用率大致在22%左右,沒有太大的波動,比較均衡.通過實驗說明雖然云計算平臺不及物理服務器效率高,但是虛擬機的CPU利用率和內存的占用率均衡很多,這樣就大大降低了由于某個節(jié)點負載太重而造成的死機等故障,提高了整個系統(tǒng)的可靠性和健壯性.
圖5 CPU利用率/內存利用率對比圖
除了基本的物理機和虛擬機的性能和負載比較實驗外,還可以通過多種實驗進一步對云計算平臺的性能進行監(jiān)測和分析.例如分析云計算平臺的額外開銷,額外開銷是云基礎設施重點關注的性能問題,需要被限制在一個可接受的范圍之內;還可以分析云計算平臺的各種參數(shù)(例如CPU資源分配策略,內存資源分配策略)對系統(tǒng)性能的影響[5].
通過在云計算數(shù)據中心部署實施開源監(jiān)控軟件Nagios,實現(xiàn)對云計算基礎設施和虛擬機的實時監(jiān)控管理,并對傳統(tǒng)SNMP協(xié)議的輪詢機制進行改進,提出了一種基于優(yōu)先級的動態(tài)SNMP輪詢間隔時間生成算法,提高了監(jiān)控效率,并設計了多種實驗方案討論了如何利用Nagios對云計算平臺進行性能監(jiān)測和分析.
[1] 王飛.基于分布式Nagios體系的應用監(jiān)控平臺設計與實現(xiàn):[碩士學位論文].上海:復旦大學,2011(9):1-6.
[2] 陳伯龍,程志鵬,張杰.云計算與OpenStack[M].北京:電子工業(yè)出版社,2013.
[3] 朱創(chuàng)錄.SNMP網絡管理中高效輪詢方法研究[J].計算機技術與發(fā)展,2012(3):36-40.
[4] 黃曉玲,陳桂林,趙生彗.基于云計算的并行測試方案設計與實現(xiàn)[J].計算機工程,2012,12(24).
[5] 黃曉飛.云基礎設施服務性能監(jiān)測系統(tǒng)的研究與實現(xiàn):碩士學位論文.北京:清華大學,2013.