文/邵建輝
服務器是當今計算機網絡體系中的核心部分,其可用性和性能是決定關鍵業務能否順利運行的重要因素。在新聞編輯系統中,服務器的安全穩定運行是新聞稿件編發業務正常開展的前提和基礎之一,如何在一定規模的內網編輯系統中實時了解各個服務器的運行狀態,同時查看歷史運行狀態和趨勢,提前了解運行中存在的問題,以采取有效的處理措施,為系統安全運行提供保障。因此,使用專用服務器監控軟件無疑是很好的選擇,目前,類似編輯業務系統使用的監控軟件只具備實時監控功能,無數據庫存儲,無法查看歷史運行狀態和趨勢,為此本文基于Zabbix開展了內網編輯系統監控應用研究,借助于該軟件系統,我們可以輕易地實現以上的要求,減輕我們繁重的服務器管理任務,提前預判可能存在的問題,進而采取措施,實現業務系統的持續運行。
Zabbix是一個基于WEB界面的分布式開源企業級自動化運維解決方案,能夠監控各種網絡設備、存儲以及服務器系統應用的運行參數,可以提供靈活的報警機制,使系統管理員快速定位到故障設備,其還具有主動式監控、支持微信、電話、郵件等多維化報警功能,支持多種系統的異構平臺、支持IP協議的設備均可監控、開源軟件支持按需定向開發、支持腳本運行可實現自動化運維等特點,因此得到各大互聯網公司的廣泛認可和應用。
根據網絡環境、監控規模,Zabbix主要可分三種架構:server-client、master-node-client 和 server-proxy-client。本文采用server-client架構,server-client架構是Zabbix的最簡單的架構,監控機和被監控機之間不經過任何代理,直接由Zabbix server和Zabbix agentd之間進行數據交互,適用于網絡比較簡單,設備比較少的監控環境。
Zabbix server安裝在監控服務器上,通過C/S模式采集數據,并將歷史數據存儲在數據庫(MySQL,ORACLE等)中,以web方式顯示數據和配置系統。可以通過SNMP、Zabbix agent、ping、端口監視等方法提供對遠程服務器/網絡狀態進行監控和數據收集等功能,它可以運 行 在 Linux、Solaris、HP-UX、AIX、Free BSD、Open BSD、OS X等平臺上。
Zabbix agent安裝在被監視的目標服務器上,主要完成對硬件信息、系統性能、文件系統、應用系統和網絡等信息的收集。Zabbix agent收集數據分為主動和被動兩種模式。
1.1.1 主動模式
agent請求server獲取主動的監控項列表,并主動將監控項內需要檢測的數據提交給server。
1.1.2 被動模式
server向agent請求獲取監控項的數據,agent返回數據。
Zabbix監控報警由如下組成部分:Item(監控項)、Trigger(觸發器)、Action(動作)、Media(報警介質)、User(用戶)、Event(事件)等。Item為監控采集的項目,可以使用Zabbix內建的item,也可以通過在conf文件里增加UserParameter自定義,建立用戶自己的監控項;Trigger為報警觸發器,將采集來的item值進行一定的判斷,產生具有一定報警等級的事件;Action就是server對事件(Event)需要做相應的措施,而Action的方式是由Media來決定,Media有五種,常見的是mail、sms、script這三種。
一個完整的監控報警流程如下:server通過agent定時獲取Item(監控項)數據,Trigger(觸發器)根據定義的觸發設置進行判斷,如果滿足觸發條件,產生具相應報警等級(分為災難、嚴重、一般嚴重、警告、消息五個等級)的事件,并以定義的媒介通知定義的用戶,等待用戶確認處理。
根據內網編輯系統服務器數量規模,監控系統采用server-client架構,直接由Zabbix server和Zabbix agentd之間進行數據交互,Zabbix agent收集數據采用被動模式,即server向agent請求獲取監控項數據。
服務器端安裝:①安裝PHP運行環境;②安裝數據庫支持,如MySQL;③創建服務器端的Zabbix系統帳號;④下載Zabbix源代碼,在Linux下編譯安裝服務器端。由于在內網中,通過源碼編譯安裝,Zabbix server選擇3.0TLS版(最新版本為3.0.19),操作系統選Cenos7.5。
客戶端安裝:根據被監控的服務器的操作系統類型選擇不同的Zabbix agent客戶端并安裝。Windows服務器直接安裝64位可執行文件;Linux服務器采用源碼編譯安裝。
根據內網編輯系統業務梳理,監控項主要分為文件系統、系統性能、應用進程、稿件目錄、網絡狀態、web監控等主項,具體如表1所示。

