【第180期 September 5, 2012】
 

研發新視界

論OpenNMS 在 SUSE linux 之應用

作者/陳明達

[發表日期:2012/9/5]


OpenNMS是甚麼?

OpenNMS是一個服務管理及網路管理的平臺,可用來自動偵測網路節點,監控網路服務,告知系統人員網路是否有異常狀況發生,服務事件彙整,自動執行異常情況發生時之對應動作,以及監控系統服務。在開發模型上,OpenNMS是基於TMN(Telecommunication Management Network)及FCAPS(fault-management, configuration, accounting, performance, and security)這兩種模型而開發的。

TMN平臺將整個網路分為作業系統(OS)、網路模組(NE)、資訊傳輸網路(DCN)、轉接模組(MD)以及工作站(WS)五個部分。希望能夠提供SNMP(Simple Network Management Protocol)的資訊傳遞介面。如此管理者就可在管理中心充分監控全部網路。

SNMP在OpenNMS中扮演一個不可或缺的角色。SNMP是使用 UDP 協議對網絡設備進行管理的一個框架,屬於應用級協議,它提供一組簡單標準的操作去收集、修改及交換網絡設備之間的網絡管理資訊,以便於監察和維護網絡設備,透過標準的 SNMP,網管人員便可以更容易地管理複雜網絡,找出問題所在。在OpenNMS 中,具有接收來自 SNMP Trap 所發出事件的功能,而 SNMP Trap是甚麼呢? SNMP Trap 是 SNMP 的一部分,當被監控段出現特定事件,可能是性能問題,甚至是網絡設備接口出現異常等,代理端會給管理站發告警事件。假如在特定事件出現的時刻,不是由 Agent 主動通知 NMS,那麼 NMS 必須不斷地對 Agent 進行輪詢。這是非常浪費計算資源的方法,正如人們用中斷通知 CPU 數據的到達,而不是讓 CPU 進行輪詢一樣。Trap 通知是更加合理的選擇。用一句話來說的話,SNMP Trap 就是被管理設備主動發送消息給 NMS 的一種機制。

FCAPS主要可細分為五種不同的管理分別是故障管理(Fault Management)主要功能是故障識別、隔離、報告和記錄;計費管理(Accounting Management)功能為收集、緩衝、付款傳送和計費資訊;性能管理(Performance Management)主要用來收集、緩衝、有關網絡最優化的運行統計傳送、以及容量編制(Capacity Planning);配置管理(Configuration Management)用以網絡設備安裝、狀態和參數設置、網絡容量配置;最後是安全管理(Security Management)負責認證功能管理,阻止非法用戶的入侵。

有了對TMN以及FCAPS的基本認識後,現在來看一下OpenNMS是如何實現TMN及FCAPS。

首先OpenNMS提供了頗為完善的故障管理(Fault Management),在OpenNMS中,有三種不同且互相獨立的方式來偵測故障情形。第一種是週期性的檢查服務運行狀況,也就是每隔一段時間固定去檢查某項服務是否仍正常運作,如果發生異常就會在監控畫面上顯示異常狀態告警。第二種為直接寄送簡訊或者電子郵件的方式來回報狀態異常,最後一種是判斷性能數據是否在正常範圍之中。此外OpenNMS也提供了較為完善的性能管理(Performance Management),在OpenNMS中是利用稱之為數據收集器提供的數據收集介面來定期收集性能數據,對於收集的性能數據可以用於顯示性能圖表,異常檢查,資料分析等。

那麼對於FCAPS剩下的三項即配置管理、計費管理、安全管理,OpenNMS只在某種程度上實現了其部分功能。例如對於計費功能,OpenNMS只提供了對於網絡的使用情況的數據、系統資源諸如帶寬、CPU、磁盤空間等的使用情況。

對於配置管理,OpenNMS提供了資產管理,另外還可以通過UI開啟/關閉設備介面,也只僅限於這些功能。對於安全管理,提供了對於SNMPv3的支援。從TMN的四層模型來看,OpenNMS主要提供了服務管理層,如管理和服務控制的功能以及網絡管理層功能,主要用以配置、控制和網絡監督。

OpenNMS架構

