謝旖欣,李子川,李飛宇
(湖南省疾病預防控制中心,長沙 410005)
湖南省疾控中心機房,除負責本單位內部網絡和應用系統外,還部署了全省疾控三級平臺和全省免疫規劃系統的軟、硬件系統,承擔國家、省級、市級、縣級四級疾控中心及全省各類疾控業務系統的網絡連通、業務紐帶和安全守護職能.湖南省疾控數據中心自建成以來一直在不斷優化管理和監控,但軟、硬件設備仍然比較欠缺,再加上機房建成時部署的酷點網絡監控軟件license 已經過期,原運維公司倒閉,繼續使用和運維成本較高,重新招標商業網管軟件時間成本也比較高,在短時間內只能先考慮開源軟件,盡快部署實施.
為實現業務信息系統數據的自動備份、保存和還原,于2017年,數據中心采購部署了HP DP 軟件.經過一段時間的使用后發現軟件報警信息都只能顯示在軟件內部日志中,延誤發現故障時機,多次造成了更廣泛的系統癱瘓和業務中斷.雖然軟件自帶有報告和通知報警功能,但HP DP 部署在內網,無法向外界發送報警.出于投入產出比的考慮,湖南省疾控數據中心暫時還沒有配備短信網關、私有郵件服務器,HP DP 無法通過短信網關和私有郵件服務器直接發送報警.為了提前發現并解決故障,筆者考慮使用網絡監控軟件接收SNMP,然后轉發報警信息,研究低成本下如何實現故障報告向系統外實時報警功能,最后結合OpenNMS很好的解決了這一問題.
在網絡監控軟件領域,以往都是商業軟件的天下,主要有BMC Patrol、CA Unicenter、HP View 或IBM Tivoli,這些軟件動輒花費百萬美元級的開銷,而很多小型公司和IT 部門根本無力承擔.而開源網管軟件不僅具有價格優勢,其定制靈活,功能多樣,大多有活躍的開源社區作為技術支持,并且很多開源軟件都有官方的商業技術支持,各大客戶反響良好[1].在開源運動的驅動下,網絡管理軟件市場涌現了很多優秀的開源軟件.
最常用的開源網絡管理軟件有例如:Nagios、Hyperic HQ、Zabbix、Cacti、OpenNMS、Zenoss 等.
選擇哪一種開源軟件需要根據自身的需求和條件進行選擇,而且選擇了一種開源軟件也就選擇了一種架構,所以架構的選擇也要結合數據中心工程們的開發運維能力,為后期二次開發做準備.
根據前期對各種論文和網絡資料的分析,OpenNMS在License 限制、市場占用率、功能、二次開發等方面都具有比較明顯的優勢.市場占有率方面,Nagios和opennms 應用的比較廣,也意味著更多的資料可以獲取,更多的經驗可以借鑒.但是Nagios 沒有配置界面,配置需要直接修改配置文件.OpenNMS 是基于java 的,Web 管理界面是基于JSP/Servlet,Spring MVC,二次開發門檻低.OpenNMS 為世界第一款企業級開源的基于開源協議開發的網絡管理軟件,能監控分布式的異構系統和網絡設備的運行狀態,支持SNMP 網絡管理協議,確保管理的擴展性,功能全面,并且提供非常靈活的定制功能,從而有利于管理范圍的伸縮[2-8].而且OpenNMS 在其他數據中心也有過較成功的應用先例[7].各軟件都能實現網絡管理的基本功能,表1只列出了各軟件有差異的幾項功能參數,功能均相同的未列出.表2列出了綜合評分比較情況.

表1 各軟件功能主要差異項對比

表2 各軟件綜合對比小結
OpenNMS 的體系架構一共分為4 層,分別為被管理層,監控引擎處理層,數據存儲層,圖形界面用戶層.被管理層分為3 種類型:一種是被管理設備;一種是被管理服務,各服務如HTTP,TCP,ICMP 等可被隨時監控服務是否正常運行;一種是數據庫,管理端通過實時監控數據庫的活動以及對數據庫的通信內容進行判別、分析和判斷,若有異常及時報警并顯示報警原因.監控引擎處理層通過定時輪詢設備及服務,采集數據信息,實時更新數據庫來及時對底層數據進行更新和監控,一旦發現異常,執行報警行為.數據存儲層為OpenNMS 存儲設備信息和參數信息的地方,采用的數據庫為PostgreSQL 和RRD.用戶圖形界面層,用簡潔易操作的圖形界面給用戶提供一個使用平臺.如圖1所示是OpenNMS 的架構圖[8].

