一、OpenNMS簡介
OpenNMS的開發基於TMN及FCAPS這兩個模型。
電信管理網路(TMN)是由 ITU-T 推薦 M.3000於1985年提出作為一種應用於電信服務供應商所持有的運營支援系統(OSS)的參考模型。就概念而言,TMN 是一種相互串連不同類型OSS 組成部分和網路元素的結構體系。同時 TMN 也包含標準化介面和協議,用於交換 OSS 組成部分和網路單元間的資訊,以及網路管理所需的全部功能。
TMN 模型組成主要包括以下四層:
(1)商業管理層(Business Management Layer):執行商業方面的相關功能,分析發展趨勢如品質問題,提供記帳基礎和其它財務報告。
(2)服務管理層(Service Management Layer):執行網路服務處理功能:定義、管理和服務控制。
(3)網路管理層(Network Management Layer):執行網路資源分配功能:配置、控制和網路監督。
(4)單元管理層(Element Management Layer):包含個人網路單元的處理功能。即:警示管理、資訊處理、檔案備份、日誌、硬體和軟體的維護等。
在 TMN 模型的每一層,對應五大功能區域(簡稱為 FCAPS)定義如下:
(1)故障管理(Fault Management):故障識別、隔離、報告和記錄。
(2)計費管理(Accounting Management):收集、緩衝、付款傳送和計費資訊。
(3)效能管理(Performance Management):收集、緩衝、有關網路最佳化的運行統計傳送、以及容量編製(Capacity Planning)
(4)組態管理(Configuration Management):網路裝置安裝、狀態和參數設定、網路容量配置。
(5)安全管理(Security Management):認證功能管理:OSS 的同時使用處理,阻止非法使用者的入侵。
首先OpenNMS提供了較為全面的故障管理(Fault Management),在OpenNMS中,有三種不同且互相獨立的方式來發現故障:
(1)服務定期查詢(周期性檢查服務運行情況)
(2)收到自動發送的通知訊息(如SNMP trap)
(3)效能資料的閾值檢查
此外OpenNMS也提供了較為完善的效能管理(Performance Management),在OpenNMS中是通過稱之為資料收集器提供的資料收集介面來定期收集效能資料,目前的實現中,包括諸如SNMP,JMX,HTTP及NSClient,對於收集的效能資料可以用於顯示效能圖表,閾值檢查,TopN分析等。
那麼對於FCAPS剩下的三項即組態管理、計費管理、安全管理,OpenNMS只在某種程度上實現了其部分功能。例如對於計費功能,OpenNMS只提供了對於網路的使用方式的資料、系統資源諸如頻寬、CPU、磁碟空間等的使用方式。
對於組態管理,OpenNMS提供了資產管理,另外還可以通過UI開啟/關閉裝置介面,也只僅限於這些功能。
對於安全管理,提供了對於SNMPv3的支援,另外還提供了基於使用者的存取控制及LDAP安全模型。
從TMN的四層模型來看,OpenNMS主要提供了服務管理層(SM)及網路管理層(NM)的功能。
OpenNMS概念解釋:
介面(Interface) :任何被指定給網路裝置, 能響應網路要求的IP地址, 或者, 任何透過SNMP協議回報自稱是介面者.
服務(Service) :任何單一, 預先定義指定給一個介面的網路服務.
節點(Node) :任何擁有一個以上介面的實體裝置. 一個節點可能有數個介面, 每個介面可能有數個服務. (某一特定 的介面是否"屬於"某個節點可以用幾種不同的方式來決定, 例如SNMP或NetBIOS名稱. 然而, 如果某個特定介面並沒有歸屬於任何節點的資訊, 就會被表示為一個獨立的節點. )
事件(Event) :任何重大發生或發現.
故障(Outage) :一個暫時性的運作停擺, 其特徵為無法和一個監控的服務溝通.(無法輪詢)
警示(Notice) :當特定事件產生的時候, 系統可以發出警示. 發出警示意味著用電郵或傳呼(pagers)或其它方式, 告知使用者或一群使用者, 所發生的事件; 某些情形下可能會觸發修正動作.
二、OpenNMS架構設計
流程說明:
首先通過Ping使用者配置的網路IP位址範圍進行節點發現,對應於圖中的Discovery及ICMPD,當發現到新的IP地址後(即能夠Ping成功),通過事件機制(對應Eventd),通知Capsd進行服務掃描,以發現該IP上所啟動並執行服務。服務發現完成後,則由Poller開始定期對這些IP上的服務進行定期檢查,一旦探索服務不能訪問,則通過事件機制產生故障資訊。對於支援SNMP的裝置,則通過SNMP定期收集效能資料,並將結果儲存在RRD檔案中,以供GUI顯示。
OpenNMS 是一個“以使用者為中心”的 NMS,它將典型的網路系統管理員(或網路管理團隊)作為自己唯一關注的焦點,以此來決定所需要的功能。最初,團隊中一些成員來自網路管理顧問,他們把自己的知識很好地付諸於實踐 ― 圍繞網路系統管理員通常所關注的對象、任務和工作流程來定義其運作模型。這與一些商業 NMS 產品(這些產品因其廠商的沿襲性而通常以裝置、網路或軟體服務為中心)形成了對比。
如果不考慮其具體應用的領域、代碼沿襲或廠商,許多 NMS 產品在層次組成上都有類似的概念。顯示了這種常見的組成。
這個組成通常有三層。前端這一層與管理的裝置和服務的網路、使用該系統的使用者和外部系統串連在一起。中間這一層包含大量邏輯,這些邏輯提供了 NMS 各種特性。後端這一層負責儲存和操作資料。
由於要動態(但還要健壯)地跟蹤複雜的相互關係和大量資訊,NMS 在後端這一層不可避免地部署了商業級關聯式資料庫管理系統(RDBMS)。
在第一層內,監控、管理和控制組件通常包含許多必須在 NMS 操作期間執行的並發任務。第一層負責發現活動網路,輪詢服務和裝置是否出故障,以及截獲或處理來自裝置、服務或更高層分布式代理的非同步事件。這個組件還可以執行由NMS 中介層中的配置邏輯、供應邏輯、工作流程執行器或其它定製邏輯所驅動的操作。
在前端這一層還有使用者介面組件。NMS 可以有“胖客戶機 GUI”介面,以及易於定製的基於 Web 的使用者介面。報表工具駐留在這一層,它可以與 UI 互動以提供即時的軟拷貝報表和批處理形式的硬拷貝報表。
第一層中的外部介面組件可以處理給使用者和/或外部系統的通知。這可以採取呼叫、電子郵件、電話或發給外部管理系統的特定事件等形式。API 和擴充外掛程式基礎結構使得可以定製 NMS,以及將 NMS 與其它系統串連在一起,或者將 NMS 與其它系統整合。
中介層是 NMS 邏輯所在之處。它向 NMS 提供個人化以及與眾不同的特性集合。還提供一些常見的特性,譬如,庫存或資產管理、資料收集和分析、使用者或角色管理以及工作流程管理/執行。
庫存(或資產)管理是大多數 NMS 產品的主要功能。但其中所跟蹤的項目隨不同的 NMS 而各不相同,譬如裝置、線路、伺服器、安裝的軟體服務和應用程式等。該組件的使用者介面和應用程式邏輯必須能靈活地適應可能要管理的各種項。
資料收集和分析特性可以提供有關所管理裝置和服務的當前和曆史統計。它還可以提供統計分析,從而揭示網路和子網的效能以及裝置/服務的可用性等。該組件還可以與工作流程執行邏輯互動以處理定製的工作流程。
使用者和角色管理組件提供對 NMS 不同層級的訪問。大多數大型網路是由一個團隊或多個團隊的人員來管理的。分配給使用者的角色可以用在定製安全性原則的設計和實現中,以及定製的工作流程和事件升級流中。
工作流程管理和執行是針對短期和長期管理工作的管理和自動執行而提供的。為了使 NMS 適應不同組織對各種業務的需求,定製自動化工作流程是有必要的。
雖然並不是每個 NMS 都會具備所有這些組件 ― 甚至有些可能會有其它更專門化的變體 ― 但這裡所提到的組件已足夠用來概述 NMS 的組成部分。
顯示了OpenNMS的元件圖表:
在後端這一層,OpenNMS 使用 PostgreSQL作為它的 RDBMS。在前端這一層,它使用 Apache Jakarta Tomcat免費的 JSP 和servlet 技術來提供靈活的可定製的使用者介面。也可用以前基於 Perl 的使用者介面。有幾個管理公用程式是用 UNIX shell 指令碼和 Perl 編寫的。OpenNMS 使用一套與中的監控、管理和控制組件相對應的並發 Java 任務來提供該功能。在中用圓圈表示的就是這些並發任務。
OpenNMS使用的連接埠
httpAdaptor 8180
rtc 5817
jetty 8980
jetty / https 8443
jetty / ajp 8981
syslogd 514 or 1514
snmp trap 162
(vulnscan 1241)
三、OenNMS並發任務
OpenNMS 的監控、控制和資料收集特性是由一組稱為精靈(BSD UNIX 約定)的並發任務來處理的。下表統計了這些並發管理工作。
並發任務 |
精靈名稱 |
描述 |
操作精靈 |
actiond |
自動操作執行工具,用於根據入站事件自動操作(工作流程)。 |
收集精靈 |
collectd |
從受管節點收集資料。 |
功能精靈 |
capsd |
對所發現的節點執行功能檢查。它通常檢查某個介面的連接埠,看它是否支援已知的服務合約。 |
DHCP 精靈 |
dhcpd |
為 OpenNMS 提供 DHCP 客戶機功能。 |
發現精靈 |
discovery |
對受管網路節點進行初始的發現以及持續進行定期發現。 |
事件管理器精靈 |
eventd |
管理來自其它並發任務的事件,並將它們儲存到 RDBMS |
通知精靈 |
notifd |
向使用者執行外部通知。 |
故障管理器精靈 |
outaged |
合并事件,以為每個受管節點/服務提供持續的曆史故障視圖。 |
輪詢者精靈 |
pollerd |
定期輪詢受管節點/服務,以決定操作狀態。 |
RTC 管理器精靈 |
rtcd |
即時收集資料,為使用者定義的各類受管節點/服務提供可用性資訊。 |
SNMP 陷阱精靈 |
trapd |
處理 SNMP 陷阱(事件)。 |
閾值服務精靈 |
threshd |
根據屬性值是否達到指定的閾值來監控受管節點/服務。 |
四、OpenNMS的擴充
OpenNMS 帶有健壯的、用於受管裝置/服務的 SNMP 支援。SNMP 是目前業界用於可管理裝置/服務事實上的標準。該標準使 OpenNMS 可以管理大量在 TCP/IP 網路上存在的裝置。
在 SNMP 之外,OpenNMS 還可以檢測和管理現在流行的軟體服務(FTP、檔案伺服器和資料庫伺服器等)。它提供了一套特定於服務的外掛程式(用於協議掃描)和監控程式(用於輪詢)來完成這些任務。通過建立新的外掛程式和監控程式,可以擴充 OpenNMS 以檢測和監控任何新的裝置或服務 ― 包括支援 JMX 的 ClickMeter 應用程式。
OpenNMS 的發現精靈( discovery )負責在初始以及以後的執行過程中發現受管網路。一旦 discovery 發現一個節點(通常通過 ICMP ping),它會請功能精靈( capsd )來確定該節點支援什麼服務。通過對指定的協議外掛程式集合進行迴圈處理,該功能精靈檢查所支援的服務。編寫一個定製的協議外掛程式使它適合 OpenNMS 的任何新服務非常簡單。
五、OpenNMS資料庫設計