首先在OpenNMS中有項功能是自動偵測網路節點,這項功能是對應到圖一的Discovery及ICMPD,當已經偵測到新節點,透過 Event-Handling Daemon通知CAPSD 進行服務掃描,以發現該節點上所運行的服務。偵測完服務後,則由Poller定期對這些節點上的服務進行定期檢查,一旦發生有異常狀況,則由Event-Handling Daemon產生故障訊息。如果節點支援SNMP,則通過SNMP定期收集數據,並將結果儲存在RRD中,以供GUI顯示。


《圖一》OpenNMS 架構圖


如何在SUSE Linux 上安裝OpenNMS?

OpenNMS是一套基於開發原始碼計畫所發展出來的網管系統,使用JAVA語言開發也帶來跨平台的優點,在官方網站上的安裝指南可以看到有提供RPM的安裝檔案,但實際試了一下,在SUSE平台上安裝OpenNMS會缺少許多相依性的套件,所以在這邊將介紹另一種與SUSE的YAST2所結合的安裝方式,使用這種安裝方式將可以省去許多尋找相依性套件的時間,在更短的時間內完成安裝的動作,進一步開始使用OpenNMS,而不用把時間都浪費在安裝軟體上。

首先,要先進到YAST2的目錄管理中,新增一筆”特定URL”的路徑,並在路徑中輸入”http://yum.opennms.org/stable/common/ ”,新增完畢後,就可以在YAST2的搜尋畫面中直接找到OpenNMS以及其他相關套件如
  • Opennms-core
  • Opennms-webapp-jetty
  • Postgresql
  • Postgresql-libs
  • Postgresql-server

在正式安裝這些主要套件前,還有一些是需要事前先安裝好的,如下
  • Libjicmp
  • Java
  • Tomcat
  • Libjrrd

將這些套件安裝完畢後,就可以順利完成主要套件的安裝。待全部都成功安裝完畢後,設定JAVA路徑,以及進到OpenNMS安裝目錄底下(/opt/opennms/bin/)執行runjava –s檢查JAVA是否可順利偵測,還有install –dis將openNMS做最後的檢查及安裝,然後將opennms的服務開啟即可。

完成上述步驟後,開啟瀏覽器,並在在網址列鍵入http://IP:8980/openmns即可以看到如圖二的登入畫面,輸入預設帳號/密碼為admin/admin,就可以開始使用OpenNMS。


《圖二》OpenNMS網站登入畫面


OpenNMS 基本功能介紹