圖1 OpenNMS 架構圖
在數據中心的現實條件下,沒有私有郵件服務器和短信網關向外網及時報警,一種簡單的解決方案是增加私有郵件服務器或短信網關.但是如果由應用直接向外網報警,無法全局總覽運行和報警情況,最好是各應用向網絡管理軟件發送報警信息,由網絡管理軟件統一存儲、轉發報警信息,這樣既能及時向外報警,又能集中將所有的報警信息都分類歸檔存儲,便于監控和后期分析.所以我們采用的方式是搭建部署OpenNMS,OpenNMS 既可以主動監測各節點故障和性能,又可以接收各應用主動通過SNMP 發送的報警信息.
OpenNMS 官方文檔建議在linux 環境下開發、部署、使用,社區和大部分網絡資料也都是介紹在linux 環境下部署使用的,一般來說在linux 環境下部署能得到更好的技術支持.另外依據官方說明,OpenNMS 自1.3.8 版本后,已經支持在windows 平臺下運行.windows 環境下的安裝和運維都更方便快捷,為了更快的部署實驗評估效果,數據中心首先選擇在windows server 2008 操作系統下部署OpenNMS,待實驗和運行評估效果后再考慮是否遷移到linux 環境.
網上有OpenNMS 在windows 環境下的安裝包,安裝包下載地址:https://sourceforge.net/projects/opennmszh/files/en/,安裝環境支持當前主流Windows 操作系統,支持64 位操作系統.
筆者用OpenNMS 實現了以下功能:
(1) 網絡節點自動發現和集中管理.通過OpenNMS 對設備進行集中管理,如添加或刪除設備及服務.
(2) 圖形用戶管理界面.
(3) 實時監控.對設備的運行狀態進行實時監控,采集設備的性能值,存儲到數據庫.OpenNMS 可以管理的對象包括:1)支持SNMP 網管的網絡設備;2)部署了SNMP 服務的服務器上的操作系統.
(4) 故障事件管理.IT 運維管理人員所關注的問題,如系統資源出現短缺、數據庫連接失敗、網絡通信中斷、主機文件系統溢出等都會以事件的形式表現出來.
(5) 故障報警.當監測到設備有異常時,系統發送報警信息,通知給管理員.
(6) 操作系統監控.
(7) 網絡節點配置信息管理.對設備進行配置,包括監控配置和參數配置;對系統進行管理配置,包括數據采集、輪詢、報警的具體方式等.被監控對象節點在數據庫中的配置信息也是IT 設備的資產信息,每個網絡節點都是一個特定的IT 資產設備.
HP Data Protector 是惠普公司推出的一款為快速增長的業務數據提供可靠的數據保護和高度可訪問性的備份解決方案.
HP Data Protector 是完全的Client/Server 結構.它把整個備份環境分成多個獨立的邏輯單元,如下圖所示,多個邏輯單元可組合成有機整體,并服從中心節點的管理.邏輯單元主要包括備份客戶機(Backup Agent)或應用客戶機(Application Agent),設備服務器(Media Agent,MA),備份服務器(Cell Manager,CM),用戶管理終端.備份客戶機和應用客戶機可以統一歸類為數據客戶(Disk Agent,DA).備份服務器安裝并運行HP DP 軟件,擁有一個存儲各種備份信息的內部數據庫(Internal Database,IDB).圖2展示了數據中心HP DP 備份環境[9].

圖2 數據中心HP DP 備份環境
HP DP 的報告模塊提供有關備份環境的各種信息.例如,可以檢查上一次備份、對象復制、對象合并或對象驗證的狀態,檢查網絡中的哪些系統沒有針對備份進行過配置,檢查介質池中介質的使用量,檢查設備的狀態等.
HP DP 的通知模塊可在發生特定事件時從CM 發送通知.例如,備份、對象復制、對象合并或對象驗證會話完成后,可以發送含有會話狀態的電子郵件.
報告發送方法包括:廣播消息發送、電子郵件發送、SMTP 發送、外部發送、記錄到文件發送、SNMP 發送,通知發送方法比報告發送方法多了兩個方法:DP 事件日志方法、使用報告組發送方法.
通過SNMP 發送方法,可在發生指定事件時由CM 發送含有報告或通知輸出的SNMP Trap.該SNMP Trap 可由應用程序使用各種SNMP Trap 進一步處理.
數據中心的CM 運行在HP-UX 系統中,通過配置/etc/snmpd.conf 文件設置SNMP Trap 社區名和Trap 目標,Trap 目標可以是主機名也可以是IP 地址.在報告或通知的SNMP 發送對象中填寫/etc/snmpd.conf 中配置的Trap 目標,即可將報告或通知的SNMP Trap 發送到指定目標.
OpenNMS 包括一個強有力的事件通知系統,OpenNMS 管理事件通知的進程是eventd.主要有兩種類型的事件:由OpenNMS 內部產生的事件和通過外部的SNMP trap 產生的事件.OpenNMS 的事件可以伴隨一個通知,特別的事件可能通過頁面或Email,SMS等方式發出一個通知.本文以監控并轉發HP DP 的SNMP 信息為例演示OpenNMS 的事件、通知配置.
在OpenNMS 的admin 菜單項的Configure OpenNMS 界面,選擇Configure SNMP Community Names by IP Address 菜單項.在這個菜單界面下可以設置采集對象的SNMP 版本、讀/寫社區名稱等配置信息.如果版本信息和讀/寫社區名稱不對,將無法正確采集到SNMP 信息.
4.2.1 可視化配置
在admin->Configure OpenNMS 菜單的Manage Events Configuration 界面可以可視化的配置事件,也可以直接通過XML 文件配置事件.
4.2.2 配置文件配置
事件配置的主要文件位于$OPENNMS_HOME/etc與$OPENNMS_HOME/etc/events 目錄下.eventconf.xml.定義通用事件識別碼(Universal Event Identifiers或UEIs)以及它們的事件屏蔽(masks)、描述、記錄文件信息和嚴重程度.自定義事件在OpenNMS 也叫企業事件,自定義事件的配置文件常常命名為*.events.xml 的形式,*代表自定義事件名稱.自定義事件配置文件存放在$OPENNMS_HOME/etc/events 目錄下.
配置文件中各標簽和變量的具體用法可參考OpenNMS 官方指南[10].
手動更改eventconx.xml 或其任何配置文件后,需要重啟OpenNMS 服務才能生效.根據官方指南手冊可以在OpenNMS Horizon 服務器上發出以下命令,觸發事件配置的重新加載:OPENNMS_HOME/bin/sendevent.pl uei.opennms.org/internal/reloadDaemonConfig -p 'daemonName Eventd'.但是筆者在windows 安裝版中沒有找到send-event 文件,可能只支持linux 安裝版.
重新加載配置后OpenNMS 就可以接收到HP DP 的SNMP trap 事件了.如圖3所示為OpenNMS 接收到HP DP 的SNMP trap 事件示例.

