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