文/潘藝鵬
結(jié)合手機短信搭建實時告警平臺
文/潘藝鵬
Cacti是一套基于PHP、MySQL、SNMP及RRDTool開發(fā)的開源網(wǎng)絡(luò)流量圖形監(jiān)控系統(tǒng),經(jīng)過不斷更新升級,具備設(shè)備監(jiān)視、網(wǎng)絡(luò)日志、故障告警、閾值告警等功能,逐漸成為一款功能完善的網(wǎng)絡(luò)監(jiān)管工具。
基于Cacti構(gòu)建實時監(jiān)控平臺,是利用Cacti的實時郵件告警功能。但是在實際管理工作中,僅僅利用Cacti的郵件告警,不能使管理員即時接收到實時出現(xiàn)的故障情況,這主要是因為接收郵件需要一段時間。因此,要真正實現(xiàn)網(wǎng)絡(luò)狀態(tài)實時監(jiān)控,讓管理員能即時接收網(wǎng)絡(luò)故障信息,需要結(jié)合手機短信搭建實時告警平臺。
由于Cacti自身不具備短信告警功能,因此利用Cacti構(gòu)建的網(wǎng)絡(luò)狀態(tài)即時短信告警平臺可以依靠Cacti的郵件實時告警功能,利用告警郵件作為短信的觸發(fā)條件。
目前,很多郵件運營商都提供郵件到達的短信通知功能,包括網(wǎng)易的163郵箱、騰訊的QQ郵箱,這類郵箱將自身與用戶的手機進行綁定,一旦接收郵件,就發(fā)送告知短信,通常這類郵箱的告知功能是付費使用。另外,還可以使用手機運營商提供的郵箱,例如移動的139郵箱、電信189郵箱、聯(lián)通的手機郵箱,這類郵箱直接使用手機作為郵箱賬號,當郵件到達時,能直接發(fā)送短信。
此種方法的優(yōu)點是實現(xiàn)容易,但需要每個網(wǎng)絡(luò)管理員使用自己的郵箱,這不僅可能影響到自身正常郵件的使用,而且在管理上需要依靠自覺性;其次,采用這種方式還需要交納一定的使用費,并且運營商使用政策的變更使其存在不穩(wěn)定因素。
飛信是一款中國移動提供的承載商務(wù)應(yīng)用及娛樂功能的即時通信產(chǎn)品,用戶可通過PC 或手機終端隨時隨地實現(xiàn)文字、語音溝通。飛信的最大的優(yōu)勢就是可以免費地把消息即時發(fā)送到好友的手機上。針對飛信的使用優(yōu)勢,開發(fā)人員對飛信的通訊協(xié)議進行研究分析,開發(fā)飛信機器人,通過它就可以自動將信息即時發(fā)送到指定的手機上。
在Cacti服務(wù)器上安裝飛信機器人,并編寫自動發(fā)送的腳本;然后對Cacti觸發(fā)郵件的腳本進行修改,在觸發(fā)語句的后面添加執(zhí)行自動發(fā)送腳本的語句,當遇到故障發(fā)出告警郵件的同時,飛信機器人也將告警內(nèi)容發(fā)送到指定的手機。
使用飛信機器人發(fā)送告警信息發(fā)送的流程如下所示:
觸發(fā)郵件告警→捕獲告警信息→發(fā)送告警郵件→觸發(fā)飛信機器人。
1.查找Cacti的Threshold插件的源碼,找到報警郵件發(fā)送的函數(shù):確定發(fā)送郵件的情況與郵件信息的thold_check_threshold與負責發(fā)送郵件的thold_mail。
2.在這些函數(shù)中,$subject變量是存放郵件的內(nèi)容,可將$subject變量內(nèi)容保存下來,作為飛信機器人的發(fā)送信息。因此,在Threshold源代碼中查找調(diào)用thold_mail發(fā)送郵件的語句,并在這段語句后添加命令exec("echo$subject>>/var/www/alter-sms.log"),將郵件內(nèi)容存放到alter-sms.log文件中作為短信內(nèi)容。
接下來,添加命令exec("sh /var/www/sendsms.sh"),其中sendsms.sh是調(diào)用飛信機器人的自動執(zhí)行腳本程序。
3.編寫sendsms.sh腳本程序,該程序主要實現(xiàn)如下代碼:
其中:語句(1)用于判斷發(fā)送的altersms.log中是否有告警的信息;
語句(2)用于執(zhí)行飛信機器人,其中#sendnumber是飛信發(fā)出的手機號碼、#adminnumber是接收短信的手機號碼;
語句(3)用于將刪除已發(fā)出的短信息。
至此,我們可以實現(xiàn)通過飛信機器人自動發(fā)出告警信息,通過手機短信讓網(wǎng)絡(luò)管理員在第一時間就能收到告警情況。這種方法直接由服務(wù)器發(fā)送告知短信,其優(yōu)點是只需在執(zhí)行腳本中對管理員的手機號碼進行管理,這給管理員減輕郵箱的管理任務(wù),也省去郵箱的短信費用,但缺點是目前僅支持中國移動用戶。
在實際應(yīng)用中,筆者采用飛信機器人構(gòu)建即時告警平臺,管理員通過該平臺在第一時間知曉發(fā)生的網(wǎng)絡(luò)故障。當發(fā)生設(shè)備宕機時,能夠根據(jù)應(yīng)急方案進入搶修程序,進而縮短網(wǎng)絡(luò)故障時間,提高網(wǎng)絡(luò)的有效性。當發(fā)生端口流量異常時,能夠有針對性地查明原因,減緩網(wǎng)絡(luò)攻擊,降低垃圾流量,保障網(wǎng)絡(luò)流量帶寬。
(作者單位為廈門大學(xué)信息與網(wǎng)絡(luò)中心)