周向軍 吳挺
摘要:針對校園網(wǎng)監(jiān)控告警存在多樣化、實時性差、缺乏統(tǒng)一管理等問題,提出利用微信公眾號建立校園網(wǎng)統(tǒng)一告警平臺的方案,將智能運維監(jiān)控平臺分為數(shù)據(jù)收集層、數(shù)據(jù)展示層、數(shù)據(jù)提取層、報警規(guī)則配置層、報警規(guī)則配置層、展示層六個層次的設計架構,微信告警服務平臺劃為數(shù)據(jù)收集模塊、數(shù)據(jù)提取模塊和監(jiān)控報警模塊三個功能模塊,在監(jiān)控報警模塊實現(xiàn)了與微信公眾號對接,并提出利用Docker實現(xiàn)平臺的容器化部署,該平臺告警實時性強,對告警能統(tǒng)一管理,有效地解決平臺的維護、管理及遷移等問題。
關鍵詞:Docker;微信;告警平臺;容器化
中圖分類號:TP399 文獻標識碼:A
文章編號:1009-3044(2020)21-0001-04
開放科學(資源服務)標識碼(OSID):;
近年來,信息化的發(fā)展水平成為高校核心競爭力要素之一,很多高校加大了校園信息化基礎設施、各類教學、管理應用系統(tǒng)和數(shù)字化校園的建設投入。隨著高校信息系統(tǒng)規(guī)模的不斷擴大和信息化程度的提高,校園網(wǎng)用戶對信息化的體驗和依賴不斷加深,對校園網(wǎng)的運維也提出了更高的要求,但是校園網(wǎng)的運維還存在著以下問題,
1 校園網(wǎng)運維現(xiàn)狀分析
1.1校園網(wǎng)運維涵蓋的內(nèi)容多樣化
校園網(wǎng)的運維管理工作是指校園網(wǎng)處于運行狀態(tài)中,信息管理部門采用相關的管理方法,對運行環(huán)境的物理網(wǎng)絡,軟硬件環(huán)境、業(yè)務系統(tǒng)等進行維護管理,這種管理工作即是。因此校園網(wǎng)運維涉及的內(nèi)容非常多,包括硬件運維和軟件運維。而硬件運維又包括網(wǎng)絡設備運維、服務器設備運維、存儲運維等;而軟件運維則更多,包括數(shù)據(jù)庫運維、中間件運維、集群運維;更有眾多的業(yè)務系統(tǒng)的運維,如校園網(wǎng)里常見的郵件服務器運維、學校網(wǎng)站群運維、OA系統(tǒng)運維等,少則十幾個業(yè)務系統(tǒng),多的達到幾十上百個系統(tǒng),這些系統(tǒng)可能分布在不同網(wǎng)段。它們很多是邏輯隔離的。
1.2運維監(jiān)控的實時性較差
為了更好地管理校園網(wǎng),監(jiān)控預警是一種很好的機制。運維人員通過對各種設備、系統(tǒng)、業(yè)務等關鍵資源的自動監(jiān)控,幫助運維工作者及時發(fā)現(xiàn)故障和故障隱患。只有保證校園網(wǎng)中各種硬件的可用及業(yè)務系統(tǒng)的正常運行才能使學校信息化建設發(fā)揮作用。隨著高校信息化建設的發(fā)展,高校各種異構的信息化系統(tǒng)越來越多,所使用的網(wǎng)絡設備和服務器數(shù)量也很多,原有的高校校園網(wǎng)監(jiān)控方式存在以下的問題:第一,校園網(wǎng)需使用不同的專用軟件監(jiān)控各種設備,監(jiān)控方式各不相同,無法在統(tǒng)一的平臺上實現(xiàn)監(jiān)控。另一方面,為了保障校園網(wǎng)的運作,各個學校都使用了不同層面的運維監(jiān)控服務,如校園網(wǎng)網(wǎng)絡設備的運維監(jiān)控,服務器運行監(jiān)控等。并且使用了短信或郵件等警告推送機制,但在實際運作中,效果一般。主要是推送的方式上,大部分的運維監(jiān)控警告推送都依賴于短信平臺或郵件平臺,而管理員的郵件常是工作郵件,使用郵件推送造成過多垃圾郵件,日常郵件管理麻煩而且不能及時處理。而短信推送需要學校配置備相應的硬件,而且大量短信的發(fā)送也需要學校投入相應的資金。
1.3運維監(jiān)控的平臺多樣化
由于硬件、軟件眾多,運維監(jiān)控的設備及系統(tǒng)也就多了,不同的系統(tǒng)或者不同的硬件廠商都有著各自的運維監(jiān)控警告機制。如云桌面的監(jiān)控、網(wǎng)絡設備的監(jiān)控、業(yè)務系統(tǒng)服務器的監(jiān)控等。不同的監(jiān)控采用不同的警告推送,缺乏統(tǒng)一管理。
2 微信告警平臺的實現(xiàn)方案
針對運維監(jiān)控目前存在的問題,我們提出利用微信服務平臺實現(xiàn)統(tǒng)一的微信告警服務的解決方案。微信服務平臺的有著可隨時隨地提供信息和服務,且一對多傳播,信息高到達率等特點,這些特點正是運維告警所需要的。采用微信服務平臺,通過程序接口集中多個校園網(wǎng)絡監(jiān)控系統(tǒng)的監(jiān)控警告推送,實現(xiàn)統(tǒng)一管理,便于運維人員隨時隨地,及時掌握校園網(wǎng)絡的狀況,有效解決校園網(wǎng)多平臺監(jiān)控警告推送的問題。
2.1微信告警服務平臺系統(tǒng)設計
微信告警服務平臺的架構設計可以分為6層,如圖1:
第一層為數(shù)據(jù)收集層,主要收集網(wǎng)絡設備、操作系統(tǒng)、數(shù)據(jù)庫、信息化應用系統(tǒng)等數(shù)據(jù),然后將規(guī)范化收集到的數(shù)據(jù)并進行存儲。
第二層為數(shù)據(jù)展示層,主要是將底層獲取到的數(shù)據(jù)進行統(tǒng)一展示,運維人員通過將數(shù)據(jù)圖形化,能了解某段時間內(nèi)網(wǎng)絡或主機的運行趨勢和運行狀態(tài),作為排查問題或解決問題的依據(jù)。
第三層為數(shù)據(jù)提取層,主要是提取符合條件的數(shù)據(jù)到監(jiān)控報警模塊,其主要功能是過濾處理和規(guī)格化對從第二層獲取到的數(shù)據(jù),這一層銜接監(jiān)控和報警兩個功能模塊。
第四層為報警規(guī)則配置層,主要是進行設置報警規(guī)則和報警閾值,還有設置系統(tǒng)報警方式、報警聯(lián)系人等。
第五層為事件生成層,主要是生成報警事件,并進行實時記錄,存人數(shù)據(jù)庫以備調(diào)用,報警結果能按運維人員需求形成分析報表,供運維人員統(tǒng)計一段時間內(nèi)的故障率和故障發(fā)生趨勢。
第六層展示層,主要將報警故障、監(jiān)控統(tǒng)計等結果在Web界面進行統(tǒng)一展示,并實現(xiàn)多權限、多用戶管理。
根據(jù)微信告警服務平臺架構設計的六個層次,微信告警服務平臺從功能實現(xiàn)劃為三個模塊,分別是數(shù)據(jù)收集功能模塊、數(shù)據(jù)提取功能模塊和監(jiān)控報警功能模塊,每個模塊完成的功能如下:
數(shù)據(jù)收集功能模塊:用于從網(wǎng)絡設備、系統(tǒng)和服務收集指標,數(shù)據(jù)收集的方式根據(jù)設備或系統(tǒng)的不同而采用不同的采集方式,一般有通過SNMP實現(xiàn),也有通過自定義腳本實現(xiàn),還可以通過代理模塊實現(xiàn)等。一般通過采集設備或系統(tǒng)的日志文件,也可以通過定時輪詢DB或其他系統(tǒng)的接口,在數(shù)據(jù)收集的基礎上還進行數(shù)據(jù)的圖形展示。
數(shù)據(jù)提取功能模塊:此模板主要通過數(shù)據(jù)收集模塊提供的接口或自定義腳本完成數(shù)據(jù)的篩選過濾和采集,從數(shù)據(jù)收集模塊提取需要的數(shù)據(jù)到監(jiān)控報警模塊中。
監(jiān)控報警功能模塊:監(jiān)控報警模塊包含告警子系統(tǒng)和數(shù)據(jù)庫子系統(tǒng),此模塊主要完成報警規(guī)則和報警閾值設置、報警聯(lián)系人設置等,并將相應規(guī)則寫到數(shù)據(jù)庫中,模塊根據(jù)設置的規(guī)則進行告警信息的發(fā)送。告警子系統(tǒng)按監(jiān)控腳本的設置,將告警信息通過微信平臺發(fā)送到用戶手機,或用戶通過微信查詢告警信息,了解設備運行信息。告警情況和設備運行信息將在數(shù)據(jù)庫子系統(tǒng)進行備份。并能按運維者要求將報警結果進行集中展現(xiàn),或查詢歷史記錄。
2.2 微信告警功能的實現(xiàn)
微信公眾平臺主要包括訂閱號、服務號和企業(yè)號三類賬號。上述三種微信公眾號有不同的特性,應用于不同場景。企業(yè)號與服務號和訂閱號的其中一個區(qū)別是在消息的發(fā)送次數(shù)上沒有明顯限制,比較適合于微信告警服務平臺告警使用。企業(yè)號可以將微信告警服務平臺與成員微信相連接,實現(xiàn)告警移動化,實現(xiàn)良好的閉環(huán)流程。微信平臺上提供多樣的消息處理方式,針對文本消息,主要是客服消息、群發(fā)消息及模板消息。首先在群發(fā)消息的處理上,公眾號為了避免對用戶受到垃圾消息的騷擾,微信對相關接口做了限制,群發(fā)消息存在條數(shù)限制,不適用于告警平臺的推送。而客服消息是沒有條數(shù)限制的,但是需要48小時內(nèi)用戶主動發(fā)送消息,明顯也不適用于告警消息的推送。而唯一能適用的就是模板消息。按官方解釋模板消息僅用于公眾號向用戶發(fā)送重要的服務通知,只能用于符合其要求的服務場景中,如信用卡刷卡通知,商品購買成功通知等。這種通知和告警服務通知的特性是相符的,適用于告警平臺的推送。
微信企業(yè)號公眾平臺主要有以下幾種消息模式:一是主動調(diào)用模式,主動調(diào)用模式主要實現(xiàn)微信消息的主動推送,是企業(yè)通過企業(yè)公眾號向員工發(fā)送消息的模式;二是被動回調(diào)模式,被動回調(diào)模式包括平臺對消息的接收、被動響應以及主動推送等,是個人向企業(yè)號發(fā)送消息及觸發(fā)相關事件從而產(chǎn)生消息的模式,主動調(diào)用模式下的所有推送接口都可以在被動回調(diào)模式使用;三是基于JS-sdk的JSAPI模式,這是結合微信Js-sdk進行開發(fā),基于微信內(nèi)置瀏覽器的B/S手機網(wǎng)站模式;四是企業(yè)會話模式,是微信與企業(yè)自有即時通信軟件進行消息對接的模式。在利用微信進行開發(fā)時,較多使用的模式為主動調(diào)用、被動回調(diào)模式還有基于微信的JS-sdk的JSAPI模式,較少使用企業(yè)會話模式進行開發(fā),多以直接使用為主,本微信告警服務平臺開發(fā)主要使用主動調(diào)用模式和被動回調(diào)模式。
2.2.1主動調(diào)用模式
微信公眾號的主動調(diào)用是指用戶應用主動調(diào)用企業(yè)號提供的系列API接口函數(shù)執(zhí)行發(fā)送消息、管理用戶等功能的操作。主動調(diào)用直接使用HTTPS協(xié)議,連接企業(yè)號提供的AM請求地址,使用UTF_8數(shù)據(jù)編碼,采用JSON數(shù)據(jù)格式,不需要執(zhí)行解密操作,該模式是企業(yè)號開發(fā)中最基本的連接模式。圖3是微信消息主動調(diào)用模式的執(zhí)行流程。
2.2.2 被動回調(diào)模式
微信公眾號被動回調(diào)是指微信平臺接受相應的事件時,按照之前配置好的參數(shù)主動請求你的由開發(fā)者自定義的業(yè)務邏輯接口。開發(fā)者要在文檔中明確聲明請求和請求體和參數(shù),平臺對自定義的業(yè)務邏輯接口進行適配。自定義的業(yè)務邏輯接口的作用類似于短信中心。用戶通過訂閱公眾號,然后可以主動發(fā)送信息給公眾號,發(fā)送的消息不是直接到達微信后臺系統(tǒng),而是通過轉發(fā)回調(diào)機制,將通過統(tǒng)一格式的內(nèi)容發(fā)送給接入的后臺系統(tǒng)。因此,需要在正式使用前對賬號進行配置,才能使用回調(diào)接口,圖4是微信消息被動回調(diào)模式的執(zhí)行流程。
3 Docker容器化技術在平臺部署上的應用
微信告警服務平臺能解決多平臺告警統(tǒng)一管理的問題,但是如何解決校園網(wǎng)的部署遷移又是另一個問題。在校園網(wǎng)中,存在需要部署多個數(shù)據(jù)收集模塊服務器采集不同網(wǎng)絡硬件、系統(tǒng)、應用數(shù)據(jù)的現(xiàn)象,同時針對服務器虛擬化技術的發(fā)展,很多應用都轉移到了Docker中,如何利用Docker容器化技術,對監(jiān)控數(shù)據(jù)進行采取也是迫切需要解決的問題,因此我們提出微信告警服務平臺Docker容器化的解決方案。
3.1 Docker高級容器引擎特性
Docker是使用Go語言實現(xiàn)的一個基于LXC( Linux Con-tainers)虛擬化高級容器引擎,是一種面向云平臺的虛擬化技術。vSphere和Hyper-V等傳統(tǒng)的虛擬化技術是建立虛擬機,即建立整套系統(tǒng)沙盒環(huán)境去執(zhí)行應用。而Docker的盒執(zhí)行環(huán)境是利用Linux容器技術將應用所需要的相關源碼、依賴庫、環(huán)境配置等都打包起來。與傳統(tǒng)虛擬化技術相對比,Docker不需要虛擬化硬件,也不需要即時編譯和指令級模擬。因此粒度更小、更輕量級。該技術通過將一個單獨操作系統(tǒng)管理的資源分配到一個個孤立的組中去平衡資源使用需求的沖突,大大提升了資源的利用率。
Docker 一個容器的運行不會影響宿主環(huán)境或者其他容器虛擬化,這是因為Docker構建虛擬化技術是基于應用組件級進行,因此容器具有封閉性和獨立性的特征?;谌萜鬟\行的Docker只保留了應用程序運行所必需的核心操作系統(tǒng)環(huán)境,而不像其他一些虛擬化技術并一樣虛擬完整的Linux操作系統(tǒng),因此它空間占用少、資源開銷少、啟動時間短、分發(fā)和復制方便,同時它也具備傳統(tǒng)虛擬機的隔離性和安全性等特性。
3.2 Docker關鍵技術
在Docker的生命周期中,鏡像(Images)和容器(Contain-ers)最核心的兩個部分。Docker鏡像是文件,容器是進程。容器是基于鏡像創(chuàng)建的,即容器中的進程依賴于鏡像中的文件。Docker的鏡像是包括運行容器所需數(shù)據(jù)的一個獨立的文件系統(tǒng),是一個只讀的模板,它類似虛擬機的鏡像??梢杂苗R像來創(chuàng)建新的容器。而Docker容器類似虛擬機,是Docker鏡像創(chuàng)建的運行實例。容器是相互隔離的,每個容器包含特定應用的代碼及所需的依賴文件,可以運行特定的運用,可以執(zhí)行包含啟動,停止,刪除等。因此可以把容器看作包含進程空間,Root用戶權限,用戶空間和網(wǎng)絡空間等的一個簡易版的Linux環(huán)境和運行在其中的應用程序。因此運行起來的鏡像就是容器,容器服務運行的過程中也可以提交回去(Commit)成為鏡像,把安裝了程序,添加了文件容器保存為鏡像。如圖5所示:
3.3 微信告警服務平臺Docker容器化部署流程
(1)自定義Dockerfile指令集,Dockerfile配置文件支持靈活的自動化創(chuàng)建和部署機制,平臺結合監(jiān)控的實際需要,依據(jù)基礎鏡像,通過Dockerfile文件進行自定義方式,在Dockerfile指令集中增添相應命令,方便創(chuàng)建符合實際需求的Docker鏡像。
(2)創(chuàng)建鏡像,通過填寫Dockerfile模板基本信息,修改Dockerfile的必要的信息,在服務器上執(zhí)行通過數(shù)據(jù)校驗后的dockerfile文件,執(zhí)行成功生成Docker鏡像。
(3)部署實例,部署實例功能是該平臺的核心功能之一,所有的鏡像文件都是為了生成Docker容器,每個部署實例對應著鏡像運行的容器,容器是Docker的核心部分,部署實例包括創(chuàng)建實例、的修改實例、刪除實例、升級實例等功能操作。部署實例的啟動和運行通過掛載程序目錄來實現(xiàn)。
(4)上傳和下載鏡像,為了方便鏡像的使用和傳播,可以將鏡像上傳到Docker官方提供的Registry開源平臺倉庫。
4 結束語
監(jiān)控告警是校園網(wǎng)運維的重要環(huán)節(jié),是提高運維效率的有力保障。統(tǒng)一的監(jiān)控告警平臺對于目前校園網(wǎng)多樣的、復雜的運維環(huán)境是必要的。利用微信服務平臺的隨時隨地提供信息和服務、一對多傳播、信息高到達率等特點是適合校園網(wǎng)運維監(jiān)控告警的。而實現(xiàn)告警平臺與微信平臺的對接需要根據(jù)微信服務號的消息特點,選擇合適的方案解決兩者的消息發(fā)送問題。而Docker虛擬化在平臺的日常應用層面上,有效地解決平臺的維護、管理及遷移等問題。
參考文獻:
[1]神紅玉.校園網(wǎng)運維現(xiàn)狀及統(tǒng)一運維方案淺析[J].硅谷,2012,5(9):159-160.
[2]謝超群.基于Zabbix高校數(shù)據(jù)中心運維監(jiān)控平臺的建設研究 [J].長春大學學報,2018,28(12):44-47.
[3]劉靜靜,王光宇,監(jiān)控與告警技術在信息系統(tǒng)運維中的研究與應用[C].中國計算機用戶協(xié)會網(wǎng)絡應用分會2017年第二十一屆網(wǎng)絡新技術與應用年會論文集,雄安,2017: 259-262,270.
[4]張瑞林,吳學敏.Docker容器技術在后端服務設計中的應用[Jl.電腦知識與技術,2019,15(13):281-282.
[5]鄭遠.基于Docker的服務器虛擬化實踐[J].福建電腦,2019,35(4):108-110.
[6]張延冬,邢艷芳.基于Docker的運維平臺設計[J].計算機時代,2018(4):16-18,22.
[7]冷澤偉.基于微信平臺的設備遠程告警系統(tǒng)[Dl.濟南.山東大學,2019.
[8]鄧喬.基于Docker的統(tǒng)一運維平臺的設計與實現(xiàn)[Dl.南昌:南昌大學,2018.
[9]鐘良侃.Docker技術在Web服務系統(tǒng)中的應用研究[J].電腦知識與技術,2016,12(26):123-126.
【通聯(lián)編輯:王力】
基金項目:教育部科技發(fā)展中心產(chǎn)學研創(chuàng)新基金——新一代信息技術創(chuàng)新項目(2018A01006)
作者簡介:周向軍(1971-),男,廣東人汕頭人,碩士,副教授,研究方向:計算機網(wǎng)絡、數(shù)據(jù)庫、計算機多媒體;吳挺(1981-),男,廣東湛江市人,碩士,講師,研究方向:計算機應用。