圖3 OpenNMS 接收到HP DP 的SNMP trap 事件示例
(1) 開啟通知狀態
在菜單選項Admin-> Configure OpenNMS 中將Notification Status 設置為on.
(2) 配置通知策略
在菜單Configure OpenNMS -> Configure Notifications -> Configure Destination Paths 中按向導設置通知的目標路徑.由于數據中心暫時沒有私有的SMTP 郵件服務器,所以這里只能借助商用的(筆者選擇的是騰訊郵件服務),然后通過javaEmail 方式發送.給用戶發送郵件的前提是在系統用戶配置中給用戶設置了郵件地址.
郵件通知策略配置文件:$OPENNMS_HOME/etc/javamail-configuration.properties.圖4是以騰訊郵件服務器為例的javamail-configuration.properties 文件示例.
(3) 配置發送通知的事件
在菜單選項Admin-> Configure OpenNMS ->Configure Notifications -> Configure Event Notifications中新增一個Event Notication,按向導配置事件通知.
配置完成后管理員就可以接收到HP DP 的報告和報警郵件了.

圖4 javamail-configuration.properties 文件示例
目前數據中心在其內部交換網絡和服務器群中部署了一臺OpenNMS 系統,對70 多臺服務器(包括虛擬機)及網絡設備節點進行實施監控.此次實施中沒有增加新的硬件設備,開源軟件也沒有投入資金成本,極大的節省了數據中心的開支.OpenNMS 針對節點的類型自動生成相應的監控報表和事件通知郵件.運用了OpenNMS 后,有利于管理員對IT 運行狀態進行日常監控和分析,及時發現了網絡設備瓶頸,多次實時郵件報警HP DP 備份故障,及時發現故障點,為盡早解決問題爭取了時間.
圖5展示了OpenNMS 監控主頁,可以總覽被監控節點的總體運行狀況.圖6展示了以HP 小機為例的節點監控情況,可以總覽特定節點的運行狀況.OpenNMS 可以圖形化動態展示被監控節點的CPU、內存、端口流量等多種性能參數,圖7以HP 小機CPU為例展示了監控效果圖.圖8截取了OpenNMS 每日定時以電子郵件方式發送HP DP 會話完成情況的部分郵 件列表.

圖5 OpenNMS 監控主頁

圖6 HP 小機監控頁面
但在實際運行中,也遇到一些問題,比較突出的是安裝的這一版本還有一些Bug,與官方指南手冊的說明也有一定出入,而且無法兼容中文,各報警郵件只能英文顯示,郵件中的中文均為亂碼.下一步將繼續深入研究OpenNMS 的源碼,弄懂其原理,尋找解決各種Bug 的方法.在適當的時候編譯自己的安裝版本,并且安 裝到linux 環境下,使運行更穩定.

圖7 HP 小機CPU 監控效果圖

圖8 OpenNMS 每日定時以電子郵件方式發送HP DP會話完成情況
在缺少短信網關和私有郵件服務器,同時經費又有限的情況下,對于內網的一些應用報警,筆者沒有局限于對經費的等、靠、要等依賴,而是借用OpenNMS的SNMP Trap 接收和郵件報警功能以幾乎零成本實現內網應用的郵件報警功能.使用OpenNMS 不僅很好的解決了之前HP DP 報警不及時的問題,也使各種IT 設備得到了實時監控,對數據中心整體運行狀況有很好的掌握.相比于以前使用的收費網絡管理軟件,以后可以通過開源社區和自己研究源代碼來改進一些問題,比商用軟件更靈活,解決問題更有針對性和個性化,同時更有利于管理和運維人員對自己管理對象的了解和技術能力的提高.基于開源的精神,也將把一些研究成果向開源社區共享,共同進步.