文/邵建輝
服務(wù)器是當(dāng)今計算機網(wǎng)絡(luò)體系中的核心部分,其可用性和性能是決定關(guān)鍵業(yè)務(wù)能否順利運行的重要因素。在新聞編輯系統(tǒng)中,服務(wù)器的安全穩(wěn)定運行是新聞稿件編發(fā)業(yè)務(wù)正常開展的前提和基礎(chǔ)之一,如何在一定規(guī)模的內(nèi)網(wǎng)編輯系統(tǒng)中實時了解各個服務(wù)器的運行狀態(tài),同時查看歷史運行狀態(tài)和趨勢,提前了解運行中存在的問題,以采取有效的處理措施,為系統(tǒng)安全運行提供保障。因此,使用專用服務(wù)器監(jiān)控軟件無疑是很好的選擇,目前,類似編輯業(yè)務(wù)系統(tǒng)使用的監(jiān)控軟件只具備實時監(jiān)控功能,無數(shù)據(jù)庫存儲,無法查看歷史運行狀態(tài)和趨勢,為此本文基于Zabbix開展了內(nèi)網(wǎng)編輯系統(tǒng)監(jiān)控應(yīng)用研究,借助于該軟件系統(tǒng),我們可以輕易地實現(xiàn)以上的要求,減輕我們繁重的服務(wù)器管理任務(wù),提前預(yù)判可能存在的問題,進而采取措施,實現(xiàn)業(yè)務(wù)系統(tǒng)的持續(xù)運行。
Zabbix是一個基于WEB界面的分布式開源企業(yè)級自動化運維解決方案,能夠監(jiān)控各種網(wǎng)絡(luò)設(shè)備、存儲以及服務(wù)器系統(tǒng)應(yīng)用的運行參數(shù),可以提供靈活的報警機制,使系統(tǒng)管理員快速定位到故障設(shè)備,其還具有主動式監(jiān)控、支持微信、電話、郵件等多維化報警功能,支持多種系統(tǒng)的異構(gòu)平臺、支持IP協(xié)議的設(shè)備均可監(jiān)控、開源軟件支持按需定向開發(fā)、支持腳本運行可實現(xiàn)自動化運維等特點,因此得到各大互聯(lián)網(wǎng)公司的廣泛認可和應(yīng)用。
根據(jù)網(wǎng)絡(luò)環(huán)境、監(jiān)控規(guī)模,Zabbix主要可分三種架構(gòu):server-client、master-node-client 和 server-proxy-client。本文采用server-client架構(gòu),server-client架構(gòu)是Zabbix的最簡單的架構(gòu),監(jiān)控機和被監(jiān)控機之間不經(jīng)過任何代理,直接由Zabbix server和Zabbix agentd之間進行數(shù)據(jù)交互,適用于網(wǎng)絡(luò)比較簡單,設(shè)備比較少的監(jiān)控環(huán)境。
Zabbix server安裝在監(jiān)控服務(wù)器上,通過C/S模式采集數(shù)據(jù),并將歷史數(shù)據(jù)存儲在數(shù)據(jù)庫(MySQL,ORACLE等)中,以web方式顯示數(shù)據(jù)和配置系統(tǒng)。可以通過SNMP、Zabbix agent、ping、端口監(jiān)視等方法提供對遠程服務(wù)器/網(wǎng)絡(luò)狀態(tài)進行監(jiān)控和數(shù)據(jù)收集等功能,它可以運 行 在 Linux、Solaris、HP-UX、AIX、Free BSD、Open BSD、OS X等平臺上。
Zabbix agent安裝在被監(jiān)視的目標(biāo)服務(wù)器上,主要完成對硬件信息、系統(tǒng)性能、文件系統(tǒng)、應(yīng)用系統(tǒng)和網(wǎng)絡(luò)等信息的收集。Zabbix agent收集數(shù)據(jù)分為主動和被動兩種模式。
1.1.1 主動模式
agent請求server獲取主動的監(jiān)控項列表,并主動將監(jiān)控項內(nèi)需要檢測的數(shù)據(jù)提交給server。
1.1.2 被動模式
server向agent請求獲取監(jiān)控項的數(shù)據(jù),agent返回數(shù)據(jù)。
Zabbix監(jiān)控報警由如下組成部分:Item(監(jiān)控項)、Trigger(觸發(fā)器)、Action(動作)、Media(報警介質(zhì))、User(用戶)、Event(事件)等。Item為監(jiān)控采集的項目,可以使用Zabbix內(nèi)建的item,也可以通過在conf文件里增加UserParameter自定義,建立用戶自己的監(jiān)控項;Trigger為報警觸發(fā)器,將采集來的item值進行一定的判斷,產(chǎn)生具有一定報警等級的事件;Action就是server對事件(Event)需要做相應(yīng)的措施,而Action的方式是由Media來決定,Media有五種,常見的是mail、sms、script這三種。
一個完整的監(jiān)控報警流程如下:server通過agent定時獲取Item(監(jiān)控項)數(shù)據(jù),Trigger(觸發(fā)器)根據(jù)定義的觸發(fā)設(shè)置進行判斷,如果滿足觸發(fā)條件,產(chǎn)生具相應(yīng)報警等級(分為災(zāi)難、嚴重、一般嚴重、警告、消息五個等級)的事件,并以定義的媒介通知定義的用戶,等待用戶確認處理。
根據(jù)內(nèi)網(wǎng)編輯系統(tǒng)服務(wù)器數(shù)量規(guī)模,監(jiān)控系統(tǒng)采用server-client架構(gòu),直接由Zabbix server和Zabbix agentd之間進行數(shù)據(jù)交互,Zabbix agent收集數(shù)據(jù)采用被動模式,即server向agent請求獲取監(jiān)控項數(shù)據(jù)。
服務(wù)器端安裝:①安裝PHP運行環(huán)境;②安裝數(shù)據(jù)庫支持,如MySQL;③創(chuàng)建服務(wù)器端的Zabbix系統(tǒng)帳號;④下載Zabbix源代碼,在Linux下編譯安裝服務(wù)器端。由于在內(nèi)網(wǎng)中,通過源碼編譯安裝,Zabbix server選擇3.0TLS版(最新版本為3.0.19),操作系統(tǒng)選Cenos7.5。
客戶端安裝:根據(jù)被監(jiān)控的服務(wù)器的操作系統(tǒng)類型選擇不同的Zabbix agent客戶端并安裝。Windows服務(wù)器直接安裝64位可執(zhí)行文件;Linux服務(wù)器采用源碼編譯安裝。
根據(jù)內(nèi)網(wǎng)編輯系統(tǒng)業(yè)務(wù)梳理,監(jiān)控項主要分為文件系統(tǒng)、系統(tǒng)性能、應(yīng)用進程、稿件目錄、網(wǎng)絡(luò)狀態(tài)、web監(jiān)控等主項,具體如表1所示。
表1 內(nèi)網(wǎng)編輯系統(tǒng)監(jiān)控項
(1)文件系統(tǒng)監(jiān)控主要監(jiān)控服務(wù)器磁盤空間的使用狀況,監(jiān)控項的KEY值設(shè)置為:vfs.fs.size[磁盤,pused],返回值為磁盤使用百分比。
(2)系統(tǒng)性能監(jiān)控主要監(jiān)控服務(wù)器的CPU使用和內(nèi)存可用情況,監(jiān)控項的KEY值設(shè)置為:system.cpu.load[,avg1]和 vm.memory.size[available],返回值分別為CPU使用平均百分比和內(nèi)存可用字節(jié)。
(3)應(yīng)用進程監(jiān)控主要監(jiān)控服務(wù)器各應(yīng)用進程運行狀態(tài),監(jiān)控項的KEY值設(shè)置為:proc.num[,,,應(yīng)用進程名],返回值為該應(yīng)用進程運行個數(shù)。
(4)稿件目錄監(jiān)控主要監(jiān)控接收或發(fā)送稿件處理狀態(tài),分為目錄為空檢查和目錄超時檢查。目錄超時檢查項的KEY值設(shè)置為:vfs.file.time[文件目錄路徑],返回值為Unix時間戳,單位為秒;目錄為空檢查項的KEY,Zabbix內(nèi)建KEY不能實現(xiàn),必須定制,定制方法如下:
修改Agent端的服務(wù)器的zabbix_agentd.conf配置文件,設(shè)置UnsafeUserParameters=1,增加UserParameter=user.filecount[*],ls -l “$1” |grep “^-”|wc -l;在 Server端設(shè)置目錄為空檢查項的自定義KEY值為:user.filecount[文件目錄路徑],返回值為被監(jiān)控文件目錄下文件個數(shù)。
一般觸發(fā)器設(shè)置格式為:{
(1)文件系統(tǒng)監(jiān)控觸發(fā)器:{服務(wù)器名:vfs.fs.size[磁盤,pused].last(0)}>80,設(shè)置磁盤使用率大于80%報警,報警級別嚴重。
(2)系統(tǒng)性能監(jiān)控觸發(fā)器:{服務(wù)器名:system.cpu.load[/,avg1].last(0)}>80,設(shè)置CPU平均使用率大于80%報警,報警級別嚴重;{服務(wù)器名:vm.memory.size[available].last(0)}<1,設(shè)置內(nèi)存可用空間小于1Gb報警,報警級別嚴重。
(3)應(yīng)用進程監(jiān)控觸發(fā)器:{服務(wù)器名:proc.num[,,,應(yīng)用進程名].last(0)}<>1,設(shè)置進程數(shù)量不為1則報警,報警級別嚴重。
(4)稿件目錄監(jiān)控觸發(fā)器:{服務(wù)器名:user.filecount[文件目錄路徑].min(10m)}>0,設(shè)置10分鐘內(nèi)目錄為空則報警,報警級別一般嚴重;{服務(wù)器名:vfs.file.time[文件目錄路徑].fuzzytime(1h)}=0,設(shè)置目錄超時1小時無更新則報警,報警級別嚴重。
(5)網(wǎng)絡(luò)狀態(tài)和web監(jiān)控使用系統(tǒng)默認值,當(dāng)服務(wù)器PING不通或web頁面返回錯誤時報警。
根據(jù)設(shè)置的監(jiān)控項內(nèi)容,可設(shè)置圖形化監(jiān)控界面,并進行聚合,便于直觀地查看歷史監(jiān)控狀態(tài)和未來趨勢,配合合理有效的觸發(fā)器設(shè)置,可提前發(fā)現(xiàn)問題端倪。本文圖形監(jiān)控界面示例如下。
圖1 Zabbix圖形監(jiān)控界
本文通過采用開源工具Zabbix,在內(nèi)網(wǎng)編輯系統(tǒng)部署搭建了一套分布式、高效、可視化的監(jiān)控系統(tǒng),減輕了繁重的服務(wù)器管理任務(wù),并經(jīng)過用戶定制,添加自定義監(jiān)控項,完成對內(nèi)網(wǎng)編輯系統(tǒng)服務(wù)器上關(guān)鍵應(yīng)用進程、稿件目錄和出入庫狀態(tài)等監(jiān)控,可通過Web查看整個系統(tǒng)中服務(wù)器的當(dāng)前運行情況和歷史運行記錄,為系統(tǒng)管理員提供實時的判斷依據(jù),也可提前預(yù)判可能存在的問題,進而采取措施,對保障內(nèi)網(wǎng)編輯系統(tǒng)的正常運行具有重要意義。