馬長峰 梁丹池
(廣西廣播電視技術中心)
隨著信息化建設的快速發展,面對眾多的信息化系統和設備,在運維中面臨的問題主要有:一、技術人員匱乏,疲于應付;二、運維管理的難度、復雜度和工作量都大大增加;三、不同設備、系統的管理后臺不統一,運維人員要逐個登錄后臺查看;四、缺乏可靠、穩定的告警手段。
為了保證信息化系統能穩定、可靠運行,提升技術人員的運維能力、管理水平、保障能力和工作效率,監控平臺的智能、自動、全面、人性化就十分重要。Zabbix是一款強大的開源監測平臺軟件,可以對各異構平臺、設備進行監測;并且提供二次開發接口,可向其它系統推送監測的數據,可減輕運維技術人員工作量。本文以Zabbix 3.4版為例,介紹測試平臺的搭建與使用過程。
Zabbix是在2001年發布的一個用于監視網絡服務、設備狀態等信息的免費開源軟件。它具有信息采集、存儲、展示等功能,主要的核心組件有server、agent、database、web、proxy,可通過SNMP、Agent、JMX、IPMI、Trapper等方式實現對服務器性能(cpu、內存占用率和硬盤利用率等)、網絡設備硬件性能和流量、web應用(響應時間、響應代碼、下載速度等)、數據庫(增刪查改、流入流出帶寬等)等多項監控。
本次測試的Zabbix軟件部署在Linux的Centos7.3系統中,首先在虛擬化平臺中配置一臺安裝好操作系統的虛擬機,使能SSH功能后,便可通過SecureCRT等終端管理軟件登錄到虛擬機上進行后續操作。
1.開放防火墻端口
Centos系統的防火墻策略默認是關閉所有端口,而Zabbix的agnet和web服務運行在10050及80端口,所以要先使用相關命令開放相關端口和修改防火墻策略來確保正常通訊。
2.關閉 SELinux
Linux系統中root賬號擁有最大的權限,該賬號被黑客利用將會產生重大安全事件,所以Linux系統又通過SELinux模塊在用戶權限上增加了進程的控制權限,進一步保障了系統的安全性。為減少測試工作操作量,建議暫時關閉SELinux。
3.安裝數據庫
目前Centos7不再包含MySQL數據庫,默認采用了MariaDB數據庫,該數據庫為MySQL的一個分支。下載并安裝好數據庫,啟動運行,為后續Zabbix應用提供數據存儲環境。
4.下載安裝Zabbix
為了保證平臺的穩定性和可靠性,本次部署Zabbix 4.0版本之前的最后一個穩定版本——3.4版,該軟件首先在CentOS中配置好rpm軟件包地址,再通過yum的方式從zabbix官方網站下載并完成安裝。
5.創建并配置Zabbix數據庫
在MariaDB中創建一個隸屬于Zabbix的數據庫并進行相應的配置,用于存儲采集到的監控信息,相關配置命令如圖1。

圖1 創建并配置Zabbix數據庫
6.其他相關配置
完成軟件部署后,還需啟動相關服務,并對部分功能項配置進行調整后才能正常打開Zabbix監測平臺,相關配置命令如圖2。

圖2 其他相關配置
通過以上操作, Zabbix平臺已經搭建完畢,但要實現監測功能還需要進行添加主機、配置監控項等操作。
本例以配置對服務器硬件、訪問web、交換機三種監測為主,配置的流程為“添加主機-添加監控項-圖形展示”,其他監測暫不測試。
Zabbix可通過agent和snmp來獲取服務器硬件性能數據,其中agent按操作系統又分為windows和linux,本例是在windows服務器上部署agent模塊后將監測數據推送到Zabbix Server上。首先在官網下載agent文件,解壓并配置后再拷貝至服務器的D盤根目錄下,相關配置及安裝命令如圖3。

圖3 windows下agent的配置及安裝命令
部署agent后,以監測CPU負載數據為例,在主菜單的“配置”里打開“主機-創建主機”,設置“主機名稱”(要與agent的conf文件內HostName名一致),設置“agent代理程序的接口”的IP為被監測主機的IP,然后在“模板”內選擇“Template OS Windows”。便可以在主菜單的“監測中”中查看到監測數據,為了更直觀的顯示數據,還可以選擇“圖形”通過圖表的方式查看數據,查看cpu負載數據效果如圖4。同時在Zabbix的模板內對于Windows服務器的硬件數據監測項有很多,其查看方法類似。

