文/鄭海山

廈門大學
監控對于系統運維的重要性不言而喻,監控可以通過一些征兆在問題出現之前得到通知,也可以在故障出現之后比用戶更早得到提醒并介入處理,同時監控也是一個很好的資產視圖,在網絡安全管理中一個最重要的前提是摸清家底,監控項的多寡也反映網絡資產梳理的成效。
監控是一個工具手段,本身各個不同系統也會自帶,比如網管軟件、刀片服務器管理工具、VMWare自帶、現網流量分析工具等等。監控的一個特點是可以多套并行,互相驗證,所以在系統自帶以外再建立一套統一的基于開源軟件的監控也有其必要性。市面上開源監控軟件眾多,功能存在重合,本文以廈門大學信息與網絡中心監控系統的部署實踐為例,探討使用最適合的開源軟件,發揮各種不同監控軟件的優勢,搭建符合高校信息中心業務場景要求的監控系統。最終將選擇的開源軟件的自動化部署源代碼分享在https://github.com/haishanzheng/CampusMonitor。本文不涉及整合多個監控軟件平臺數據,也沒有對所有業務場景均進行監控,比如針對高性能計算服務器的監控,在服務器增多以后,故障是常規的,這時候只要關注整個集群整體對外提供的計算能力,而無需過多關注單個服務器的故障,在這種情況下Ganglia等開源軟件是更好的選擇。
高校信息中心的監控可大致分為兩種情況:一種是師生對外訪問網絡的網速測量。網速是一個非常主觀的概念,由于網速與目的地(國內、國外、教育網、運營商)、協議(視頻、直播、HTTP、BT)、帶寬、時延、抖動、丟包率等均有較大聯系,只有這些結合再加上歷史基準數據比較才能對網速進行定量分析。另外一種是數據中心對外提供的各種業務服務情況。這兩種情況的監控對象存在重合,主要在于交換機、數據中心服務器和不同的鏈路。
解決思路就是使用Zabbix監控內部的所有交換機、數據中心服務器和服務器上的業務狀況,使用SmokePing監控對外訪問狀況。
監控存在多種級別:
1.可用性監控。可用性監控是最簡單的監控,對系統是非侵入性的。比如監控Ping,監控TCP端口是否正常,監控HTTP返回值等等。
2.SNMP監控。一般交換機均默認自帶SNMP協議,只需要交換機對監控服務器開放授權即可。
3.Web業務監控。Web業務可以從更高層面對Web應用進行監控,比如是否可以登錄,是否可以成功發送郵件等多個組合操作,這部分需要更多的配置和調試。
4. VMWare監控。高校一般已經建立了基于VMWare的虛擬化集群,對于VMWare,提供只讀的管理賬戶即可利用VMWare自帶的API對其進行監控,侵入性也較低。
5.基于Agent的監控。需要在被監控服務器上安裝Agent,才可以監控到CPU、內存、硬盤等信息。
6.基于應用生成的性能參數或日志的監控。
7.自定義監控。Zabbix支持編寫自定義監控腳本,本監控手段需要監控管理員和業務共同配合,較為復雜。
如果是從無到有建立監控系統,可以采取逐步完善的過程,監控系統雖然可以在短時間內建立起來,但是對所有資產進行完全監控需要一段較長的時間,初期可以只監控可用性,只需要將服務器或交換機IP地址加入,即可監控是否在線;將網站URL加入,即可監控HTTP服務是否在線;接著對重要的信息系統,在系統上安裝Agent進行更多的監控。交換機可以從核心交換機開始,使用SNMP進行監控,再慢慢過渡到全網。有些監控項可以等到故障發生的時候,根據故障的可重現和可測量再針對性的進行監控項添加。
高校信息中心除了維護校一級的業務系統外,也需要對二級學院的服務器和網站進行安全管理,然而二級學院的網站或者服務器,有些資產沒有收集完整,有些由于二級學院安全設置無法對其進行監控,而且即使監控到問題,也無法立刻處理。然而即使存在這些問題,對于二級學院的網站和服務器也需要監控,但是這部分的監控以觀察為主,不設置報警。同時在二級學院內部推廣監控系統,督促二級學院自行對服務器進行監控。
Zabbix對于Web URL的監控較為繁瑣,對于觀察為主的監控,可采用Icinga,只需導入DNS或備案系統內的網站數據,即可快速建立起基于網站的監控。
高校內由于安全域劃分可能存在包括一卡通、網絡層等專網,這些專網需要對監控系統開放訪問權限,存在一定的安全隱患。所以可以采用Zabbix的主從監控,在專網內放從監控代理服務器,從監控代理服務器不提供服務,只是收集監控信息并傳到主服務器,有效解決了安全問題。
對于監控查看人員進行劃分,信息中心內不同部門有不同角色,可能包括網絡層、無線、有線、核心交換機、接入交換機、系統層、數據庫、業務層、外包人員、值班人員、領導等多個角色,每個角色關注點不同,比如數據庫管理員,雖然數據庫依托在操作系統上,但是數據庫管理員更多關注數據層層面的指標,而操作系統由其他人維護,對于操作系統的運行指標可能需要了解,但是報警可能就無需處理。而外包人員則嚴格限制只能查看部分監控項,這些可以通過Zabbix自帶的強大的監控項分組和人員分組來解決。
監控應當也可對公眾提供訪問,使得公眾可以在某個網站查看高校內某些業務的運行狀況,減少在故障發生時信息中心服務臺接收到報修請求的數量,并在業務恢復后得到通知。對于對公眾提供的展示,為了系統安全需要隱藏系統細節,為了對公眾友好需要將多個監控項進行組合并對專業術語進行解讀。對于對外訪問網速情況,可以直接提供SmokePing界面,對數據中心內業務的情況,可以通過將Zabbix數據傳遞到Grafana內再進行組合展示。對外提供服務器的Grafana應經常更新安全補丁,訪問Zabbix數據庫的賬戶應當是最小權限的只讀賬戶。
在分析完以上問題后,監控需要安裝包括 Zabbix、Grafana、Icinga、SmokePing等多個開源軟件,有些為了安全分離需要安裝多套,有些需要在重要系統內安裝Agent,多個開源軟件之間需要整合,比如Zabbix采用主從架構監控,會存在一主多從的多臺服務器,Zabbix數據需要傳遞到Grafana內展示,需要安裝插件。SmokePing采用主從架構,從服務器需要放到多個不同二級學院內采集數據,這些需要安裝的服務器數量眾多,配置繁瑣,很難在短時間內建立起來。
解決方法是使用容器或者其他開發者已經建立起來的自動化部署腳本,即可在非常短的時間內建立起監控系統,大大減輕系統部署的難度和工作量。
基于以上分析,最終我們整合了多個開源軟件,通過編寫自動化部署腳本,建立了基于開源軟件的信息中心監控體系,圖1是監控系統整體框架。
在圖1中,黃色服務器為Zabbix主從服務器,從代理服務器部署在靠近被監控區域,并將監控結果傳到Zabbix主服務器。主Zabbix數據庫將數據分成2份提供給管理員和公眾訪問的Grafana服務器。綠色服務器為SmokePing主從服務器,從SmokePing服務器從各個區域訪問互聯網網站,并將鏈路過程的交換機和最終目的地的監控數據匯總到SmokePing主服務器。
建立監控系統只是整個監控的第一步,接下來需要各色不同人員參與進來添加維護監控項,為避免不規范使用和提高添加效率,應當形成完善的幫助文件。對監控項的添加規則、值班人員需要查看的界面和操作、各個不同人員需要訂閱的報警、同一個機器多個不同管理員如何共同處理故障報警的協作方法,制定出最佳實踐文檔和規范要求,并在內部公開。
Zabbix支持主從部署,從服務器可以部署到一卡通、網絡等專網內,也可以在互聯網云平臺部署,檢測從互聯網訪問數據中心業務的情況。為了安全,從服務器只允許外傳監控數據,同時為了規避Zabbix主服務器被入侵后滲透到內網,應當充分評估是否啟用主服務器可以在從服務器發起命令執行功能。

