陳穎 王浩然
摘要:隨著空管數(shù)據(jù)中心信息化的不斷深入,面臨著各種數(shù)量眾多的服務(wù)器和網(wǎng)絡(luò)設(shè)備的運(yùn)維監(jiān)控問題。結(jié)合數(shù)據(jù)中心面臨的現(xiàn)狀,本文提供了一種基于Zabbix的數(shù)據(jù)中心運(yùn)維監(jiān)控平臺,解決了監(jiān)控各種不同種類設(shè)備和應(yīng)用服務(wù)的問題,并利用開源可視化組件Grafana對接Zabbix的API接口數(shù)據(jù)源,建立了監(jiān)控平臺美觀易用的可視化面板,解決了Zabbix監(jiān)控?cái)?shù)據(jù)前端展示問題。實(shí)踐證明該運(yùn)維監(jiān)控平臺可視化程度高,運(yùn)維效率高,極大提高了空管數(shù)據(jù)中心的運(yùn)維水平。
關(guān)鍵詞:數(shù)據(jù)中心;運(yùn)維監(jiān)控;數(shù)據(jù)源
一、背景
隨著信息化的不斷深入,空管數(shù)據(jù)中心的各種服務(wù)器和網(wǎng)絡(luò)設(shè)備數(shù)量越來越多,各種異構(gòu)的信息系統(tǒng)也是層出不窮,數(shù)據(jù)中心面臨著各種設(shè)備的運(yùn)維監(jiān)控問題。但目前數(shù)據(jù)中心的監(jiān)控方式存在諸多問題: 首先,各種設(shè)備的監(jiān)控方式不同,需使用各自的專用軟件才能監(jiān)控,無法在統(tǒng)一的平臺上實(shí)現(xiàn)監(jiān)控;再者,數(shù)據(jù)中心各種信息系統(tǒng)架構(gòu)不一致,監(jiān)控接口不同,不能在統(tǒng)一的平臺上監(jiān)控各個(gè)信息系統(tǒng)的運(yùn)行狀態(tài); 最后,數(shù)據(jù)中心收集的各種監(jiān)控?cái)?shù)據(jù)無法在統(tǒng)一的平臺上實(shí)現(xiàn)可視化分析和展示。
本文基于以上空管數(shù)據(jù)中心監(jiān)控平臺面臨的問題,首先利用開源數(shù)據(jù)中心監(jiān)控平臺 Zabbix 實(shí)現(xiàn)對各種異構(gòu)設(shè)備和信息系統(tǒng)的統(tǒng)一監(jiān)控,然后結(jié)合開源可視化組件 Grafana 實(shí)現(xiàn)對 Zabbix 收集的各種監(jiān)控?cái)?shù)據(jù)的可視化展示和分析。
二、Zabbix開源運(yùn)維監(jiān)控平臺介紹
Zabbix是一款由開源社區(qū)維護(hù)的數(shù)據(jù)中心設(shè)備,也是監(jiān)控各種信息系統(tǒng)的開源監(jiān)控平臺。Zabbix主要由Zabbix Server、Zabbix Agent、Zabbix Web等組件組成。
Zabbix Server為服務(wù)端,利用C語言編寫,主要功能是在服務(wù)器上開啟多個(gè)信息采集進(jìn)程,接收Agent發(fā)送的各種數(shù)據(jù)中心設(shè)備的監(jiān)控報(bào)告信息,組織所有配置、數(shù)據(jù)和操作并存儲在Zabbix的數(shù)據(jù)庫中。Zabbix Server支持各種主流數(shù)據(jù)庫存儲收集的數(shù)據(jù),如MySQl、PostgreSQL、Oracle或IBM DB2等。
Zabbix Agent 是收集監(jiān)控?cái)?shù)據(jù)的客戶端,它可以安裝在 Windows、Liunx 等各種操作系統(tǒng)上來收集主機(jī)的 CPU 負(fù)載、內(nèi)存、磁盤 IO、網(wǎng)絡(luò)流量等各種監(jiān)控?cái)?shù)據(jù),在無法安裝 Zabbix Agent 的網(wǎng)絡(luò)設(shè)備上可以開啟 SNMP 來對網(wǎng)絡(luò)設(shè)備進(jìn)行狀態(tài)監(jiān)控。
Zabbix Web 是 Zabbix 的前端管理界面,基于高效的 PHP 網(wǎng)頁語言編寫,其主要功能是可以對監(jiān)控平臺的數(shù)據(jù)進(jìn)行展示,并可以對監(jiān)控的各種參數(shù)和模板進(jìn)行配置。
Zabbix Proxy 是代理 Zabbix Server 收集監(jiān)控?cái)?shù)據(jù)的中間組件,當(dāng) Zabbix 監(jiān)控的設(shè)備和服務(wù)數(shù)量過多時(shí)可以采用分布式部署的方式,這時(shí)可以利用多個(gè) Zabbix-Proxy收集監(jiān)控?cái)?shù)據(jù)后,定期發(fā)送到 Zabbix Server 來減輕 Zabbix Server 服務(wù)器的負(fù)載壓力。
Zabbix Java Gateway 是一個(gè)充當(dāng)監(jiān)控 Java 運(yùn)行性能的網(wǎng)關(guān),可以用來監(jiān)控基于 Java 開發(fā)的信息系統(tǒng)的運(yùn)行性能,將收集的 Java 監(jiān)控?cái)?shù)據(jù)定期發(fā)送到 Zabbix Server。Zabbix 還可以自定義監(jiān)控項(xiàng),結(jié)合 Zabbix Agent UserParameter 的設(shè)置,可以實(shí)現(xiàn)對常用應(yīng)用服務(wù)如 Apache、Nginx、Mysql 等應(yīng)用服務(wù)的監(jiān)控。Zabbix 還包括完善的報(bào)警機(jī)制,可以與第三方平臺報(bào)警平臺對接,如可以接入微信公眾號、短信等各種信息推送平臺。Zabbix 的體系結(jié)構(gòu)如圖 1所示。
三、 Grafana 開源數(shù)據(jù)可視化工具簡介
Grafana 是利用 JavaScript 開發(fā)的強(qiáng)大的監(jiān)控?cái)?shù)據(jù)可視化工具,可以對接各種數(shù)據(jù)源,如 InfluxDB、OpenTSDB、Prometheus、Zabbix、Elasticsearch 等; 同時(shí)也支持各種美觀易用的圖表展現(xiàn)形式,如折線圖、散點(diǎn)圖、餅圖、表格等,圖表支持多 Y 軸、閾值告警對接郵箱、對數(shù)刻度等多種功能。當(dāng) Grafana 所提供的圖表不滿足要求時(shí),還可以自定義模板來開發(fā)符合要求的數(shù)據(jù)展示圖表。Grafana 可以針對監(jiān)控主題使用Dashboard 對某一個(gè)主題的圖表進(jìn)行集中展示,在 Dashboard 里可以輕松拖拽改變圖表的位置和布局,并可以通過圖表的 tag 快速對圖表進(jìn)行定位和編輯。Grafana 的 Dashboard 可以通過導(dǎo)出為 Json 文檔,快速保存、復(fù)制,并可以通過 Dashboard 的在線模板庫選取符合要求的 Dashboard 模板。
四、數(shù)據(jù)中心監(jiān)控對象介紹
空管數(shù)據(jù)中心需要監(jiān)控的對象可以分為以下幾類:
1、網(wǎng)絡(luò)設(shè)備的監(jiān)控 可以采用開啟網(wǎng)絡(luò)設(shè)備的 SNMP 功能,同時(shí)配置 Zabbix 的 SNMP 監(jiān)控項(xiàng)來采集網(wǎng)絡(luò)設(shè)備的監(jiān)控?cái)?shù)據(jù);
2、服務(wù)器硬件的監(jiān)控 可以開啟服務(wù)器主板的 IPMI 功能,并配置 Zabbix IPMI 監(jiān)控接口來收集硬件的各項(xiàng)數(shù)據(jù)如溫度、硬盤故障情況等;
3、實(shí)體服務(wù)器的監(jiān)控 這些服務(wù)器可以通過安裝 Zabbix Agent 并配合 Zabbix 內(nèi)置的 Linux與 Windows 的監(jiān)控模板的配置,來收集主機(jī)的 CPU 負(fù)載、內(nèi)存、磁盤 IO、網(wǎng)絡(luò)流量,運(yùn)行進(jìn)程數(shù)等各種數(shù)據(jù);
4、虛擬機(jī)的監(jiān)控 Zabbix 內(nèi)置了 VMware 的虛擬機(jī)監(jiān)控模板,可以結(jié)合該模板通過VCenter 遠(yuǎn)程 SDK 來直接采集 Vmware 虛擬機(jī)的 CPU 負(fù)載、內(nèi)存、磁盤使用情況等各種運(yùn)行信息;
5、Web 服務(wù)的監(jiān)控 數(shù)據(jù)中心常用的 Web 服務(wù)有 Apache、Nginx 等,監(jiān)控此類 Web 服務(wù)可以編寫客戶端執(zhí)行的采集 shell 腳本,并配合 Zabbix 配置自定義 Web 監(jiān)控項(xiàng)來采集 Web 應(yīng)用的各項(xiàng)性能數(shù)據(jù);
6、數(shù)據(jù)庫的監(jiān)控 數(shù)據(jù)中心一般常見的數(shù)據(jù)庫有 mysql、oracle 等,這些數(shù)據(jù)庫可以直接在 Zabbix配置相應(yīng)的內(nèi)置監(jiān)控項(xiàng),并通過 Zabbix 的監(jiān)控接口來實(shí)現(xiàn)對數(shù)據(jù)庫運(yùn)行狀態(tài)、運(yùn)行性能等數(shù)據(jù)的采集;
7、對基于 Java 的應(yīng)用服務(wù)的監(jiān)控 數(shù)據(jù)中心常見的 Java 應(yīng)用一般以 Tomcat 為主,要收集此類監(jiān)控?cái)?shù)據(jù)需要安裝 Zabbix Java Gateway,并開啟監(jiān)控端的 JMX 協(xié)議,最后在 Zabbix Server 上配置 JMX 監(jiān)控模板就可以實(shí)現(xiàn) Java 應(yīng)用程序的監(jiān)控。
五、數(shù)據(jù)中心監(jiān)控系統(tǒng)實(shí)施研究
依據(jù)上述 Zabbix 對數(shù)據(jù)中心各種監(jiān)控對象的監(jiān)控方法,基本可以對數(shù)據(jù)中心絕大多數(shù)需要監(jiān)控的對象實(shí)現(xiàn)統(tǒng)一監(jiān)控。Zabbix 雖然提供了各種圖形可視化功能,但是圖表的種類比較少,不能滿足空管分局?jǐn)?shù)據(jù)中心監(jiān)控平臺的可視化要求。Grafana 是利用 JavaScript 開發(fā)的強(qiáng)大的監(jiān)控?cái)?shù)據(jù)可視化工具,可以利用 Grafana 來對接 Zabbix 的監(jiān)控?cái)?shù)據(jù)源,對 Zabbix 采集的各種數(shù)據(jù)進(jìn)行展示和分析。通過安裝 Grafana 對接的 Zabbix 中的 plugins,可以直接對接 Zabbix 的數(shù)據(jù)源,然后通過自定義數(shù)據(jù)中心的每一種監(jiān)控對象的 Dashboard 模板,來實(shí)現(xiàn)對數(shù)據(jù)中心每一類對象監(jiān)控?cái)?shù)據(jù)的可視化展示。
以數(shù)據(jù)中心虛擬機(jī)的監(jiān)控模板 Dashboard 的創(chuàng)建為例,先基于數(shù)據(jù)源的各種監(jiān)控變量,如 CPU 使用量、內(nèi)存占用量、網(wǎng)絡(luò) IO 流量、磁盤讀寫情況來設(shè)置各種Dashboard 相應(yīng)的 Panel,如 CPU 使用情況圖、內(nèi)存占用率圖、網(wǎng)絡(luò) IO 圖等。再將設(shè)置好的 panel 布局組合成數(shù)據(jù)中心虛擬機(jī)監(jiān)控的 Dashboard,在此 Dashboard 中可以對數(shù)據(jù)中心的各項(xiàng)關(guān)鍵指標(biāo)進(jìn)行監(jiān)控。其他數(shù)據(jù)中心監(jiān)控對象的 Dashboard 都可以按照這個(gè)流程來進(jìn)行創(chuàng)建。數(shù)據(jù)中心服務(wù)器監(jiān)控Dashboard 的效果如圖 2所示。
六、數(shù)據(jù)中心監(jiān)控平臺建設(shè)
由于空管數(shù)據(jù)中心設(shè)備和各種應(yīng)用服務(wù)眾多,該數(shù)據(jù)中心運(yùn)維監(jiān)控平臺采用分布式的部署方式,具體部署方法如下: Zabbix Server 是采集監(jiān)控?cái)?shù)據(jù)的核心組件,為保障其可靠性,采用 2 臺服務(wù)器作為 Zabbix Server HA 集群來收集各中監(jiān)控端發(fā)來的數(shù)據(jù)。第一臺服務(wù)器作為 Zabbix Web 前端來對 zabbix 進(jìn)行配置和管理。為防止單點(diǎn)故障和保障數(shù)據(jù)可靠性,在第二臺服務(wù)器中安裝 mysql 負(fù)載均衡集群,作為 zabbix Server存儲監(jiān)控?cái)?shù)據(jù)的后端數(shù)據(jù)庫。第二臺服務(wù)器作為 Zabbix Proxy 用來中轉(zhuǎn) Zabbix Agent 發(fā)送的數(shù)據(jù)。一臺部署在主機(jī)房,一臺部署在分區(qū)機(jī)房,分別收集各個(gè)區(qū)域的監(jiān)控對象的數(shù)據(jù),減輕 Zabbix Server 直接搜集監(jiān)控?cái)?shù)據(jù)的壓力。Grafana 采用一臺服務(wù)器進(jìn)行安裝,作為數(shù)據(jù)中心監(jiān)控平臺的前端可視化服務(wù)。數(shù)據(jù)中心的各個(gè)監(jiān)控對象,可以按照之前所定義的分類分別進(jìn)行相應(yīng)的配置,來收集各種對象的監(jiān)控?cái)?shù)據(jù)??展軘?shù)據(jù)中心運(yùn)維監(jiān)控平臺架構(gòu)如圖 3 所示。
綜上所述,通過上述架構(gòu)建立的監(jiān)控平臺基本可以實(shí)現(xiàn)對空管數(shù)據(jù)中心各種監(jiān)控對象的狀態(tài)數(shù)據(jù)收集和可視化展示,解決空管數(shù)據(jù)中心設(shè)備和信息系統(tǒng)監(jiān)控所面臨的難題,提高空管數(shù)據(jù)中心的運(yùn)維效率。
七、結(jié)束語
Zabbix 是一種可以對數(shù)據(jù)中心各類監(jiān)控對象進(jìn)行狀態(tài)數(shù)據(jù)收集的監(jiān)控平臺,除了具有多種常見數(shù)據(jù)中心監(jiān)控對象的監(jiān)控能力,還可以自定義監(jiān)控腳本和監(jiān)控項(xiàng),對監(jiān)控對象的類型進(jìn)行擴(kuò)展,擁有 Grafana 強(qiáng)大的可視化功能。該平臺適用于空管數(shù)據(jù)中心的各種監(jiān)控場景,為其提供高效、高可視化、低成本的數(shù)據(jù)中心運(yùn)維監(jiān)控平臺??捎行Ы鉀Q空管數(shù)據(jù)中心運(yùn)維監(jiān)控效率低下、監(jiān)控對象類型少、監(jiān)控?cái)?shù)據(jù)可視化程度低等問題,實(shí)現(xiàn)空管設(shè)備集成化監(jiān)控。
參考文獻(xiàn)
[1]劉遠(yuǎn)超,李樹彬.基于Zabbix和微信企業(yè)號實(shí)現(xiàn)網(wǎng)絡(luò)監(jiān)控的研究[J],山東科學(xué),2017(04)
[2]吳兆松.Zabbix企業(yè)級分布式監(jiān)控系統(tǒng)[M].電子工業(yè)出版社,2014
[3]劉思堯.基于Zabbix的自動化巡檢系統(tǒng)的研究與實(shí)現(xiàn)[J].電力信息與通信技術(shù),2014(12)
[4]楊厚云.Centos下Zabbix的配置與使用[J].北京信息科技大學(xué)學(xué)報(bào),2015(01)
[5]王宗敏,基于Zabbix的分布式服務(wù)器監(jiān)控應(yīng)用研究[J].通信學(xué)報(bào),2013(S2)
[6]王曉鋒.劉淵.基于云平臺的網(wǎng)絡(luò)安全試驗(yàn)管理系統(tǒng)[J]. 現(xiàn)代計(jì)算機(jī) ,2020(01)