文/鄭海山
廈門大學(xué)
監(jiān)控對于系統(tǒng)運(yùn)維的重要性不言而喻,監(jiān)控可以通過一些征兆在問題出現(xiàn)之前得到通知,也可以在故障出現(xiàn)之后比用戶更早得到提醒并介入處理,同時監(jiān)控也是一個很好的資產(chǎn)視圖,在網(wǎng)絡(luò)安全管理中一個最重要的前提是摸清家底,監(jiān)控項(xiàng)的多寡也反映網(wǎng)絡(luò)資產(chǎn)梳理的成效。
監(jiān)控是一個工具手段,本身各個不同系統(tǒng)也會自帶,比如網(wǎng)管軟件、刀片服務(wù)器管理工具、VMWare自帶、現(xiàn)網(wǎng)流量分析工具等等。監(jiān)控的一個特點(diǎn)是可以多套并行,互相驗(yàn)證,所以在系統(tǒng)自帶以外再建立一套統(tǒng)一的基于開源軟件的監(jiān)控也有其必要性。市面上開源監(jiān)控軟件眾多,功能存在重合,本文以廈門大學(xué)信息與網(wǎng)絡(luò)中心監(jiān)控系統(tǒng)的部署實(shí)踐為例,探討使用最適合的開源軟件,發(fā)揮各種不同監(jiān)控軟件的優(yōu)勢,搭建符合高校信息中心業(yè)務(wù)場景要求的監(jiān)控系統(tǒng)。最終將選擇的開源軟件的自動化部署源代碼分享在https://github.com/haishanzheng/CampusMonitor。本文不涉及整合多個監(jiān)控軟件平臺數(shù)據(jù),也沒有對所有業(yè)務(wù)場景均進(jìn)行監(jiān)控,比如針對高性能計算服務(wù)器的監(jiān)控,在服務(wù)器增多以后,故障是常規(guī)的,這時候只要關(guān)注整個集群整體對外提供的計算能力,而無需過多關(guān)注單個服務(wù)器的故障,在這種情況下Ganglia等開源軟件是更好的選擇。
高校信息中心的監(jiān)控可大致分為兩種情況:一種是師生對外訪問網(wǎng)絡(luò)的網(wǎng)速測量。網(wǎng)速是一個非常主觀的概念,由于網(wǎng)速與目的地(國內(nèi)、國外、教育網(wǎng)、運(yùn)營商)、協(xié)議(視頻、直播、HTTP、BT)、帶寬、時延、抖動、丟包率等均有較大聯(lián)系,只有這些結(jié)合再加上歷史基準(zhǔn)數(shù)據(jù)比較才能對網(wǎng)速進(jìn)行定量分析。另外一種是數(shù)據(jù)中心對外提供的各種業(yè)務(wù)服務(wù)情況。這兩種情況的監(jiān)控對象存在重合,主要在于交換機(jī)、數(shù)據(jù)中心服務(wù)器和不同的鏈路。
解決思路就是使用Zabbix監(jiān)控內(nèi)部的所有交換機(jī)、數(shù)據(jù)中心服務(wù)器和服務(wù)器上的業(yè)務(wù)狀況,使用SmokePing監(jiān)控對外訪問狀況。
監(jiān)控存在多種級別:
1.可用性監(jiān)控??捎眯员O(jiān)控是最簡單的監(jiān)控,對系統(tǒng)是非侵入性的。比如監(jiān)控Ping,監(jiān)控TCP端口是否正常,監(jiān)控HTTP返回值等等。
2.SNMP監(jiān)控。一般交換機(jī)均默認(rèn)自帶SNMP協(xié)議,只需要交換機(jī)對監(jiān)控服務(wù)器開放授權(quán)即可。
3.Web業(yè)務(wù)監(jiān)控。Web業(yè)務(wù)可以從更高層面對Web應(yīng)用進(jìn)行監(jiān)控,比如是否可以登錄,是否可以成功發(fā)送郵件等多個組合操作,這部分需要更多的配置和調(diào)試。
4. VMWare監(jiān)控。高校一般已經(jīng)建立了基于VMWare的虛擬化集群,對于VMWare,提供只讀的管理賬戶即可利用VMWare自帶的API對其進(jìn)行監(jiān)控,侵入性也較低。
5.基于Agent的監(jiān)控。需要在被監(jiān)控服務(wù)器上安裝Agent,才可以監(jiān)控到CPU、內(nèi)存、硬盤等信息。
6.基于應(yīng)用生成的性能參數(shù)或日志的監(jiān)控。
7.自定義監(jiān)控。Zabbix支持編寫自定義監(jiān)控腳本,本監(jiān)控手段需要監(jiān)控管理員和業(yè)務(wù)共同配合,較為復(fù)雜。
如果是從無到有建立監(jiān)控系統(tǒng),可以采取逐步完善的過程,監(jiān)控系統(tǒng)雖然可以在短時間內(nèi)建立起來,但是對所有資產(chǎn)進(jìn)行完全監(jiān)控需要一段較長的時間,初期可以只監(jiān)控可用性,只需要將服務(wù)器或交換機(jī)IP地址加入,即可監(jiān)控是否在線;將網(wǎng)站URL加入,即可監(jiān)控HTTP服務(wù)是否在線;接著對重要的信息系統(tǒng),在系統(tǒng)上安裝Agent進(jìn)行更多的監(jiān)控。交換機(jī)可以從核心交換機(jī)開始,使用SNMP進(jìn)行監(jiān)控,再慢慢過渡到全網(wǎng)。有些監(jiān)控項(xiàng)可以等到故障發(fā)生的時候,根據(jù)故障的可重現(xiàn)和可測量再針對性的進(jìn)行監(jiān)控項(xiàng)添加。
高校信息中心除了維護(hù)校一級的業(yè)務(wù)系統(tǒng)外,也需要對二級學(xué)院的服務(wù)器和網(wǎng)站進(jìn)行安全管理,然而二級學(xué)院的網(wǎng)站或者服務(wù)器,有些資產(chǎn)沒有收集完整,有些由于二級學(xué)院安全設(shè)置無法對其進(jìn)行監(jiān)控,而且即使監(jiān)控到問題,也無法立刻處理。然而即使存在這些問題,對于二級學(xué)院的網(wǎng)站和服務(wù)器也需要監(jiān)控,但是這部分的監(jiān)控以觀察為主,不設(shè)置報警。同時在二級學(xué)院內(nèi)部推廣監(jiān)控系統(tǒng),督促二級學(xué)院自行對服務(wù)器進(jìn)行監(jiān)控。
Zabbix對于Web URL的監(jiān)控較為繁瑣,對于觀察為主的監(jiān)控,可采用Icinga,只需導(dǎo)入DNS或備案系統(tǒng)內(nèi)的網(wǎng)站數(shù)據(jù),即可快速建立起基于網(wǎng)站的監(jiān)控。
高校內(nèi)由于安全域劃分可能存在包括一卡通、網(wǎng)絡(luò)層等專網(wǎng),這些專網(wǎng)需要對監(jiān)控系統(tǒng)開放訪問權(quán)限,存在一定的安全隱患。所以可以采用Zabbix的主從監(jiān)控,在專網(wǎng)內(nèi)放從監(jiān)控代理服務(wù)器,從監(jiān)控代理服務(wù)器不提供服務(wù),只是收集監(jiān)控信息并傳到主服務(wù)器,有效解決了安全問題。
對于監(jiān)控查看人員進(jìn)行劃分,信息中心內(nèi)不同部門有不同角色,可能包括網(wǎng)絡(luò)層、無線、有線、核心交換機(jī)、接入交換機(jī)、系統(tǒng)層、數(shù)據(jù)庫、業(yè)務(wù)層、外包人員、值班人員、領(lǐng)導(dǎo)等多個角色,每個角色關(guān)注點(diǎn)不同,比如數(shù)據(jù)庫管理員,雖然數(shù)據(jù)庫依托在操作系統(tǒng)上,但是數(shù)據(jù)庫管理員更多關(guān)注數(shù)據(jù)層層面的指標(biāo),而操作系統(tǒng)由其他人維護(hù),對于操作系統(tǒng)的運(yùn)行指標(biāo)可能需要了解,但是報警可能就無需處理。而外包人員則嚴(yán)格限制只能查看部分監(jiān)控項(xiàng),這些可以通過Zabbix自帶的強(qiáng)大的監(jiān)控項(xiàng)分組和人員分組來解決。
監(jiān)控應(yīng)當(dāng)也可對公眾提供訪問,使得公眾可以在某個網(wǎng)站查看高校內(nèi)某些業(yè)務(wù)的運(yùn)行狀況,減少在故障發(fā)生時信息中心服務(wù)臺接收到報修請求的數(shù)量,并在業(yè)務(wù)恢復(fù)后得到通知。對于對公眾提供的展示,為了系統(tǒng)安全需要隱藏系統(tǒng)細(xì)節(jié),為了對公眾友好需要將多個監(jiān)控項(xiàng)進(jìn)行組合并對專業(yè)術(shù)語進(jìn)行解讀。對于對外訪問網(wǎng)速情況,可以直接提供SmokePing界面,對數(shù)據(jù)中心內(nèi)業(yè)務(wù)的情況,可以通過將Zabbix數(shù)據(jù)傳遞到Grafana內(nèi)再進(jìn)行組合展示。對外提供服務(wù)器的Grafana應(yīng)經(jīng)常更新安全補(bǔ)丁,訪問Zabbix數(shù)據(jù)庫的賬戶應(yīng)當(dāng)是最小權(quán)限的只讀賬戶。
在分析完以上問題后,監(jiān)控需要安裝包括 Zabbix、Grafana、Icinga、SmokePing等多個開源軟件,有些為了安全分離需要安裝多套,有些需要在重要系統(tǒng)內(nèi)安裝Agent,多個開源軟件之間需要整合,比如Zabbix采用主從架構(gòu)監(jiān)控,會存在一主多從的多臺服務(wù)器,Zabbix數(shù)據(jù)需要傳遞到Grafana內(nèi)展示,需要安裝插件。SmokePing采用主從架構(gòu),從服務(wù)器需要放到多個不同二級學(xué)院內(nèi)采集數(shù)據(jù),這些需要安裝的服務(wù)器數(shù)量眾多,配置繁瑣,很難在短時間內(nèi)建立起來。
解決方法是使用容器或者其他開發(fā)者已經(jīng)建立起來的自動化部署腳本,即可在非常短的時間內(nèi)建立起監(jiān)控系統(tǒng),大大減輕系統(tǒng)部署的難度和工作量。
基于以上分析,最終我們整合了多個開源軟件,通過編寫自動化部署腳本,建立了基于開源軟件的信息中心監(jiān)控體系,圖1是監(jiān)控系統(tǒng)整體框架。
在圖1中,黃色服務(wù)器為Zabbix主從服務(wù)器,從代理服務(wù)器部署在靠近被監(jiān)控區(qū)域,并將監(jiān)控結(jié)果傳到Zabbix主服務(wù)器。主Zabbix數(shù)據(jù)庫將數(shù)據(jù)分成2份提供給管理員和公眾訪問的Grafana服務(wù)器。綠色服務(wù)器為SmokePing主從服務(wù)器,從SmokePing服務(wù)器從各個區(qū)域訪問互聯(lián)網(wǎng)網(wǎng)站,并將鏈路過程的交換機(jī)和最終目的地的監(jiān)控數(shù)據(jù)匯總到SmokePing主服務(wù)器。
建立監(jiān)控系統(tǒng)只是整個監(jiān)控的第一步,接下來需要各色不同人員參與進(jìn)來添加維護(hù)監(jiān)控項(xiàng),為避免不規(guī)范使用和提高添加效率,應(yīng)當(dāng)形成完善的幫助文件。對監(jiān)控項(xiàng)的添加規(guī)則、值班人員需要查看的界面和操作、各個不同人員需要訂閱的報警、同一個機(jī)器多個不同管理員如何共同處理故障報警的協(xié)作方法,制定出最佳實(shí)踐文檔和規(guī)范要求,并在內(nèi)部公開。
Zabbix支持主從部署,從服務(wù)器可以部署到一卡通、網(wǎng)絡(luò)等專網(wǎng)內(nèi),也可以在互聯(lián)網(wǎng)云平臺部署,檢測從互聯(lián)網(wǎng)訪問數(shù)據(jù)中心業(yè)務(wù)的情況。為了安全,從服務(wù)器只允許外傳監(jiān)控數(shù)據(jù),同時為了規(guī)避Zabbix主服務(wù)器被入侵后滲透到內(nèi)網(wǎng),應(yīng)當(dāng)充分評估是否啟用主服務(wù)器可以在從服務(wù)器發(fā)起命令執(zhí)行功能。
圖1 監(jiān)控系統(tǒng)整體部署框架
Zabbix的配置項(xiàng)非常靈活,也導(dǎo)致了配置的難度。應(yīng)當(dāng)充分利用Zabbix提供的Template機(jī)制簡化部署。由于Zabbix的權(quán)限配置和很多搜索及過濾都會使用“主機(jī)群組”,所以“主機(jī)群組”應(yīng)當(dāng)在前期就做好規(guī)劃,“主機(jī)群組”本質(zhì)上類似標(biāo)簽,也支持樹形關(guān)系,以“/”區(qū)分子主機(jī)群組,第一級“主機(jī)群組”應(yīng)當(dāng)是信息中心部門,業(yè)務(wù)名稱和區(qū)域等等。比如辦公自動化主機(jī),可以分配包括“服務(wù)器”、“業(yè)務(wù)/辦公自動化”、“系統(tǒng)部”、“新機(jī)房”等多個主機(jī)群組,方便對其進(jìn)行權(quán)限過濾和監(jiān)控配置。
Zabbix可以使用GUI、API和導(dǎo)入導(dǎo)出配置主機(jī),GUI配置稍顯麻煩,對于大量的交換機(jī),可以考慮使用Excel管理,然后再使用類似Python腳本解析Excel生成導(dǎo)出文件導(dǎo)入到Zabbix。對于一般Ping的監(jiān)控可以使用模板“Template Module ICMP Ping”,而對于交換機(jī)的SNMP監(jiān)控可以使用模板“Template Net Network Generic Device SNMPv2”。
Grafana的引入是基于安全和可視化考慮。Zabbix的儀表盤功能非常強(qiáng)大,但配置較為麻煩,Grafana的儀表盤效果更為酷炫,技術(shù)上更先進(jìn),通過引入Grafana,可以將Zabbix作為一個數(shù)據(jù)源,很快配置起儀表盤,也可以將多個圖表指標(biāo)整合在一起生成新的圖。同時為了隔離對公眾提供的Grafana的安全性,應(yīng)當(dāng)單獨(dú)部署一套Grafana,設(shè)置嚴(yán)格的安全策略,并對歷史數(shù)據(jù)查看進(jìn)行限制。
Grafana有對自動化部署作優(yōu)化,所有的數(shù)據(jù)庫連接和儀表盤均可以使用自動化部署配置。
Icinga的所有功能Zabbix也都支持,然而Icinga配置更為靈活,可以使用純文本配置,通過跟Python腳本對接,可以快速建立起對網(wǎng)站的監(jiān)控,通過剝離Zabbix和Icinga,使用Icinga來監(jiān)控二級學(xué)院的網(wǎng)站,只做觀察不做處理,減少對Zabbix的干擾。Icinga使用的IP地址應(yīng)當(dāng)告知二級學(xué)院管理員以免被安全軟件攔截。
SmokePing跟Icinga引入的作用類似,功能上Zabbix都支持。SmokePing使用Perl編寫,使用RRD畫圖,技術(shù)較為古老,但是SmokePing由于功能較為單一,更為聚焦,配置使用純文本,更加靈活,而且SmokePing對公眾提供服務(wù),獨(dú)立后安全性更高。
SmokePing支持主從模式部署,通過將從服務(wù)器部署到各個不同區(qū)域,可以監(jiān)控主從服務(wù)器對不同互聯(lián)網(wǎng)出口鏈路上的交換機(jī)、互聯(lián)網(wǎng)服務(wù)器和網(wǎng)站的時延。SmokePing也支持將多個圖在一個圖集中展示比較。對于從服務(wù)器,從成本考慮可以使用價格更對低廉的樹莓派大量部署。
SmokePing配置文件內(nèi)的移動、電信、聯(lián)通、教育網(wǎng)等多個運(yùn)營商,各省,各大網(wǎng)站數(shù)據(jù)可以多個高校共享,CampusMonitor項(xiàng)目在配置里對共享和自定義的內(nèi)容進(jìn)行了剝離,有效解決了數(shù)據(jù)共享問題。
通過對高校信息中心監(jiān)控目標(biāo)的分析,通過編寫自動化部署工具一鍵部署起包括Zabbix、Grafana、Icinga、SmokePing等多個適合高校信息中心的開源監(jiān)控系統(tǒng),實(shí)現(xiàn)了信息中心對訪問互聯(lián)網(wǎng)網(wǎng)速的測量和對數(shù)據(jù)中心業(yè)務(wù)的監(jiān)控,提高了信息中心的運(yùn)維水平。通過將監(jiān)控結(jié)果進(jìn)行友好性解讀后展現(xiàn)給公眾,讓信息中心對外提供的服務(wù)更加透明。對信息中心全資產(chǎn)監(jiān)控的建立不是一朝一夕可以完成的,需要對資產(chǎn)引入全生命周期管理理念,在資產(chǎn)產(chǎn)生時就需要納入監(jiān)控管理,在日常工作中增加單個資產(chǎn)更多的監(jiān)控項(xiàng),將監(jiān)控做廣做深,并讓公眾參與監(jiān)督,才可以真正提升信息中心的運(yùn)維和服務(wù)水平。