圖4 監測服務器cpu負載數據
Zabbix可對web網站的響應、下載、賬號登錄和退出等數據進行監測。以監測網盤首頁返回網頁能否正常訪問的狀態碼“200”為例,配置如下:在主菜單“配置”內添加主機,然后選擇“web場景”,創建場景名“web測試場景”,選擇并添加“步驟”,輸入名稱、URL和狀態碼等信息。完成配置后,就可在主菜單的“監測中-Web監測”內查看到訪問網站的數據。效果如圖5。

圖5 監測網盤首頁訪問數據
Zabbix可通過SNMP協議監測交換機、Linux服務器等設備,以監測H3C交換機互聯端口24口的輸入輸出流量為例。首先對交換機snmp-agent community的讀團體名進行配置,本例中使用默認的public。然后通過Getif軟件取得交換機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內添加主機并設置好主機名稱等信息,在“SNMP接口”上添加主機(交換機)的IP地址。此后在主機上再添加“監控項”并設置好名稱,選擇“SNMPV2客戶端”,輸入“鍵值”:ifInOctets.24,輸入“SNMP OID”:1.3.6.1.2.1.2.2.1.16.24;輸出口的配置類似。為了更直觀的展示數據,在“主機”內選擇“圖形”并添加相應監控項,即可在“監測中-圖形”查看到監測項的圖形報表,效果如圖6。

圖6 交換機流量監測
通過相關配置,上文已經實現了對相關設備、服務、系統的數據監測。當故障發生時Zabbix提供了Email、Jabber、Sms三種報警信息推送方式,同時還允許管理員通過編寫腳本來擴展,本例中將使用Python腳本從企業微信中推送報警信息。
首先登錄企業微信的后臺,在工作臺內為Zabbix創建一個應用,記錄下AgentId、Secrect、CorpID信息,同時設置報警信息推送人員范圍。在github代碼倉庫下載Zabbix企業微信推送用的Python腳本,完成后將AgentId等三個信息分別填入腳本內相應位置,并將腳本重命名為wechat.py,導入到Zabbix主機的/usr/lib/zabbix/alertscripts內。部署好腳本后,可通過“./wechat.py 微信用戶ID test 內容”命令測試推送功能是否正常。完成以上步驟,即可在Zabbix管理端添加企業微信推送的功能:打開“管理-報警媒介類型-創建媒體類型”,填入相關信息和腳本參數,其中腳本參數用于控制推送信息的格式。
Zabbix報警推送機制是:監測項-觸發器-動作;只有在監測項的數據滿足了觸發條件時,系統才會通過動作完成相關信息的推送。監測項在前文范例中已完成相關配置,現主要介紹觸發器和動作的配置,以監測是否能正常訪問備機Zabbix登錄頁面為例:對Zabbix的動作進行配置,打開“配置-動作”新建一個動作為“Wechat Alter”,設置好名稱及觸發條件,在“操作、恢復操作、確認操作”內設置推送信息的標題、消息內容以及推送的Zabbix賬號等,便完成了“動作”的配置;再對“觸發器”進行配置:打開“配置-主機-備機Zabbix觸發器”,選擇“創建觸發器”并設置名稱和嚴重性,在表達式中填入“{zabbix_back:web.test.rspcode[場景,步驟].last(,)}<>200”(文中4.2章節涉及的場景,即收到頁面狀態碼非200時觸發動作)。為了檢測以上配置是否正確,可以將備機Zabbix系統的首頁文件index.php修改為index.bak(模擬PHP文件丟失導致網頁無法打開的情況)。報警信息測試效果如圖7。同時,為了進一步減少誤報警,還可以為觸發器增加“依賴關系”,通過與網絡等狀態進行關聯,對故障的真實性、源頭、影響面進行判斷。

圖7 通過企業微信推送報警信息
除了本文提及的監測項目,Zabbix還具有對數據庫、日志、文件、中間件等數據的監測等功能。此外,Zabbix靈活易用,管理人員可通過編寫腳本增加各種監測功能,且其自身也提供了大量的模板,降低了使用難度。通過以上案例,可知Zabbix具有設置靈活、部署簡便、資源豐富等優點,能夠實現在一個平臺上對大部分設備、系統進行監測,改變以往運維人員要登錄各個網管運維管理的工作模式,減輕運維人員的工作負擔,是一個提升運維管理工作效率的企業級開源解決方案。