周向軍 吳挺



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