`
diy8187
  • 浏览: 79544 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

OpenNMS技术分析与扩展开发

阅读更多

OpenNMS技术分析与扩展开发

1. 技术分析

OpenNMSJava语言实现,基于linux系统和Postgres数据库的网络管理系统。系统配置信息通过XML数据存储,网络数据通过JDBC对数据进行持久化,Web采用JSP/ServletOpenNMS是一个Open Source Framework,它采用了诸多的开源组件与框架,使用了各种协议的开源实现:

l OpenNMS采用了xml数据绑定技术(opennms采用的是castor)。根据xml文件的schema定义文件(xsd文件)生成对xml文件到java对象的映射,这样就不需要写解析xml文件的代码而是针对java对象进行操作。因此这些类都是在系统编译过程中由castor包根据xsd文件生成的。(Castor是一个Java开源数据绑定框架,它主要目标是提供Java对象与XML 的绑定,JavaSQL的持久化等.)

l Cleanimports是对java文件中的无用的imports作清理,并通过配置文件提供的格式对imports代码段进行格式整理。

l HttpUnit进行模拟HTTP测试。

l jWebUnit 是基于java的测试网络程序的框架。它提供了一套测试见证和程序导航标准。jWebUnit JUnitHtppUnit实现。

l Junit单元测试

l nekohtml解析HTMLHtml Tidyhtml 字符串进行修正,并做标准化的处理。

l Avalon主要是一种Server的架构,可以满足配置、日志等服务器程序的需要,

l Jdhcp,java DHCP的实现。

l Xerces解析XMLAPI与实现有:xmlParserAPIs, xml-apis, xercesImpl

l FOP可以将xml文件转换成pdfmifpcltxt等多种格式以及直接输出到打印机,并且支持使用SVG描述图形。

l jCIFS,用Java开发的SMB客户端库。

l ldap-implLDAP java实现。

l smtp.jar pop3.jarSMTPPOP3协议Java实现。

l JRobin基于LGPL授权的网络性能监控系统,是RRDTool的一个纯Java实现。

l joeSNMPJava SNMP类库。

所以,要想扩展(Extending)开发OpenNMS需掌握如下技术(Technologies):

Java 2XML/XSLServletsJSPsRDBMSJMSCastorJoesSNMPRRDTool

2. 系统架构

1. OpenNMS系统架构图

l OpenNMS架构主要包括如下功能:DiscoveryCAPSDEventdActiondNotifdSchedulerService Monitor(pollers)RTCOutage ManagerData CollectionReporting(Performance Reports,Availability Reports)Web UI

l 流程说明:

1. 总控/调度Classloader

2. 发现轮询

l 能力检查Capability daemon - capability check on nodes

l 动态主机配置协议DHCP daemon - DHCP client for OpenNMS

l 发现Discovery daemon - initial and ongoing discovery互联网控制消息协议(Internet Control Message Protocol或简写ICMP

3. 配置采集

数据采集Collection daemon - collects datajmxMbean:Collectd extendsServiceDaemon

采集流程:

Initializing collection daemon 初始化日志加载调度

Loading collectors"

a) instantiateCollectors

b) createScheduler

c) createEventProcessor

start

scheduleExistingInterfaces()

pause

resume

stop

4. 性能采集

5. 事件

l 通知Notification daemon - external notification of users

l 实时控制RTC manager daemon - real time availability information

l 陷阱SNMP trap daemon – handles SNMP traps

l 阈值Threshold daemon – monitor for threshold values

6. 服务

l 轮询Poller daemon - polls managed nodes/services

7. 运行情况Outage manager daemon - consolidates events

3. 扩展开发

3.1. 开发环境

l 采用版本:

OpenNMS-1.2.9-1

l 开发环境与工具:

Redhat Enterprise Linux 5.0JDK1.5Tomcat-4.1.37Eclipse(WTP) Ant1.6.5JDBC2.0JSP1.2Servlet2.3JSTLHTMLXML/XSLrrdtool 1.0及相关的开源组件与框架。

3.2. 配置说明

OpenNMS可通过XML配置文件来扩展网络配置与定制服务。

1. 自身管理

l service-configuration.xml

定义OpenNMS本身要启动的服务. 它和VM有关,并且控制哪个服务在哪个VM中开启.

l jmx-datacollection-config.xml

2. 发现配置

l discovery-configuration.xml daemon

定义要发掘的网络地址范围,(ping sweep)以及逾时,重试次数,以及用来做发掘的执行绪(thread)数目。这个档案也提供 初次发掘间隔时间(initial-sleep-time)和重新发掘间隔时间(restart-sleep-time)。这些数值以毫秒(miliseconds)为单位,用来决定 OpenNMS 执行后,间隔多久要开始针对网络地址清单作发掘;以及每次发掘之间的间隔时间。

<discovery-configuration threads="1" packets-per-second="1"

initial-sleep-time="300000" restart-sleep-time="86400000"

retries="3" timeout="800">

<include-range retries="2" timeout="3000">

<begin>192.168.0.1</begin>

<end>192.168.0.254</end>

</include-range>

<include-url>file:/usr/local/OpenNMS/source/dist/etc/include</include-url>

</discovery-configuration>

3. 配置性能采集

l snmp-config.xml

定义snmp采集的节点、版本、read-community、超时、重试次数等

<snmp-config retry="3" timeout="800" read-community="public" write-community="private">

<definition version="v2c">

<specific>192.168.0.5</specific>

</definition>

<definition retry="4" timeout="2000">

<range begin="192.168.1.1" end="192.168.1.254"/>

<range begin="192.168.3.1" end="192.168.3.254"/>

</definition>

<definition read-community="bubba" write-community="zeke">

<range begin="192.168.2.1" end="192.168.2.254"/>

</definition>

<definition port="1161">

<specific>192.168.5.50</specific>

</definition>

</snmp-config>

l collectd-configuration.xml

透过collectd进程进行数据收集。collectd侦听SNMP服务的NodeGainedService事件,在些它会检查是否存在节点集合中初始的SNMP接口。

<collectd-configuration hreads="5">

<package name="example1">

<filter>IPADDR IPLIKE *.*.*.*</filter>

<specific>0.0.0.0</specific>

<include-range begin="192.168.0.1" end="192.168.0.254"/>

<include-url>file:/opt/OpenNMS/etc/include</include-url>

<service name="SNMP" interval="300000" user-defined="false" status="on">

<parameter key="collection" value="default"/>

<parameter key="port" value="161"/>

<parameter key="retry" value="3"/>

<parameter key="timeout" value="3000"/>

</service>

<outage-calendar>zzz from poll-outages.xml zzz</outage-calendar>

</package>

<collector service="SNMP"

class-name="org.OpenNMS.netmgt.collectd.SnmpCollector"/>

</collectd-configuration>

l datacollection-config.xml daemon

包含给RRDTool的数据收集信息.

l poller-configuration.xml daemon

用来定义轮询组合(packages)以及设定各种服务的轮询器(pollers)。一个轮询组合内含数种项目,例如网络地址范围,服务,排修时段(outage calendars),和故障时段模式(down time models).

4. 性能阈值

l thresholds.xml

5. RTC

l rtc-configuration.xml

定义RTC (Real Time Console)的属性,例如用来计算故障时段百分比的周期(rolling window)web UI刷新周期,以及多久 RTC将更新送至web接口。

6. 事件告警

l eventconf.xml

定义通用事件识别码(Universal Event IdentifiersUEIs)以及它们的事件屏蔽(masks),描述,记录文件讯息,和严重程度。

l trapd-configuration.xml daemon

定义SNMP trap的埠口(port)

l eventd-configuration.xml daemon

定义eventd的运作参数,例如逾时值以及监听器执行绪(listener threads)的数量。

l actiond-configuration.xml daemon

在事件(events)产生时所呼叫的外部程序称为(actions). 这个设定档控制最多可以同时 执行的action数量, 以及等待action执行完毕回传结果的逾时值。

l notifications.xml

定义哪个事件或UEI发出告警, 以及发出告警的途径.

<notification name="nodeAdded">

<uei><![CDATA[http://uei.OpenNMS.org/products/bluebird/nodes/nodeAdded]]></uei>

<rule><![CDATA[IPADDR IPLIKE *.*.*.*]]></rule>

<destinationPath>Email-Network/Systems</destinationPath>

<text-message>OpenNMS has discovered a new node named %parm[nodelabel]%.

Please be advised.</text-message>

<subject>%parm[nodelabel]% discovered.</subject>

</notification>

l destinationPaths.xml

用来定义告警的目标路径(destination path), 例如告警应该送给谁, 传送方式用传呼, 电邮, 或者电邮-传呼.

l notificationCommands.xml

定义如何达成在destinationPaths.xml中所使用的各种联络方式. 这包括了可执行文件的所在位置, 各种联络方式的别名(aliases), 以及特定传送方式尚需的其它信息.

<command type="email">

<name>/bin/mail</name>

<lookup>email</lookup>

<lookup>mail</lookup>

<comment>for sending email notifications</comment>

<argument streamed="false">

<substitution>-s</substitution>

<switch>-subject</switch>

</argument>

<argument streamed="false">

<switch>-email</switch>

</argument>

<argument streamed="true">

<switch>-tm</switch>

</argument>

</command>

7. 服务管理

l capsd-configuration.xml daemon

对于已经发现的节点(包含由discovery daemonSNMP所发现的),能够侦测出哪些服务. 它还可定义,若发掘了某些网络地址/网络地址区段,则应该受控或排除在外. 对于没有定义到的其它网络地址,它可用一个预设的状态(管理政策)来规范.

<capsd-configuration rescan-frequency="86400000"

management-policy="unmanaged">

可以设定"rescan-frequency"(重新扫描网络的频率).这个设定决定了时间间隔多久需重新扫描网络上的设备, 并且重新确认其上有哪些服务. 单位是毫秒,默认值是86400000,也就是24小时.

l outage-configuration.xml

定义(服务)中断管理(outage manager)可以有多少个写入执行绪(writer threads)

font-family: Times New
分享到:
评论
1 楼 zzlovelyboy 2012-08-17  
请问我把openNMS饿资源包下载了,那怎么才能把它转化成我想要的project文件?我的qq775119562

相关推荐

    opennms-1.6.5-1_new.rar_OpenN_openNMS_opennms-1_开源_网络管理

    OpenNMS是第一个开发在开源模式下的企业级网络管理平台应用。OpenNMS的目标是成为一个真真的分布式、可升级的网络管理平台,尽管它看似一个FCAPS网络管理模型,使之可用于开放源码和商业领域。目前:OpenNMS专注与...

    opennms配置,功能手册

    五、报告与分析 1. **历史数据**:OpenNMS存储长时间范围内的监控数据,可用于趋势分析和容量规划。 2. **自定义报告**:你可以创建定制化的报告,包含网络状态、性能指标、故障历史等信息。 3. **报表导出**:...

    opennms启动过程分析

    OpenNMS 启动过程分析 OpenNMS 作为一个功能强大的网络管理系统,其启动过程中涉及到多个服务的启动、线程的启动和配置文件的解析。下面将对 OpenNMS 的启动过程进行详细分析。 一、OpenNMS 系统架构 OpenNMS 的...

    opennms-source.tar.gz_SNMP_openNMS

    在IT行业中,网络管理是至关重要的环节,而OpenNMS作为一款开源的网络管理系统,以其强大的功能和灵活的可扩展性,深受广大网络管理员的喜爱。"opennms-source.tar.gz_SNMP_openNMS"这个压缩包,便是OpenNMS源码的...

    opennms1.12.5-1源码下载

    1. **Java和Spring框架**:OpenNMS主要使用Java语言开发,利用Spring框架来实现依赖注入和模块化设计,确保系统可扩展性和灵活性。 2. **JMS(Java消息服务)**:OpenNMS使用JMS来处理事件和通知,实现异步通信,...

    openNMS开源代码

    openNMS开源网管,OpenNMS是一个企业级基于Java/XML的分布式网络和系统监控管理平台-OpenNMS Open Source Network Management, OpenNMS is an enterprise-class based on the Java/XML distributed network and ...

    OpenNMS介绍和相关说明

    OpenNMS Introduction,OpenNMS architecture,OpenNMS SNMP Data Collection,Data Collection Configuration example

    OpenNMS安装、配置[归纳].pdf

    OpenNMS安装、配置详解 OpenNMS是一个流行的开源网络管理平台,提供了强大的网络监控和管理功能。本文将详细介绍如何在Ubuntu系统上安装和配置OpenNMS。 一、安装OpenNMS 1. 首先,需要编辑Ubuntu的sources.list...

    OpenNMS安装相关问题

    3. **安装PostgreSQL数据库**:为了与OpenNMS一起使用,需要下载与OpenNMS兼容的PostgreSQL版本(根据文档描述,应该选择9.x版本,而不是10.x版本)。下载后,需要给安装包添加执行权限,并运行安装程序。安装过程中...

    opennms-integration-api:稳定的Java API,用于与OpenNMS进行接口连接和扩展

    该项目旨在通过引入一个稳定的接口来对其进行编写,从而使其更容易为OpenNMS编写插件和扩展。 然后,OpenNMS和Meridian的版本将实现API的至少一个主要版本。 特征 API的用户当前可以利用以下功能和界面。 有关完整...

    OpenNMS数据库关系图

    OpenNMS数据库,OpenNMS数据库中各个字段的关系矢量图

    openNMS操作手册

    此外,手册还提供了许多有用的信息链接,指向与openNMS相关的技术标准、书籍、社区和官方网站,为用户深入学习和解决问题提供了丰富的资源。 总的来说,《openNMS操作手册》是一份全面且实用的文档,对于管理和维护...

    Opennms从源码编译安装指南

    "Opennms从源码编译安装指南" Opennms是一款功能强大的网络管理系统,能够提供网络设备的监控、配置和故障排除等功能。从源码编译安装Opennms可以提供更高的自定义化和灵活性,满足个性化的需求。本文将详细介绍...

    opennms windows jicmp.dll

    windows下opennms jicmp.dll

    OpenNMS数据采集配置

    rrd是一个高效的数据存储技术,适合于时间序列数据的存储。在配置文件中,可以定义多个`&lt;rra&gt;`元素来设置不同的数据归档策略。例如,`RRA:AVERAGE:0.5:1:2016`表示五分钟数据,采样率为0.5,一天的数据被归档为一...

    Opennms安装配置教程(超详细)

    OpenNMS是由许多个人及组织,在OpenNMS软件专案这支大旗下,所共同打造的网络管理系统。从最初到2002年,程序代码是由Oculan Corporation开发并以GPL释出,后来后案的管理移交给 Tarus Balog。

    openNMS1.10.3-1源代码

    6. **插件体系**:openNMS的可扩展性体现在其插件机制上,开发者可以根据需要编写插件来实现特定功能,源代码中会包含插件开发的相关指南和示例。 7. **自动化和脚本**:openNMS支持自动化任务和脚本执行,例如通过...

    opennms sendmail(邮件发送) 功能配置

    需要注意的是,由于内容中有OCR技术识别的误差,实际操作时应核对参数的准确性,并且在配置文件中正确填写,以确保邮件发送功能能够正常工作。例如,在原始描述中出现的`org.opennms.core.utils.authenticateUser`...

Global site tag (gtag.js) - Google Analytics