OpenNMS是一個非常強大的網路管理系統,功能已經相當完整,大致上可分成四的大部分,服務監控、節點自動搜尋及監控、管理及通知、資料收集及分析事件,當然除了這四大部分以外,還有其他很多的細部功能,這在邊就不一一贅述有興趣的也可以直接到OpenNMS官方網站(http://www.opennms.org/)查詢。以下將介紹基本四大部分的功能。

一、服務監控

在OpenNMS 中,監控整體網路狀況的情形是核心功能之一,在網站主頁中,可以看到一共分割成六個區塊如圖三。
  • Nodes with Outages:顯示哪些節點出現異常,並可以點選節點看詳細的資料。該頁會有一個列表,包含所有受控設備目前有關故障的資訊. 這裡還有關於故障類別,受影響節點及介面,故障時間等資訊。點選列表中的鏈結可得知例如可用性、事件、歷史故障等額外資訊。

  • Quick Search:可以根據Node ID、Node Label、TCP/IP Address 或是 Providing services來做快速搜尋。

  • Availability Over the Past 24 Hours:顯示各個不同的服務在過去24小時內是否有產生異常以及可使用性的比例。

  • Notification:顯示所設定的告警回報。

  • Resource Graphs:搜尋資源圖表

  • KSC Reports:搜尋分析完數據資料報告所產生的圖表。


《圖三》OpenNMS主頁監控畫面

二、節點自動搜尋及監控

我們可以用各種條件來搜尋節點,執行結果會得到一份清單,列出符合搜尋條件的節點以及其上的介面。每個項目都以鏈結的形式呈現,可以連結到主要的節點或介面的頁面。這些頁面有非常完整的,關於每個設備的資訊。

在搜尋中,可以根據各種條件--例如IP位址、服務、主機名稱--來產生一份節點的列表。例如,可以輸入IP位址範圍來產生該範圍內的節點列表,頁面上還有範例,以及一些語法規則來協助產生搜尋條件。如果這些方法都不成功,還有一個"All nodes"的鏈結可用。如圖四所示。

此外OpenNMS還提供一個蠻特別的搜尋方法,如果網路上的設備之前都已鍵入資產資訊,可以依此資訊來做搜尋,這個搜尋可以依照類別,或者任何欄位的資訊,或者你也可以點選鏈結來列出所有含有資產資訊的節點。如果設備都沒有鍵入資產資訊,這些搜尋不會列出任何節點。


《圖四》OpenNMS 搜尋網路節點畫面


三、管理及事件通知

OpenNMS的主要也是最重要的功能之一就是事件及通知的管理。在OpenNMS中一個狀態的變化就被視為一個事件。OpenNMS透過一個名為Eventd(Enent-Handling Daemon)的服務來管理事件。在OpenNMS中有兩種類型的事件:一種是OpenNMS自己內部產生的CAPSD事件,還有一種就是外部產生的SNMP Trap事件。後端的服務可以生成事件,如Discovery服務收到某個介面對ping的響應後,就會產生一個偵測到新節點的事件,同時這些後端服務也可以作為事件監聽者來監聽這些事件,當這些事件發生後,可以做相應的處理,例如CAPSD服務當收到偵測到新節點的事件後,就開始對該事件對應的介面進行服務掃描。

當產生事件時,還可以針對事件設置一些參數,如事件描述資訊、用於生成日誌的消息內容以及事件的嚴重度。另外一些自動化的操作也可以用於當事件發生時將這些事件的參數發送給外部的一些Script程式,從而觸發它們的執行。

OpenNMS還提供了功能豐富的通知系統,一些事件可以用於發送通知,例如通過頁面通知或者email通知。

四、資料收集及分析事件

可以針對SNMP的設備,將其效能、可用性、回應時間以報告方式呈現出來;以方便做長期觀測。如圖5為ICMP response time 及SSH response time 的資源圖。


《圖五》節點資源的反應時間圖


OpenNMS 的優點

OpenNMS提供方便易用的用戶圖形使用者管理介面。包括故障事件表、節點列表、相應時間分析圖形、性能規納圖形等各種管理圖表。因為OpenNMS是基於 Open Source中的 GPL(General Public License)協議所開發,因此,用戶可以按照自己的需求,通過修改軟體本身或者軟體的源代碼來做適當的修改。一如前面所提及的,OpenNMS是由JAVA所開發,所以只要是能安裝JAVA 環境的系統都可以執行這一套功能強大的網路管理平台。此外,OpenNMS 支援任何能運行標準SNMP 協定服務的作業系統系統,並且可以從一個單一的用戶介面分別管理區域網路。利用方便易用的互動式控制台,為軟體使用者顯示關鍵事件,提供自動的事件回應,可以以電子郵件方式發出事件通知,讓使用者可以對自己的系統有最完整性的掌握。

結論

OpenNMS 是一套功能相當強大的開放原始碼軟體,在現在的許多系統上都可以看到OpenNMS的蹤影,如美國的 “Papa John’s Pizza”就是一個最著名的例子,OpenNMS能夠幫助持續的監控網路設備及服務的運行狀態,它可以支援SNMP 網路管理協定確保管理的擴展性,並且提供非常靈活的自訂功能,從而有利於管理範圍的調整。它內置的故障事件管理以及提供故障事件的記錄和分析的能力,可以迅速幫助我們減少查詢的範圍,進而排除故障源頭。OpenNMS 良好的設計可以快速部署實施,管理者可以透過簡單友善的圖形介面迅速掌握問題所在,降低操作的複雜度,提高運作系統的整體管理效率。

參考資料

http://en.wikipedia.org/wiki/OpenNMS
http://www.opennms.org/
http://www.openplatform.com.hk/knowledge/snmp_b.htm
http://www.networkdictionary.cn/telecom/tmn.php
http://njulinq.blog.51cto.com/1257169/277217
http://njulinq.blog.51cto.com/1257169/277754
http://njulinq.blog.51cto.com/1257169/289258