圖1 監控系統整體部署框架
Zabbix的配置項非常靈活,也導致了配置的難度。應當充分利用Zabbix提供的Template機制簡化部署。由于Zabbix的權限配置和很多搜索及過濾都會使用“主機群組”,所以“主機群組”應當在前期就做好規劃,“主機群組”本質上類似標簽,也支持樹形關系,以“/”區分子主機群組,第一級“主機群組”應當是信息中心部門,業務名稱和區域等等。比如辦公自動化主機,可以分配包括“服務器”、“業務/辦公自動化”、“系統部”、“新機房”等多個主機群組,方便對其進行權限過濾和監控配置。
Zabbix可以使用GUI、API和導入導出配置主機,GUI配置稍顯麻煩,對于大量的交換機,可以考慮使用Excel管理,然后再使用類似Python腳本解析Excel生成導出文件導入到Zabbix。對于一般Ping的監控可以使用模板“Template Module ICMP Ping”,而對于交換機的SNMP監控可以使用模板“Template Net Network Generic Device SNMPv2”。
Grafana的引入是基于安全和可視化考慮。Zabbix的儀表盤功能非常強大,但配置較為麻煩,Grafana的儀表盤效果更為酷炫,技術上更先進,通過引入Grafana,可以將Zabbix作為一個數據源,很快配置起儀表盤,也可以將多個圖表指標整合在一起生成新的圖。同時為了隔離對公眾提供的Grafana的安全性,應當單獨部署一套Grafana,設置嚴格的安全策略,并對歷史數據查看進行限制。
Grafana有對自動化部署作優化,所有的數據庫連接和儀表盤均可以使用自動化部署配置。
Icinga的所有功能Zabbix也都支持,然而Icinga配置更為靈活,可以使用純文本配置,通過跟Python腳本對接,可以快速建立起對網站的監控,通過剝離Zabbix和Icinga,使用Icinga來監控二級學院的網站,只做觀察不做處理,減少對Zabbix的干擾。Icinga使用的IP地址應當告知二級學院管理員以免被安全軟件攔截。
SmokePing跟Icinga引入的作用類似,功能上Zabbix都支持。SmokePing使用Perl編寫,使用RRD畫圖,技術較為古老,但是SmokePing由于功能較為單一,更為聚焦,配置使用純文本,更加靈活,而且SmokePing對公眾提供服務,獨立后安全性更高。
SmokePing支持主從模式部署,通過將從服務器部署到各個不同區域,可以監控主從服務器對不同互聯網出口鏈路上的交換機、互聯網服務器和網站的時延。SmokePing也支持將多個圖在一個圖集中展示比較。對于從服務器,從成本考慮可以使用價格更對低廉的樹莓派大量部署。
SmokePing配置文件內的移動、電信、聯通、教育網等多個運營商,各省,各大網站數據可以多個高校共享,CampusMonitor項目在配置里對共享和自定義的內容進行了剝離,有效解決了數據共享問題。
通過對高校信息中心監控目標的分析,通過編寫自動化部署工具一鍵部署起包括Zabbix、Grafana、Icinga、SmokePing等多個適合高校信息中心的開源監控系統,實現了信息中心對訪問互聯網網速的測量和對數據中心業務的監控,提高了信息中心的運維水平。通過將監控結果進行友好性解讀后展現給公眾,讓信息中心對外提供的服務更加透明。對信息中心全資產監控的建立不是一朝一夕可以完成的,需要對資產引入全生命周期管理理念,在資產產生時就需要納入監控管理,在日常工作中增加單個資產更多的監控項,將監控做廣做深,并讓公眾參與監督,才可以真正提升信息中心的運維和服務水平。