表1 內網編輯系統監控項
(1)文件系統監控主要監控服務器磁盤空間的使用狀況,監控項的KEY值設置為:vfs.fs.size[磁盤,pused],返回值為磁盤使用百分比。
(2)系統性能監控主要監控服務器的CPU使用和內存可用情況,監控項的KEY值設置為:system.cpu.load[,avg1]和 vm.memory.size[available],返回值分別為CPU使用平均百分比和內存可用字節。
(3)應用進程監控主要監控服務器各應用進程運行狀態,監控項的KEY值設置為:proc.num[,,,應用進程名],返回值為該應用進程運行個數。
(4)稿件目錄監控主要監控接收或發送稿件處理狀態,分為目錄為空檢查和目錄超時檢查。目錄超時檢查項的KEY值設置為:vfs.file.time[文件目錄路徑],返回值為Unix時間戳,單位為秒;目錄為空檢查項的KEY,Zabbix內建KEY不能實現,必須定制,定制方法如下:
修改Agent端的服務器的zabbix_agentd.conf配置文件,設置UnsafeUserParameters=1,增加UserParameter=user.filecount[*],ls -l “$1” |grep “^-”|wc -l;在 Server端設置目錄為空檢查項的自定義KEY值為:user.filecount[文件目錄路徑],返回值為被監控文件目錄下文件個數。
一般觸發器設置格式為:{
(1)文件系統監控觸發器:{服務器名:vfs.fs.size[磁盤,pused].last(0)}>80,設置磁盤使用率大于80%報警,報警級別嚴重。
(2)系統性能監控觸發器:{服務器名:system.cpu.load[/,avg1].last(0)}>80,設置CPU平均使用率大于80%報警,報警級別嚴重;{服務器名:vm.memory.size[available].last(0)}<1,設置內存可用空間小于1Gb報警,報警級別嚴重。
(3)應用進程監控觸發器:{服務器名:proc.num[,,,應用進程名].last(0)}<>1,設置進程數量不為1則報警,報警級別嚴重。
(4)稿件目錄監控觸發器:{服務器名:user.filecount[文件目錄路徑].min(10m)}>0,設置10分鐘內目錄為空則報警,報警級別一般嚴重;{服務器名:vfs.file.time[文件目錄路徑].fuzzytime(1h)}=0,設置目錄超時1小時無更新則報警,報警級別嚴重。
(5)網絡狀態和web監控使用系統默認值,當服務器PING不通或web頁面返回錯誤時報警。
根據設置的監控項內容,可設置圖形化監控界面,并進行聚合,便于直觀地查看歷史監控狀態和未來趨勢,配合合理有效的觸發器設置,可提前發現問題端倪。本文圖形監控界面示例如下。

圖1 Zabbix圖形監控界
本文通過采用開源工具Zabbix,在內網編輯系統部署搭建了一套分布式、高效、可視化的監控系統,減輕了繁重的服務器管理任務,并經過用戶定制,添加自定義監控項,完成對內網編輯系統服務器上關鍵應用進程、稿件目錄和出入庫狀態等監控,可通過Web查看整個系統中服務器的當前運行情況和歷史運行記錄,為系統管理員提供實時的判斷依據,也可提前預判可能存在的問題,進而采取措施,對保障內網編輯系統的正常運行具有重要意義。