馬長峰 梁丹池
(廣西廣播電視技術(shù)中心)
隨著信息化建設(shè)的快速發(fā)展,面對(duì)眾多的信息化系統(tǒng)和設(shè)備,在運(yùn)維中面臨的問題主要有:一、技術(shù)人員匱乏,疲于應(yīng)付;二、運(yùn)維管理的難度、復(fù)雜度和工作量都大大增加;三、不同設(shè)備、系統(tǒng)的管理后臺(tái)不統(tǒng)一,運(yùn)維人員要逐個(gè)登錄后臺(tái)查看;四、缺乏可靠、穩(wěn)定的告警手段。
為了保證信息化系統(tǒng)能穩(wěn)定、可靠運(yùn)行,提升技術(shù)人員的運(yùn)維能力、管理水平、保障能力和工作效率,監(jiān)控平臺(tái)的智能、自動(dòng)、全面、人性化就十分重要。Zabbix是一款強(qiáng)大的開源監(jiān)測(cè)平臺(tái)軟件,可以對(duì)各異構(gòu)平臺(tái)、設(shè)備進(jìn)行監(jiān)測(cè);并且提供二次開發(fā)接口,可向其它系統(tǒng)推送監(jiān)測(cè)的數(shù)據(jù),可減輕運(yùn)維技術(shù)人員工作量。本文以Zabbix 3.4版為例,介紹測(cè)試平臺(tái)的搭建與使用過程。
Zabbix是在2001年發(fā)布的一個(gè)用于監(jiān)視網(wǎng)絡(luò)服務(wù)、設(shè)備狀態(tài)等信息的免費(fèi)開源軟件。它具有信息采集、存儲(chǔ)、展示等功能,主要的核心組件有server、agent、database、web、proxy,可通過SNMP、Agent、JMX、IPMI、Trapper等方式實(shí)現(xiàn)對(duì)服務(wù)器性能(cpu、內(nèi)存占用率和硬盤利用率等)、網(wǎng)絡(luò)設(shè)備硬件性能和流量、web應(yīng)用(響應(yīng)時(shí)間、響應(yīng)代碼、下載速度等)、數(shù)據(jù)庫(增刪查改、流入流出帶寬等)等多項(xiàng)監(jiān)控。
本次測(cè)試的Zabbix軟件部署在Linux的Centos7.3系統(tǒng)中,首先在虛擬化平臺(tái)中配置一臺(tái)安裝好操作系統(tǒng)的虛擬機(jī),使能SSH功能后,便可通過SecureCRT等終端管理軟件登錄到虛擬機(jī)上進(jìn)行后續(xù)操作。
1.開放防火墻端口
Centos系統(tǒng)的防火墻策略默認(rèn)是關(guān)閉所有端口,而Zabbix的agnet和web服務(wù)運(yùn)行在10050及80端口,所以要先使用相關(guān)命令開放相關(guān)端口和修改防火墻策略來確保正常通訊。
2.關(guān)閉 SELinux
Linux系統(tǒng)中root賬號(hào)擁有最大的權(quán)限,該賬號(hào)被黑客利用將會(huì)產(chǎn)生重大安全事件,所以Linux系統(tǒng)又通過SELinux模塊在用戶權(quán)限上增加了進(jìn)程的控制權(quán)限,進(jìn)一步保障了系統(tǒng)的安全性。為減少測(cè)試工作操作量,建議暫時(shí)關(guān)閉SELinux。
3.安裝數(shù)據(jù)庫
目前Centos7不再包含MySQL數(shù)據(jù)庫,默認(rèn)采用了MariaDB數(shù)據(jù)庫,該數(shù)據(jù)庫為MySQL的一個(gè)分支。下載并安裝好數(shù)據(jù)庫,啟動(dòng)運(yùn)行,為后續(xù)Zabbix應(yīng)用提供數(shù)據(jù)存儲(chǔ)環(huán)境。
4.下載安裝Zabbix
為了保證平臺(tái)的穩(wěn)定性和可靠性,本次部署Zabbix 4.0版本之前的最后一個(gè)穩(wěn)定版本——3.4版,該軟件首先在CentOS中配置好rpm軟件包地址,再通過yum的方式從zabbix官方網(wǎng)站下載并完成安裝。
5.創(chuàng)建并配置Zabbix數(shù)據(jù)庫
在MariaDB中創(chuàng)建一個(gè)隸屬于Zabbix的數(shù)據(jù)庫并進(jìn)行相應(yīng)的配置,用于存儲(chǔ)采集到的監(jiān)控信息,相關(guān)配置命令如圖1。
圖1 創(chuàng)建并配置Zabbix數(shù)據(jù)庫
6.其他相關(guān)配置
完成軟件部署后,還需啟動(dòng)相關(guān)服務(wù),并對(duì)部分功能項(xiàng)配置進(jìn)行調(diào)整后才能正常打開Zabbix監(jiān)測(cè)平臺(tái),相關(guān)配置命令如圖2。
圖2 其他相關(guān)配置
通過以上操作, Zabbix平臺(tái)已經(jīng)搭建完畢,但要實(shí)現(xiàn)監(jiān)測(cè)功能還需要進(jìn)行添加主機(jī)、配置監(jiān)控項(xiàng)等操作。
本例以配置對(duì)服務(wù)器硬件、訪問web、交換機(jī)三種監(jiān)測(cè)為主,配置的流程為“添加主機(jī)-添加監(jiān)控項(xiàng)-圖形展示”,其他監(jiān)測(cè)暫不測(cè)試。
Zabbix可通過agent和snmp來獲取服務(wù)器硬件性能數(shù)據(jù),其中agent按操作系統(tǒng)又分為windows和linux,本例是在windows服務(wù)器上部署agent模塊后將監(jiān)測(cè)數(shù)據(jù)推送到Zabbix Server上。首先在官網(wǎng)下載agent文件,解壓并配置后再拷貝至服務(wù)器的D盤根目錄下,相關(guān)配置及安裝命令如圖3。
圖3 windows下agent的配置及安裝命令
部署agent后,以監(jiān)測(cè)CPU負(fù)載數(shù)據(jù)為例,在主菜單的“配置”里打開“主機(jī)-創(chuàng)建主機(jī)”,設(shè)置“主機(jī)名稱”(要與agent的conf文件內(nèi)HostName名一致),設(shè)置“agent代理程序的接口”的IP為被監(jiān)測(cè)主機(jī)的IP,然后在“模板”內(nèi)選擇“Template OS Windows”。便可以在主菜單的“監(jiān)測(cè)中”中查看到監(jiān)測(cè)數(shù)據(jù),為了更直觀的顯示數(shù)據(jù),還可以選擇“圖形”通過圖表的方式查看數(shù)據(jù),查看cpu負(fù)載數(shù)據(jù)效果如圖4。同時(shí)在Zabbix的模板內(nèi)對(duì)于Windows服務(wù)器的硬件數(shù)據(jù)監(jiān)測(cè)項(xiàng)有很多,其查看方法類似。
圖4 監(jiān)測(cè)服務(wù)器cpu負(fù)載數(shù)據(jù)
Zabbix可對(duì)web網(wǎng)站的響應(yīng)、下載、賬號(hào)登錄和退出等數(shù)據(jù)進(jìn)行監(jiān)測(cè)。以監(jiān)測(cè)網(wǎng)盤首頁返回網(wǎng)頁能否正常訪問的狀態(tài)碼“200”為例,配置如下:在主菜單“配置”內(nèi)添加主機(jī),然后選擇“web場景”,創(chuàng)建場景名“web測(cè)試場景”,選擇并添加“步驟”,輸入名稱、URL和狀態(tài)碼等信息。完成配置后,就可在主菜單的“監(jiān)測(cè)中-Web監(jiān)測(cè)”內(nèi)查看到訪問網(wǎng)站的數(shù)據(jù)。效果如圖5。
圖5 監(jiān)測(cè)網(wǎng)盤首頁訪問數(shù)據(jù)
Zabbix可通過SNMP協(xié)議監(jiān)測(cè)交換機(jī)、Linux服務(wù)器等設(shè)備,以監(jiān)測(cè)H3C交換機(jī)互聯(lián)端口24口的輸入輸出流量為例。首先對(duì)交換機(jī)snmp-agent community的讀團(tuán)體名進(jìn)行配置,本例中使用默認(rèn)的public。然后通過Getif軟件取得交換機(jī)24口輸入輸出的OID信息:ifInOctets:1.3.6.1.2.1.2.2.1.10 和 ifOutOctets:1.3.6.1.2.1.2.2.1.16。收集以上信息后在Zabbix內(nèi)添加主機(jī)并設(shè)置好主機(jī)名稱等信息,在“SNMP接口”上添加主機(jī)(交換機(jī))的IP地址。此后在主機(jī)上再添加“監(jiān)控項(xiàng)”并設(shè)置好名稱,選擇“SNMPV2客戶端”,輸入“鍵值”:ifInOctets.24,輸入“SNMP OID”:1.3.6.1.2.1.2.2.1.16.24;輸出口的配置類似。為了更直觀的展示數(shù)據(jù),在“主機(jī)”內(nèi)選擇“圖形”并添加相應(yīng)監(jiān)控項(xiàng),即可在“監(jiān)測(cè)中-圖形”查看到監(jiān)測(cè)項(xiàng)的圖形報(bào)表,效果如圖6。
圖6 交換機(jī)流量監(jiān)測(cè)
通過相關(guān)配置,上文已經(jīng)實(shí)現(xiàn)了對(duì)相關(guān)設(shè)備、服務(wù)、系統(tǒng)的數(shù)據(jù)監(jiān)測(cè)。當(dāng)故障發(fā)生時(shí)Zabbix提供了Email、Jabber、Sms三種報(bào)警信息推送方式,同時(shí)還允許管理員通過編寫腳本來擴(kuò)展,本例中將使用Python腳本從企業(yè)微信中推送報(bào)警信息。
首先登錄企業(yè)微信的后臺(tái),在工作臺(tái)內(nèi)為Zabbix創(chuàng)建一個(gè)應(yīng)用,記錄下AgentId、Secrect、CorpID信息,同時(shí)設(shè)置報(bào)警信息推送人員范圍。在github代碼倉庫下載Zabbix企業(yè)微信推送用的Python腳本,完成后將AgentId等三個(gè)信息分別填入腳本內(nèi)相應(yīng)位置,并將腳本重命名為wechat.py,導(dǎo)入到Zabbix主機(jī)的/usr/lib/zabbix/alertscripts內(nèi)。部署好腳本后,可通過“./wechat.py 微信用戶ID test 內(nèi)容”命令測(cè)試推送功能是否正常。完成以上步驟,即可在Zabbix管理端添加企業(yè)微信推送的功能:打開“管理-報(bào)警媒介類型-創(chuàng)建媒體類型”,填入相關(guān)信息和腳本參數(shù),其中腳本參數(shù)用于控制推送信息的格式。
Zabbix報(bào)警推送機(jī)制是:監(jiān)測(cè)項(xiàng)-觸發(fā)器-動(dòng)作;只有在監(jiān)測(cè)項(xiàng)的數(shù)據(jù)滿足了觸發(fā)條件時(shí),系統(tǒng)才會(huì)通過動(dòng)作完成相關(guān)信息的推送。監(jiān)測(cè)項(xiàng)在前文范例中已完成相關(guān)配置,現(xiàn)主要介紹觸發(fā)器和動(dòng)作的配置,以監(jiān)測(cè)是否能正常訪問備機(jī)Zabbix登錄頁面為例:對(duì)Zabbix的動(dòng)作進(jìn)行配置,打開“配置-動(dòng)作”新建一個(gè)動(dòng)作為“Wechat Alter”,設(shè)置好名稱及觸發(fā)條件,在“操作、恢復(fù)操作、確認(rèn)操作”內(nèi)設(shè)置推送信息的標(biāo)題、消息內(nèi)容以及推送的Zabbix賬號(hào)等,便完成了“動(dòng)作”的配置;再對(duì)“觸發(fā)器”進(jìn)行配置:打開“配置-主機(jī)-備機(jī)Zabbix觸發(fā)器”,選擇“創(chuàng)建觸發(fā)器”并設(shè)置名稱和嚴(yán)重性,在表達(dá)式中填入“{zabbix_back:web.test.rspcode[場景,步驟].last(,)}<>200”(文中4.2章節(jié)涉及的場景,即收到頁面狀態(tài)碼非200時(shí)觸發(fā)動(dòng)作)。為了檢測(cè)以上配置是否正確,可以將備機(jī)Zabbix系統(tǒng)的首頁文件index.php修改為index.bak(模擬PHP文件丟失導(dǎo)致網(wǎng)頁無法打開的情況)。報(bào)警信息測(cè)試效果如圖7。同時(shí),為了進(jìn)一步減少誤報(bào)警,還可以為觸發(fā)器增加“依賴關(guān)系”,通過與網(wǎng)絡(luò)等狀態(tài)進(jìn)行關(guān)聯(lián),對(duì)故障的真實(shí)性、源頭、影響面進(jìn)行判斷。
圖7 通過企業(yè)微信推送報(bào)警信息
除了本文提及的監(jiān)測(cè)項(xiàng)目,Zabbix還具有對(duì)數(shù)據(jù)庫、日志、文件、中間件等數(shù)據(jù)的監(jiān)測(cè)等功能。此外,Zabbix靈活易用,管理人員可通過編寫腳本增加各種監(jiān)測(cè)功能,且其自身也提供了大量的模板,降低了使用難度。通過以上案例,可知Zabbix具有設(shè)置靈活、部署簡便、資源豐富等優(yōu)點(diǎn),能夠?qū)崿F(xiàn)在一個(gè)平臺(tái)上對(duì)大部分設(shè)備、系統(tǒng)進(jìn)行監(jiān)測(cè),改變以往運(yùn)維人員要登錄各個(gè)網(wǎng)管運(yùn)維管理的工作模式,減輕運(yùn)維人員的工作負(fù)擔(dān),是一個(gè)提升運(yùn)維管理工作效率的企業(yè)級(jí)開源解決方案。