1、OpenNMS簡介前端
OpenNMS的開發基於TMN及FCAPS這兩個模型。shell
電信管理網絡(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)或其它方式, 告知使用者或一羣使用者, 所發生的事件; 某些情形下可能會觸發修正動做.
2、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)
3、OenNMS併發任務
OpenNMS 的監控、控制和數據收集特性是由一組稱爲守護程序(BSD UNIX 約定)的併發任務來處理的。下表統計了這些併發管理任務。
併發任務 |
守護程序名稱 |
描述 |
操做守護程序 |
actiond |
自動操做執行工具,用於根據入站事件自動操做(工做流)。 |
收集守護程序 |
collectd |
從受管節點收集數據。 |
功能守護程序 |
capsd |
對所發現的節點執行功能檢查。它一般檢查某個接口的端口,看它是否支持已知的服務協議。 |
DHCP 守護程序 |
dhcpd |
爲 OpenNMS 提供 DHCP 客戶機功能。 |
發現守護程序 |
discovery |
對受管網絡節點進行初始的發現以及持續進行按期發現。 |
事件管理器守護程序 |
eventd |
管理來自其它併發任務的事件,並將它們存儲到 RDBMS |
通知守護程序 |
notifd |
向用戶執行外部通知。 |
故障管理器守護程序 |
outaged |
合併事件,覺得每一個受管節點/服務提供持續的歷史故障視圖。 |
輪詢器守護程序 |
pollerd |
按期輪詢受管節點/服務,以決定操做狀態。 |
RTC 管理器守護程序 |
rtcd |
實時收集數據,爲用戶定義的各種受管節點/服務提供可用性信息。 |
SNMP 陷阱守護程序 |
trapd |
處理 SNMP 陷阱(事件)。 |
閾值服務守護程序 |
threshd |
根據屬性值是否達到指定的閾值來監控受管節點/服務。 |
4、OpenNMS的擴展
OpenNMS 帶有健壯的、用於受管設備/服務的 SNMP 支持。SNMP 是目前業界用於可管理設備/服務事實上的標準。該標準使 OpenNMS 能夠管理大量在 TCP/IP 網絡上存在的設備。
在 SNMP 以外,OpenNMS 還能夠檢測和管理如今流行的軟件服務(FTP、文件服務器和數據庫服務器等)。它提供了一套特定於服務的插件(用於協議掃描)和監控程序(用於輪詢)來完成這些任務。經過建立新的插件和監控程序,能夠擴展 OpenNMS 以檢測和監控任何新的設備或服務 ― 包括支持 JMX 的 ClickMeter 應用程序。
OpenNMS 的發現守護程序( discovery )負責在初始以及之後的執行過程當中發現受管網絡。一旦 discovery 發現一個節點(一般經過 ICMP ping),它會請功能守護程序( capsd )來肯定該節點支持什麼服務。經過對指定的協議插件集合進行循環處理,該功能守護程序檢查所支持的服務。編寫一個定製的協議插件使它適合 OpenNMS 的任何新服務很是簡單。
5、OpenNMS數據庫設計