文/宮劍 黃杰 孫曉靜
隨著信息化建設(shè)程度的不斷提高,越來越多企事業(yè)單位的日常業(yè)務(wù)工作與業(yè)務(wù)信息系統(tǒng)緊密相關(guān),如協(xié)同辦公系統(tǒng)、人力資源系統(tǒng)、財務(wù)管理系統(tǒng)、資產(chǎn)管理系統(tǒng)等。這些系統(tǒng)的運(yùn)行情況和各部門業(yè)務(wù)的捆綁越來越緊密,它們的運(yùn)行狀態(tài)一直是IT運(yùn)維部門關(guān)注的焦點,其可用性、性能指標(biāo)以及出現(xiàn)故障后的響應(yīng)時間,都會直接影響客戶的滿意度。一旦系統(tǒng)出現(xiàn)問題,將可能會使各單位遭受巨大的損失,目前采取的主要措施就是引入監(jiān)控系統(tǒng)來監(jiān)控各類IT基礎(chǔ)設(shè)施和系統(tǒng),但是實際的效益并不顯著。雖然絕大多數(shù)IT運(yùn)維部門都對自己的生產(chǎn)系統(tǒng)進(jìn)行了監(jiān)控,但由于監(jiān)控是個系統(tǒng)工程,各類業(yè)務(wù)系統(tǒng)的部署環(huán)境日趨復(fù)雜,林林總總的各類網(wǎng)絡(luò)設(shè)備、安全設(shè)備、服務(wù)器、中間件、數(shù)據(jù)庫、應(yīng)用程序等軟硬件來自不同廠商,而現(xiàn)有的監(jiān)控技術(shù)研究局限于各個產(chǎn)品或模塊,或是拓?fù)浒l(fā)現(xiàn),或是故障管理,因此未能達(dá)到最好的效益,IT運(yùn)維人員仍疲于應(yīng)對不同廠商、不同軟硬件架構(gòu)、不同管理工具、不同成熟度的應(yīng)用軟件,由此對業(yè)務(wù)系統(tǒng)的可用性、安全性的日常運(yùn)行維護(hù)管理的要求也越來越高。
據(jù)調(diào)查報告顯示,大約有三分之一的應(yīng)用問題是因為客戶發(fā)現(xiàn)反饋甚至投訴后才被發(fā)現(xiàn)的。如何提升對生產(chǎn)系統(tǒng)的預(yù)警和監(jiān)測,甚至自動恢復(fù)的能力,在第一時間發(fā)現(xiàn)并解決操作隱患、功能故障或性能瓶頸,打造規(guī)范化、無盲點的運(yùn)維監(jiān)控體系,成為IT運(yùn)維人員工作者急需解決的問題。我們在總結(jié)日常運(yùn)行維護(hù)工作經(jīng)驗的基礎(chǔ)上,基于CMDB(Configuration Management Database, 配置管理數(shù)據(jù)庫)中配置項CI(Configuration Item, 配置項)模型的思路,設(shè)計了業(yè)務(wù)可用性監(jiān)控平臺對各類IT基礎(chǔ)設(shè)施及業(yè)務(wù)系統(tǒng)進(jìn)行了監(jiān)控,并取得一定效果。
本文首先對CMDB進(jìn)行簡單介紹,隨后對基于CMDB的業(yè)務(wù)可用性監(jiān)控平臺的設(shè)計進(jìn)行了詳細(xì)闡述,具體包括根據(jù)CMDB梳理出的常見監(jiān)控項、監(jiān)控平臺的具體實現(xiàn)思路、CI的變更對監(jiān)控造成的影響及相應(yīng)處理流程等,最后對基于開源程序的實現(xiàn)情況和實際應(yīng)用情況進(jìn)行了介紹。
CMDB 是 ITIL (Information Technology Infras-tructure Library,IT 基礎(chǔ)架構(gòu)庫 )中最重要、最核心的概念之一。CMDB 在ITIL 中的定義是:提供 IT 相關(guān)配置信息,存儲與管理企業(yè) IT架構(gòu)中設(shè)備的各種配置信息,它與所有服務(wù)支持和服務(wù)交付流程都密切相聯(lián),支持這些流程的運(yùn)轉(zhuǎn)、發(fā)揮配置信息的價值,同時依賴于相關(guān)流程保證數(shù)據(jù)的準(zhǔn)確性。
圖1 CMDB模型舉例
圖2 常見業(yè)務(wù)系統(tǒng)結(jié)構(gòu)及對應(yīng)的監(jiān)控項
在CMDB中,被納入配置管理范圍之內(nèi)的元素都是 CI,它包括由IT 部門控制的所有 PC 硬件、軟件、服務(wù)器、文檔、服務(wù)以及由 IT 部門所控制的所有其他 IT組件。從業(yè)務(wù)角度來看,CMDB實現(xiàn)了對IT系統(tǒng)內(nèi)部各個元素信息的跟蹤,成為迅速查找IT基礎(chǔ)設(shè)施信息的基礎(chǔ),同時也是實現(xiàn)有效管理決策的基礎(chǔ)。一項信息服務(wù)背后都有眾多的CI項與之關(guān)聯(lián),其中任何一個CI項或CI之間的關(guān)聯(lián)出現(xiàn)故障,都有可能造成信息服務(wù)出現(xiàn)問題。圖1為筆者所在部門管理的實際生產(chǎn)系統(tǒng)對應(yīng)CMDB模型片段。
鑒于CMDB在IT體系結(jié)構(gòu)中所起到的重要作用,我們可以借助其對IT的日常運(yùn)維工作進(jìn)行深入分析。一個精確的CMDB能夠提供充足的信息讓運(yùn)維人員方便把每一次運(yùn)維事件進(jìn)行定位,以便知道什么地方什么組件出了什么樣的問題,正是因為CMDB在信息服務(wù)中和運(yùn)維深入分析中所起的重要地位,本文提出了基于CMDB的模型來構(gòu)建業(yè)務(wù)可用性監(jiān)控平臺。
傳統(tǒng)對業(yè)務(wù)系統(tǒng)的監(jiān)控一般以單個設(shè)備、資源或軟件告警為主,缺乏系統(tǒng)與業(yè)務(wù)層面的整體監(jiān)控和分析能力,難以從整個系統(tǒng)業(yè)務(wù)可用性的角度加以評價。同樣一個從技術(shù)角度看起來十分微小的故障或疏忽,有可能對業(yè)務(wù)幾乎沒有影響,但也有可能會造成十分重大的影響。本文通過引入CMDB中的配置項建模思路,試圖解決監(jiān)控項的局部性問題,同時在開源監(jiān)控軟件基礎(chǔ)上用靈活的監(jiān)控腳本編寫加以實現(xiàn),以期將整個建模過程變得高效化、自動化和規(guī)范化,并能夠隨著IT 業(yè)務(wù)對象的變化而不斷地動態(tài)更新和完善,準(zhǔn)確地反映業(yè)務(wù)對象本身,同時達(dá)到及時監(jiān)控的效果。
常見的業(yè)務(wù)系統(tǒng)軟硬件架構(gòu)如圖2所示,一般包括物理設(shè)備、邏輯資源、操作系統(tǒng)、中間件、應(yīng)用實例以及業(yè)務(wù)服務(wù)等,針對各個層次的監(jiān)控項也各不相同,以下說明對于業(yè)務(wù)系統(tǒng)結(jié)構(gòu)中各個層次的常見監(jiān)控內(nèi)容。
圖2為常見應(yīng)用系統(tǒng)的部署層次結(jié)構(gòu),一般最底層為物理設(shè)備,包括各類物理主機(jī)、網(wǎng)絡(luò)設(shè)備、物理存儲等。隨著虛擬化技術(shù)的廣泛采用,部署在虛擬主機(jī)上的操作系統(tǒng)越來越多,因此我們專門在物理設(shè)備層上搭建了邏輯資源層,不僅包括虛擬主機(jī),還包括邏輯的存儲資源和網(wǎng)絡(luò)資源等直接可供操作系統(tǒng)使用的邏輯資源。第三層為操作系統(tǒng)層,基于其上的是中間件層,包含數(shù)據(jù)庫、應(yīng)用服務(wù)器、HTTP服務(wù)等,而具體的業(yè)務(wù)系統(tǒng)應(yīng)用實例搭建在中間件層上。最后面對用戶的是業(yè)務(wù)服務(wù)層,它通過負(fù)載均衡與應(yīng)用實例進(jìn)行關(guān)聯(lián)。
對物理設(shè)備的監(jiān)控一般主要包括機(jī)房環(huán)境監(jiān)控,主機(jī)資源的使用率監(jiān)控等。針對不同的物理設(shè)備,監(jiān)控側(cè)重點有所不同。對于物理主機(jī),主要關(guān)注CPU、內(nèi)存、IO、系統(tǒng)平均負(fù)載等實時狀態(tài),對存儲設(shè)備則主要是對物理磁盤空間使用率的監(jiān)控,而網(wǎng)絡(luò)設(shè)備主要是對物理網(wǎng)絡(luò)傳輸性能、可訪問性的監(jiān)控等。
隨著虛擬化的應(yīng)用逐步增多,越來越多的應(yīng)用已部署在虛擬主機(jī)中,因此需要考慮對邏輯資源的監(jiān)控。與物理設(shè)備類似,關(guān)注點也主要包括邏輯磁盤空間使用率,邏輯主機(jī)、邏輯網(wǎng)絡(luò)資源使用率和性能等。
對操作系統(tǒng)層面的監(jiān)控內(nèi)容首先是對操作系統(tǒng)安全方面的監(jiān)控,比如操作系統(tǒng)版本、補(bǔ)丁、各類防護(hù)軟件、重要服務(wù)端口的設(shè)置情況、用戶訪問級別等,其次為一些重要參數(shù)的設(shè)置是否正確,如linux中的可打開文件個數(shù)參數(shù)默認(rèn)值較小,經(jīng)常會影響部分應(yīng)用程序的正常使用。
中間件層一般包括http服務(wù)(apache,nginx等)、數(shù)據(jù)庫和應(yīng)用服務(wù)器(比如Oracle 、MySQL、Tomcat等),因此對中間件層的監(jiān)控主要包括數(shù)據(jù)庫性能的監(jiān)控和應(yīng)用程序服務(wù)狀態(tài)的監(jiān)控。數(shù)據(jù)庫性能狀態(tài)通過監(jiān)控數(shù)據(jù)庫的緩存、緩沖區(qū)命中率、表空間使用率等核心性能指標(biāo)獲得,針對應(yīng)用服務(wù)器,以J2EE組件為例,監(jiān)控的內(nèi)容包括相應(yīng)時間、調(diào)用次數(shù)、并發(fā)量、延遲量、對象數(shù)、連接池、線程數(shù)以及Java內(nèi)存情況等。
為了保障業(yè)務(wù)服務(wù)的可用性,很多應(yīng)用系統(tǒng)都采用了硬件或軟件的負(fù)載均衡措施,因此面對最終用戶的一項服務(wù)的后面常常由多個應(yīng)用系統(tǒng)實例構(gòu)成,對這類應(yīng)用系統(tǒng)實例的監(jiān)控,除了保證功能可用性方面的監(jiān)控之外,還要注意保證各個應(yīng)用實例之間的一致性,這一點往往容易被忽略,應(yīng)用實例之間不一致導(dǎo)致的后果既難定位,也難以發(fā)現(xiàn)核實。
業(yè)務(wù)服務(wù)層主要是針對面向最終用戶的服務(wù)功能可用性和業(yè)務(wù)系統(tǒng)安全性進(jìn)行監(jiān)控,其中功能可用性又包括整體可用性和關(guān)鍵功能可用性等內(nèi)容。
第一步,我們歸納出常見的監(jiān)控點并進(jìn)行分類。
我們通過對以上梳理出來的常見監(jiān)控內(nèi)容進(jìn)行分析,結(jié)合CMDB中的信息得到其對業(yè)務(wù)系統(tǒng)可用性的影響程度,從而確定一般監(jiān)控內(nèi)容需要關(guān)注的類型:可用性、安全性、資源利用率、一致性、時效性等,具體如下:
可用性——可用性和系統(tǒng)組件的失敗率相關(guān),系統(tǒng)的失敗只有當(dāng)其導(dǎo)致服務(wù)的失效性足以影響到系統(tǒng)用戶的需求時才會影響其可用性的指標(biāo)。對于可用性的監(jiān)控方式,我們主要根據(jù)軟件測試的思路,使用各類主動模擬技術(shù),通過腳本主動模擬訪問各類CI項,可以直接取得其具體功能(事務(wù))的響應(yīng)時間和成功率。
安全性——國際標(biāo)準(zhǔn)化委員會的對計算機(jī)安全的定義是“為數(shù)據(jù)處理系統(tǒng)和采取的技術(shù)的和管理的安全保護(hù),保護(hù)計算機(jī)硬件、軟件、數(shù)據(jù)不因偶然的或惡意的原因而遭到破壞、更改、顯露。”從該定義可知,安全性在中間件、應(yīng)用實例、業(yè)務(wù)系統(tǒng)、操作系統(tǒng)等各個層面上都有所體現(xiàn),而對于操作系統(tǒng)、中間件等偏底層的安全性尤為重要。在《信息系統(tǒng)安全等級保護(hù)基本要求》中,針對不同等級的信息系統(tǒng)在技術(shù)防護(hù)角度上提出了不同的安全要求,包括標(biāo)識與鑒別、訪問控制、密碼技術(shù)、安全審計、惡意代碼防范、備份與恢復(fù)等方面的技術(shù)。運(yùn)用監(jiān)控手段,結(jié)合靈活的腳步設(shè)計,可以對安全設(shè)備的運(yùn)行、防護(hù)措施的落實、備份恢復(fù)的有效性等多方面工作進(jìn)行實時監(jiān)控。
資源利用率——資源使用率指對軟硬件等資源的負(fù)載情況,一般包括CPU使用率、磁盤空間使用率、系統(tǒng)平均負(fù)載、內(nèi)存使用率、開機(jī)時間、I/O以及網(wǎng)絡(luò)負(fù)載等。資源利用率一般會直接與應(yīng)用系統(tǒng)的性能有關(guān),對用戶的體驗造成影響。
一致性——這里的一致性主要是指邏輯上應(yīng)該相同的內(nèi)容,其物理上也應(yīng)該是相同的。以負(fù)載均衡環(huán)境下的多個應(yīng)用實例而言,只有保證各個實例之間的一致性,應(yīng)用實例才可以對外提供一致的應(yīng)用服務(wù)。其他的例子還包括不同介質(zhì)上保存的相同備份內(nèi)容,其文件大小及md5也應(yīng)該是相同的。
時效性——響應(yīng)時間主要指數(shù)據(jù)庫和業(yè)務(wù)服務(wù)的響應(yīng)時間,數(shù)據(jù)庫的響應(yīng)時間可以通過監(jiān)控數(shù)據(jù)庫的關(guān)鍵指標(biāo)來獲得,業(yè)務(wù)服務(wù)的響應(yīng)時間可以通過模擬瀏覽器訪問的行為,從而獲取業(yè)務(wù)服務(wù)的響應(yīng)時間。此外,時效性也包括其他CI項的類似倒計時提醒,如針對維護(hù)合同的到期日期、關(guān)鍵用戶賬戶的到期日期等,通過掃描程序,定時掃描合同日期、重要系統(tǒng)的管理員及其它高級權(quán)限的用戶賬號等,不同類型賬號的有效期、修改密碼的要求設(shè)置不一樣,通過對比賬號的有效期,從而完成倒計時提醒功能。
第二步,針對上述整理出的監(jiān)控內(nèi)容分類,進(jìn)一步返回到CMDB中,對每一層面、每一類型的CI項分別針對上述監(jiān)控點類型進(jìn)行篩查,并建立具體的對應(yīng)矩陣,盡可能減少監(jiān)控點的遺漏。監(jiān)控矩陣示例如表1。
表1中,CI項一列為CMDB中的每一個配置項,矩陣中的數(shù)字則代表該CI項所對應(yīng)監(jiān)控類型對業(yè)務(wù)可用性可能造成的影響大小,5為最大,0為最小。具體針對矩陣中每一個非0值,都需要制定出對應(yīng)的checklist檢查表,對具體監(jiān)控內(nèi)容及監(jiān)控方法進(jìn)行描述,為監(jiān)控的具體實施提供參考依據(jù)。最后形成一個CMDB中所有CI項對應(yīng)的監(jiān)控點檢查表矩陣,檢查表的樣式如下:
第三步,結(jié)合CI變更管理流程對監(jiān)控項同時進(jìn)行變更。
基于CMDB的變更管理是ITIL管理的核心,CI數(shù)據(jù)的時效性和準(zhǔn)確性是CMDB成功實施的重要標(biāo)準(zhǔn)。如果一名運(yùn)維工程師在做處理故障前,獲得了不準(zhǔn)確的CI信息,從而做出錯誤的診斷結(jié)論,后果不堪設(shè)想。這樣就要求我們要規(guī)范的變更管理流程,使用標(biāo)準(zhǔn)的模版記錄、跟蹤那些原始信息,并與ITIL的流程緊密結(jié)合,同時需要定期審計。
在進(jìn)行CI項的變更過程中,由于監(jiān)控系統(tǒng)緊密依賴于CMDB,因此監(jiān)控項也需要做出相應(yīng)的變更。也就是說,在變更管理流程中,需要在某個步驟加入對與CI相關(guān)聯(lián)的所有監(jiān)控項也要進(jìn)行變更,具體可從管理和技術(shù)兩個角度進(jìn)行實現(xiàn)。
從管理角度,在變更的某個環(huán)節(jié)加入監(jiān)控項的審核,由運(yùn)維人員完成此類工作;從技術(shù)角度,還可以使用監(jiān)控程序?qū)MDB與監(jiān)控項進(jìn)行一致性監(jiān)控,也就是通過監(jiān)控系統(tǒng)來監(jiān)控自身的業(yè)務(wù)是否存在風(fēng)險,比方說通過監(jiān)控CMDB的新增、修改的內(nèi)容和最后修改時間,與監(jiān)控檢查點的內(nèi)容、最后修改時間進(jìn)行比對,從而在變更第一時間發(fā)現(xiàn)哪些CI項缺少監(jiān)控點,哪些CI項變更后但其監(jiān)控點沒有變更,這樣完成對CI變更后內(nèi)容的監(jiān)控。
表1 監(jiān)控矩陣示例
圖3 監(jiān)控模塊
基于CMDB的業(yè)務(wù)可用性監(jiān)控平臺的實現(xiàn)分為兩大部分,CMDB配置管理和監(jiān)控系統(tǒng)。在實現(xiàn)過程中,我們均采用現(xiàn)有的開源框架,其中CMDB采用的是CMDBuild,監(jiān)控系統(tǒng)采用的是pandorafms。
CMDBuild是一個可配置的Web應(yīng)用,用來對資產(chǎn)以及相關(guān)的工作流操作進(jìn)行配置建模和管理,能配置實現(xiàn)復(fù)雜模型。同時我們對其作了一定改造,能夠無縫集成到我們運(yùn)維管理平臺中,實現(xiàn)和ITIL中的事件管理、問題管理、變更管理的無縫集成。
開源監(jiān)控軟件pandoraFMS是一款企業(yè)級的監(jiān)控平臺,它提供統(tǒng)一的Web界面實時監(jiān)控各種硬件、軟件、操作系統(tǒng)、業(yè)務(wù)系統(tǒng)、網(wǎng)絡(luò)設(shè)備并在故障發(fā)生時發(fā)出報警信息。Pandora FMS體系結(jié)構(gòu)清晰,采用高度模塊化和分布式的體系架構(gòu),由監(jiān)控代理端、監(jiān)控服務(wù)器、中央數(shù)據(jù)庫服務(wù)器以及控制臺組成,每個模塊都是可復(fù)制的獨立模塊,并且每個模塊都支持高可用部署。此外,還支持使用SNMP協(xié)議(不需要安裝agent)采集監(jiān)控信息,部署方式更加簡化,支持網(wǎng)絡(luò)自動發(fā)現(xiàn)服務(wù),自動搜索探測和監(jiān)控新增加的設(shè)備,支持用戶自定義的擴(kuò)展程序,方便個性化的擴(kuò)展,提供友好的Web管理控制界面,降低了學(xué)習(xí)成本,提高了工作效率。
采用CMDBuid和pandoraFMS搭建的業(yè)務(wù)可用性監(jiān)控平臺具有如下特點:
pandoraFMS中,監(jiān)控代理端是在被監(jiān)控端中運(yùn)行的應(yīng)用程序,它負(fù)責(zé)將收集到的被監(jiān)控端的信息發(fā)送到監(jiān)控服務(wù)器端。監(jiān)控代理端軟件支持多種平臺,包括 Windows、Linux、 Solaris、 AIX、HPUX、BSD等,在各自運(yùn)行的平臺上面編寫shell腳本來獲取系統(tǒng)的運(yùn)行信息,如磁盤使用率、CPU負(fù)載、網(wǎng)絡(luò)I/O、內(nèi)存使用率、系統(tǒng)進(jìn)程數(shù)等等。同時,監(jiān)控模塊的腳本基于操作系統(tǒng)的shell類型,如果同是linux系統(tǒng),該配置腳本具有普適性,可以復(fù)制和移植到其他linux系統(tǒng)使用,對于大規(guī)模的監(jiān)控和部署具有方便快捷的特點。PandoraFMS支持?jǐn)U展和集成,Web應(yīng)用的監(jiān)控可以通過集成第三方的插件或自己編寫插件的方式來完成,從而滿足監(jiān)控需求。
PandoraFMS里面有報警模板可以設(shè)置多種推送通知方式,在報警模板里可以定義觸發(fā)報警的條件和觸發(fā)時間以及觸發(fā)報警時報警信息的內(nèi)容和發(fā)送報警信息的方式,根據(jù)對業(yè)務(wù)可用性影響的大小,可以選擇郵件或是短信進(jìn)行告知。郵件方式發(fā)送報警信息非常簡單,配置SMTP服務(wù)器即可。但是郵件報警的方式有不足之處,它不能及時地通知到運(yùn)維人員,只能通過人工查收郵件的方式來獲取當(dāng)期系統(tǒng)的報警信息,所以短信報警的方式是更為及時有效的措施,我們采用短信貓的方式進(jìn)行短信報警。此外通過PandoraFMS不僅能給個人發(fā)送報警短信,也可以設(shè)置群組,對群組成員同時進(jìn)行報警。
如前所述,對監(jiān)控項的變化自身的監(jiān)控是通過自動發(fā)現(xiàn)的工具來實現(xiàn)的,自動發(fā)現(xiàn)的工具是一種掃描工具,掃描周期可以通過人工制定,將掃描所得到的信息通過Webservice接口調(diào)用CMDB,查詢CMDB中的對應(yīng)CI項,此時,監(jiān)控工具就可以找到與CI項的變化內(nèi)容不匹配的監(jiān)控項內(nèi)容,并發(fā)出報警。
自動監(jiān)控到自動開單的轉(zhuǎn)換是指當(dāng)監(jiān)控系統(tǒng)監(jiān)控到異常時,能夠根據(jù)異常類型觸發(fā)相應(yīng)的處理腳本,自動在ITIL的事件管理中開單,直接在單子中記錄事件的類型、相關(guān)CI項,發(fā)生時間等,運(yùn)維人員只需進(jìn)行簡單補(bǔ)充即可。而自動監(jiān)控到自動處理,則是通過腳本自動處理發(fā)生的異常情況。當(dāng)然,通過監(jiān)控能夠自動處理的異常情況相對有限,只能應(yīng)對處理規(guī)則比較明確的情況,比如當(dāng)磁盤空間不足時,可以通過清理N天前的日志情況的方式來釋放空間等,比較復(fù)雜的異常情況還需要人為的參與解決。
基于CMDB及開源監(jiān)控軟件pandoraFMS系統(tǒng)搭建的業(yè)務(wù)可用性監(jiān)控系統(tǒng),實現(xiàn)了對我校主機(jī)服務(wù)器、Web業(yè)務(wù)系統(tǒng)、一卡通設(shè)備、網(wǎng)絡(luò)、數(shù)據(jù)庫等絕大多數(shù)CI項進(jìn)行的實時監(jiān)控。不僅能夠很好地監(jiān)控整體運(yùn)行情況,而且能夠及時發(fā)現(xiàn)故障信息,很大程度上提高了運(yùn)維部門整體的服務(wù)質(zhì)量,從被動救火轉(zhuǎn)為主動監(jiān)控,保障業(yè)務(wù)持續(xù)不間斷運(yùn)行。隨著學(xué)校信息化持續(xù)不斷的發(fā)展,該監(jiān)控系統(tǒng)還將不斷的完善,發(fā)揮更大的作用。