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