李正 陶鑫 黎斌 鄧輝
【摘 要】通過(guò)對(duì)企業(yè)微信API接口和Python編程語(yǔ)言的學(xué)習(xí),在Nagios監(jiān)控系統(tǒng)的基礎(chǔ)上,進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)基于企業(yè)微信平臺(tái)的網(wǎng)絡(luò)故障告警功能插件。
【關(guān)鍵詞】企業(yè)微信;API;Python;故障告警
中圖分類號(hào): F274;G206文獻(xiàn)標(biāo)識(shí)碼: A文章編號(hào): 2095-2457(2019)19-0056-002
DOI:10.19694/j.cnki.issn2095-2457.2019.19.025
0 引言
隨著移動(dòng)通信技術(shù)的發(fā)展,信息化服務(wù)也迎來(lái)了新挑戰(zhàn)與機(jī)遇。移動(dòng)應(yīng)用的普及,將原有的基于PC端的業(yè)務(wù),逐步擴(kuò)展到了移動(dòng)端。江西省地震局從2011年開(kāi)始部署Nagios網(wǎng)絡(luò)監(jiān)控系統(tǒng),通過(guò)研究,擴(kuò)展了一些應(yīng)用。近來(lái),江西省地震局預(yù)報(bào)中心申請(qǐng)開(kāi)通了企業(yè)微信號(hào),用于信息服務(wù)。通過(guò)對(duì)企業(yè)微信API接口的學(xué)習(xí)與研究,順利實(shí)現(xiàn)了企業(yè)微信號(hào)推送網(wǎng)絡(luò)故障消息的目的。
1 監(jiān)控系統(tǒng)和企業(yè)微信介紹
Nagios是一個(gè)用于監(jiān)控網(wǎng)絡(luò)、服務(wù)和主機(jī)資源的實(shí)時(shí)狀態(tài)的開(kāi)源IT運(yùn)維監(jiān)控框架,在狀態(tài)變差和變好的時(shí)候及時(shí)給出告警信息。它運(yùn)行在Linux或Unix環(huán)境,具有穩(wěn)定強(qiáng)大的功能和維護(hù)成本低廉等特征。Nagios監(jiān)控框架由主程序Nagios Core、插件程序Nagios-plguins和四個(gè)可選組件組成。四個(gè)可選組件為用于監(jiān)控Linux/Unix主機(jī)資源的NRPE擴(kuò)展,用于監(jiān)控Windwos主機(jī)資源的NSClient++程序,用于分布式部署的NSCA擴(kuò)展程序,用于將程序的配置信息和運(yùn)行產(chǎn)生的數(shù)據(jù)存入數(shù)據(jù)中的NDOUtils,NDOUtils支持的數(shù)據(jù)有MySQL和PostgreSQL。Nagios-plguins不但有強(qiáng)大的監(jiān)控插件庫(kù),還能通過(guò)shell、python、perl等語(yǔ)言編寫自定義的監(jiān)控插件程序。
企業(yè)微信是騰訊開(kāi)發(fā)的一個(gè)高效的免費(fèi)辦公服務(wù)平臺(tái),一經(jīng)推出就得到廣泛應(yīng)用。它能與微信APP無(wú)縫溝通,普通用戶無(wú)需安裝額外的APP,只需關(guān)注企業(yè)微信號(hào)后就能使用,同時(shí)也提供獨(dú)立的移動(dòng)端和PC端應(yīng)用程序。用戶需要管理員審核通過(guò)后才能使用其功能,并且提供豐富的平臺(tái)接口,可以與其他平臺(tái)系統(tǒng)實(shí)現(xiàn)無(wú)縫對(duì)接。企業(yè)微信平臺(tái)由騰訊運(yùn)營(yíng)維護(hù),通過(guò)國(guó)家信息安全等級(jí)保護(hù)三級(jí)測(cè)評(píng)認(rèn)證,其通信協(xié)議全程加密,安全可靠;單條消息可達(dá)2048字節(jié),可以選擇性群發(fā),消息精準(zhǔn)發(fā)送;依托騰訊強(qiáng)大的消息處理能力,發(fā)送速度遠(yuǎn)高于手機(jī)短信和電子郵件。
2 現(xiàn)狀
江西省地震局在部署Nagios系統(tǒng)后,編寫了基于飛信機(jī)器人程序的網(wǎng)絡(luò)故障告警插件。報(bào)警插件的使用,極大地縮短了江西省地震局網(wǎng)絡(luò)故障響應(yīng)時(shí)間,提高了網(wǎng)絡(luò)運(yùn)行效率、為地震監(jiān)測(cè)等業(yè)務(wù)提供了有力保障。但是基于飛信機(jī)器人程序的網(wǎng)絡(luò)故障告警插件只能給用戶好友發(fā)送消息,而且存在一定的延時(shí)。為了滿足電信、聯(lián)通的手機(jī)用戶,江西省地震局又編寫了“一信通”MAS平臺(tái)的網(wǎng)絡(luò)故障告警插件,發(fā)送時(shí)延也有改觀,但是使用MAS平臺(tái)需承擔(dān)一定的費(fèi)用。
江西省地震局在企業(yè)微信平臺(tái)開(kāi)發(fā)了一系列應(yīng)用服務(wù),如自動(dòng)會(huì)商信息、每日地震統(tǒng)計(jì)信息等。以上信息只有通過(guò)認(rèn)證的關(guān)注用戶才能接收到,并且可以選擇用戶發(fā)送。鑒于以上優(yōu)點(diǎn),作者開(kāi)始了Nagios與企業(yè)微信對(duì)接工作研究,利用企業(yè)微信平臺(tái)高效快速的消息推送服務(wù),快速發(fā)送Nagios監(jiān)測(cè)到的網(wǎng)絡(luò)故障告警信息。
3 功能實(shí)現(xiàn)與效果
通過(guò)學(xué)習(xí)企業(yè)微信服務(wù)端API接口,了解到要發(fā)送消息,需要憑據(jù)CorpID和CorpSecret獲取當(dāng)前access_oken,access_oken將是調(diào)用接口的憑證。
將收信人賬號(hào)、AgentId、消息內(nèi)容等信息按照一定的格式拼接成JSON格式數(shù)據(jù),利用HTTPS的POST方法,推送到企業(yè)微信服務(wù)平臺(tái),企業(yè)微信服務(wù)平臺(tái)在接收到請(qǐng)求后能迅速群發(fā)到收信人。
一般在安裝完Linux系統(tǒng)后,自動(dòng)具備了Python運(yùn)行環(huán)境,而Python的字典型數(shù)據(jù)類型能很好的處理JSON格式數(shù)據(jù)。基于企業(yè)微信的網(wǎng)絡(luò)故障告警插件代碼如下。
上述代碼中send_values部分存在多個(gè)轉(zhuǎn)義符“\”,用于處理告警消息中的換行符“\n”。在Naigos配置文件中添加企業(yè)微信的告警方式,內(nèi)容如下。
同時(shí)需要在配置文件中添加相應(yīng)的賬號(hào)信息,內(nèi)容如下。
4 結(jié)論
在Nagios監(jiān)控平臺(tái)上,江西省地震局預(yù)報(bào)中心依次采用基于飛信機(jī)器人、E-mail、MAS系統(tǒng)和企業(yè)微信平臺(tái)的網(wǎng)絡(luò)故障告警插件。在使用這些告警插件時(shí),將所有被監(jiān)控的設(shè)備、服務(wù)和聯(lián)系人進(jìn)行合理的分組,將設(shè)備和服務(wù)分配到不同的聯(lián)系人組。當(dāng)設(shè)備和服務(wù)狀態(tài)發(fā)送變化時(shí),Naigos系統(tǒng)就會(huì)通過(guò)commands觸發(fā)相應(yīng)的故障報(bào)警配置,將告警信息發(fā)送到對(duì)應(yīng)的聯(lián)系人組內(nèi)所有聯(lián)系人,以達(dá)到精準(zhǔn)告警的目的,并且要求接收到故障告警信息后30分鐘內(nèi)將響應(yīng)結(jié)果向值班室反饋。
雖然基于企業(yè)微信平臺(tái)的網(wǎng)絡(luò)故障告警插件有速度快,免費(fèi)等特性,但它依賴于接收到端手機(jī)的互聯(lián)網(wǎng)連接狀態(tài),當(dāng)手機(jī)無(wú)法連接到互聯(lián)網(wǎng)時(shí)就無(wú)法及時(shí)接收到告警信息,為此,部分關(guān)鍵人員仍然保留了基于MAS系統(tǒng)的網(wǎng)絡(luò)故障告警插件。
【參考文獻(xiàn)】
[1]Nagios官方文檔.https://www.nagios.org/documentation/.
[2]企業(yè)微信API文檔.https://work.weixin.qq.com/api/doc.
[3]魏星,牛瑞.基于企業(yè)微信的配電網(wǎng)短消息系統(tǒng)應(yīng)用與研究[J].電子技術(shù)與軟件工程,2018(20):72-74.
[4]陳文迪,程學(xué)林,黃智勇.基于微信企業(yè)號(hào)的醫(yī)院IT運(yùn)維管理服務(wù)系統(tǒng)的分析與設(shè)計(jì)[J].中國(guó)數(shù)字醫(yī)學(xué),2016,11(11):83-85.
[5]李正,呂堅(jiān),付榮國(guó).淺談基于Nagios的故障告警系統(tǒng)[J]. 江西通信科技,2011(01):16-18.
[6]張暉,周利霞,姚會(huì)琴,孫晶巖.Nagios監(jiān)控系統(tǒng)在天津地震應(yīng)急系統(tǒng)中的綜合應(yīng)用[J].震災(zāi)防御技術(shù),2012,7(03):322-328.