`
diy8187
  • 浏览: 76491 次
  • 性别: 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

相关推荐

Global site tag (gtag.js) - Google Analytics