NMS开源软件选型分析评估报告_第1页
NMS开源软件选型分析评估报告_第2页
NMS开源软件选型分析评估报告_第3页
NMS开源软件选型分析评估报告_第4页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、NMS 开源软件选型分析评估报告目录1标准和目标 .11.1前言 .11.2目标 .11.3标准 .12评估.22.1筛选 .22.1.1候选软件 .22.1.2License 评估 .22.1.3软件功能评估 .32.1.4开发语言评估 .52.1.5小结 .62.2开发接口调查 .72.2.1Nagios .72.2.2Opennms .83结论.144MISC .141 标准和目标1.1 前言目前开源的网管软件众多,时间关系只能通过网络上的资料介绍和其他用户的体验进行评估。对于重点调查的开源软件通过运行环境搭建、开发环境搭建的方法进行实践。如果只是对通用网络设备的管理,被调研的软件只要经

2、过适当的配置就可以满足要求。我们的需求,这些软件不能满足我们100% 的需求,必须进行二次开发,对软件二次研发的接口的调研就成为我们考察软件的一个重要的组成部分。对于部门对网管软件的定位应该不会投入过多的资金, 商用软件价格高昂应该不在考虑范围之内,也尽量不选用开源软件商用版本,重点放在纯开源软件上。选择了一种开源软件也就选择了一种架构,所以架构的选择也要适合我们部门的开发能力。1.2 目标选择一款适合的开源软件,在此基础上进行整合和二次开发,构建部门设备网管平台。1.3 标准选型标准:License不仅仅是免费,无license限制是首选;市场占有率广泛的市场占有率, 说明软件得到过足够多的

3、验证; 针对于成功的开源软件, 可以找到一些第三方的扩展资源,我们只要遵循拿来主义就好;功能一些功能可以直接拿来使用,或者简单的改造,可以节约成本;完备的扩展开发接口被选择的开源软件是否已经提供完备的二次开发接口,满足二次开发的要求;开发技术选择开源软件的另外一个层面考虑是尽量考虑使用部门成员最熟悉的开发技术, 尽量避免涉及相对部门来说的新技术、开发语言,这样可以进一步研发降低成本;开源架构就我们目前的需求, 开源网管软件的功能, 我们能用到的部分并不多。 选择了开源其实主要就是选择它的架构。架构的开放性,易扩展性将直接决定我们的研发成本。2 评估开源网管软件的市场占有情况上图是网络监控软件的

4、占有率。其中以Nagios和 Opennms占有率最高。2.1 筛选候选软件NagiosOpennmsCactiZenossZabbixSugarNMS评估开源软件License使用限制NagiosGPLGPL( GNU General PublicLicense )OpennmsFreeFree ,也可以购买相应服务CactiGPLGPLZenossGPLGPL2Zenoss 提供开源版和企业版两种版本ZabbixGPLGPL2SugarNMS免费版、标准版、企业版免费开源和商业开源两个版本不是sourceforge下的产品软件功能评估The NRPE addon is designed t

5、o allow you to execute Nagios plugins on remote Linux/Unix machines开源软件功能Nagios网络服务监控(SMTP、 POP3 、 HTTP、 NNTP 、 ICMP 、 SNMP 、OpennmsZenossZabbixFTP、SSH)主机资源监控(CPU load、disk usage、system logs),也包括Windows主机(使用NSClient+ plugin)可以指定自己编写的Plugin通过网络收集数据来监控任何情况(温度、警告 )可以通过配置 Nagios 远程执行插件远程执行脚本远程监控支持 SSH 或

6、 SSL加通道方式进行监控简单的 plugin 设计允许用户很容易的开发自己需要的检查服务 , 支持很多开发语言( shell scripts 、C+ 、 Perl 、ruby 、Python 、PHP、 C# 等)包含很多图形化数据Plugins ( Nagiosgraph、Nagiosgrapher、PNP4Nagios等)可并行服务检查能够定义网络主机的层次, 允许逐级检查, 就是从父主机开始向下检查当服务或主机出现问题时发出通告,可通过email,pager,sms或任意用户自定义的plugin进行通知能够自定义事件处理机制重新激活出问题的服务或主机自动日志循环支持冗余监控包括 Web

7、 界面可以查看当前网络状态,通知,问题历史,日志文件等- 可以通过手机查看系统监控信息网络节点自动发现图形用户管理界面故障监控故障事件管理操作系统监控网络节点配置信息管理全面的节点监控Zenoss Core是开源企业级IT 管理软件 - 是智能监控软件,他允许 IT 管理员依靠单一的 WEB 控制台来监控网络架构的状态和健康度。 Zenoss Core 同时也是开源的网络与系统管理软件。Zenoss Core 的强大能力来自于深入的列表与配置管理数据库,以发现和管理公司 IT 环境的各类资产 ( 包括服务器、网络、和其他结构设备 ) 。 Zenoss 可以创建关键资产清单和对应的组件级别( 接

8、口、服务、进程,已安装的软件等) 。建立好模型后,就可以监控与报告IT 架构中各种资源的状态和性能容限了。Zenoss同时提供与CMDB 关联的事件和错误管理系统,以协助提高各类事件和提醒的管理效率。以此提高IT 管理人员的效率。- CPU 负荷- 内存使用- 磁盘使用- 网络状况- 端口监视- 日志监视支持多用户访问系统,每个用户可以管理不同的设备。系统记录用户操作日志和设备运行日志。2. 网络拓扑图采用 zhTelecom iTopoview技术,生动的展示网络结构图和拓扑图。对于大量的管理对象,可以通过划分组、网络、域进行分级管理。大部分管理操作可以在拓扑图上直接进行。设备运行状况在拓扑

9、图上可以直接显示。3. 故障管理系统利用多种手段包括主动轮询、设备通报、性能超标诊断等监控故障的发生,并能实时将故障通知到管理员。在拓扑图上通过不同颜色来提示不同级别的故障。可以查看故障的原因、发生时间、发生地等。支持故障智能分析,帮助管理员找到根本原因。4. 性能监控系统可按预先定义的策略,定期的对被管设备进行性能监视,采集包括负载、容量、质量、连通性、错误率、工作状态、可靠度、服务状态等多种性能指标,提供实时和历史的性能数据报表。5. 性能分析综合比较分析性能数据,发现网络瓶颈和潜在问题,为优化网络提供依据。预先对性能指标定义不同的警告阀值,在指标超过阀值的时候,提前通知管理员,能有效的预

10、防故障发生。6. 设备配置管理控制设备启动、恢复出厂设置,对设备固件升级备份,配置各种运行参数、服务参数等。7. 管理工具集在界面上集成各种外部管理工具,如Ping 、 Telnet 、 Web连接、各种专用工具等。8. 扩展支持系统提供配置文件、数据库、 程序3 个级别的修改扩展,实现对新功能的支持。开发语言评估开源软件语言其他细节NagiosCWeb php+cgiOpennmsJava , jsp/Servlet,springMaven 工程,支持 eclipseMVC开发CactiPHPZenossPythonZabbixC ( backend) PHP( WEB)SugarNMSJa

11、vaJ2SE、 XML 、 HTTP、 JDBC 、Swing、RMI、O-MMapping、 O-RMapping等小结License市 场 占开发语言有率,以功能(全管理界面( Java得( free得分面得分 3, (FULL分 3,2, GPL市 场 占软件 选项得基本全面CONTRL2 ,C/C+得分有 率 高得分 1,商用得2,其他 1) 其他 1)分 2,其他分 0)低 依 次计分1 )Nagios1631214Opennms2532316Cacti122218Zenoss1432111Zabbix1332211SugarNMS013239关于 license , Opennms

12、的 license 网站描述如下其他软件基本上都是在GPL 限制下进行。如果我们选用了,在不付费的情况下就是涉及开放源码的问题。但也可以打擦边球“一个关于 GPL 重要的争议是,非 GPL 软件是否可以动态链接到 GPL 库”。从市场占有率来讲, Nagios 和 opennms 应用的比较广,也意味着更多的资料可以获取,更多的经验可以借鉴。从开发语言来说,Nagios使用 c 开发,界面PHP,cgi 也是由 c 来开发的,由于c 的复杂性,扩展开发上存在一定的难度,但是c 对我们部门来说还是比较熟悉的。Opennms是基于 java的, Web管理界面是基于JSP/Servlet , Sp

13、ring MVC。但是 Nagios 没有配置界面,配置需要直接修改配置文件。如果选用建议推翻所有目前的cgi 方式的管理界面,全部重新开发,或者再结合其他的管理软件。Cacti 基于 PHP,zenoss 基于 python,zabbix基于 c 和 php ,SugarNMS开源程度不够,所以不做过多调研。从以上分析,倾向选择Nagios和 opennms中的一种。调研过程中分别搭建了Nagios和 Opennms的运行环境。 搭建了 Opennms的开发环境,(Nagios的编译环境,源码包解压缩就是开发环境,无所谓搭建了)。在搭建 Opennms的过程中遇到一点点麻烦。Opennms的

14、安装和编译环境搭建都比较费力,Opennms 的编译环境依赖于Maven,eclipse的开发环境也需要花上一定的时间,尤其是公司的网络有诸多限制。Nagios编译和部署非常的顺畅,可以下载源码包直接编译安装。2.2 开发接口调查基于上文中的调查,对于开发接口的调查只针对于Nagios和 Opennms。Nagios支持插件开发。支持C/C+,JAVA,脚本,并且有大量开发好的Plugins 。插件是编译的可执行文件或脚本(Perl 脚本, shell 脚本等),可以从命令行运行检查状态或一个主机或服务。Nagios的插件的使用结果来确定网络上的主机和服务的当前状态。Nagios在需要时执行P

15、lugin 检查服务或主机状态。NRPE 方式:NRPE 是一个插件,允许执行远程Linux/Unix 主机上的插件。如果需要监控远程主机上的资源和属性,如磁盘使用情况, CPU 负载,内存使用等,需要使用这种方式。通过使用 check_by_ssh 插件可以实现类似的功能。NSCA 方式:NSCA 是一个插件,允许你发送被动检查结果从远程Linux/Unix 主机到 Nagios监控服务器上运行的守护进程。在分布式和冗余/ 故障监测设置,这是非常有用的。NDOUtils方式:NDOUtils是一个插件,允许把所有状态信息存储在MySQL 数据库中的Nagios 。 Nagios的多个实例都可

16、以存储在一个集中的报告的中央数据库的信息。这可能会作为一个新的基于PHP 的未来的Nagios的 Web界面的基础上。Nagios提供了 Nagios Plugin API。但是并没有提供除Nagios提供的功能外的其他功能的开发。添加新的服务需要阅读c 代码,难度上相对比较大。基于这一点,Nagios并不能满足我们的要求。Opennms是装配式的,支持根据配置装载服务和插件,扩展性很强。上图为 opennms的架构图,其中一些部分在最新版中有所变化。下表是 opennms并发的进程并发任务守护程序名称英文描述操作守护程序actiondAction daemon -自动操作执行工automat

17、ed action具,用于根据入站(work flow)事件自动操作(工作流)。采集守护程序collectdcollects data从受管节点采集数据。功能守护程序capsdcapability check对所发现的节点on nodes执行功能检查。它通常检查某个接口的端口,看它是否支持已知的服务协议。DHCP 守护程序dhcpdDHCP client for为OpenNMS 提OpenNMS供DHCP 客户机功能。发现守护程序discoveryinitial and对受管网络节点ongoing进行初始的发现discovery 互联网以及持续进行定控制消息协议期发现。(InternetCon

18、trol MessageProtocol或简写ICMP)事件管理器守护eventdmanages/stores管理来自其它并程序events发任务的事件,并将它们存储到 RDBMS通知守护程序notifdexternal向用户执行外部notification of通知。users故障管理器守护outagedOutage manager合并事件,以为每程序daemon -个受管节点服consolidates务提供持续的历events史故障视图。轮询器守护程序pollerdPoller daemon -定期轮询受管节polls managed点服务,以决定nodes/services操作状态。RT

19、C 管理器守护rtcdRTC manager实时收集数据,为程序daemon - real用户定义的各类time受管节点服务availability提供可用性信息。informationSNMP 陷阱守护trapdSNMP trap daemon 处理 SNMP 陷程序 handles SNMP阱(事件)。traps阈值服务守护程threshdThreshold daemon根据属性值是否序 monitor for达到指定的阈值threshold values来监控受管节点服务。支持总控 / 调度,发现,配置采集,性能采集,事件(告警)收集,轮询服务。通过在 service-configura

20、tion.xml配置需要的服务。OpenNMS系统配置信息通过XML 数据存储, 基于 linux系统和 Postgres 数据库的网络管理系统。网络数据通过JDBC 对数据进行持久化, Web采用 JSP/Servlet 。 OpenNMS 是一个 Open Source Framework,它采用了诸多的开源组件与框架,使用了各种协议的开源实现。 每一个层面服务、功能都有自己的配置文件。OpenNMS采用了 xml 数据绑定技术( opennms 采用的是 castor )。根据 xml文件的schema定义文件( xsd 文件)生成对 xml 文件到 java 对象的映射,这样就不需要写

21、解析xml 文件的代码而是针对java对象进行操作。 因此这些类都是在系统编译过程中由castor包根据 xsd 文件生成的。 (Castor是一个 Java 开源数据绑定框架, 它主要目标是提供Java对象与 XML 的绑定, Java 到 SQL 的持久化等 .)Cleanimports 是对 java 文件中的无用的 imports 作清理,并通过配置文件提供的格式对 imports 代码段进行格式整理。各种单元测试手段,HttpUnit , jWebUnit , Junit 。nekohtml解析 HTML ,Html Tidy对 html字符串进行修正,并做标准化的处理。Avalon

22、主要是一种Server 的架构,可以满足配置、日志等服务器程序的需要。Jdhcp,java DHCP的实现。Xerces解析 XML , API 与实现有 :xmlParserAPIs, xml-apis, xercesImpl。jCIFS,用 Java开发的 SMB 客户端库。ldap-impl,LDAP java实现。smtp.jar pop3.jar, SMTP, POP3 协议 Java实现。JRobin基于 LGPL 授权的网络性能监控系统,是RRDTool 的一个纯 Java实现。joeSNMP , Java SNMP类库。WebUI :OpenNMS框架逻辑上采用了MVC 架构,

23、准确来说是JSP MVC Model 1,采用此架构的主要理念是尽量把逻辑与表示分离,这有利于系统健壮性,代码重用和结构清晰,便于重新设计,并长期维持。在OpenNMS中 MVC 各部分主要代表如下:视图( JSP )OpenNMS 的页面通过 Model 请求回来的内容以HTML ,XML/XSL ,图表等形式呈现给客户端。控制器( Servlet )OpenNMS 的控制器采用 Servlet 方式的,配置在web.xml文件中,用来接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web 页面中的超链接和发送HTML 表单时, 控制器本身不输出任何东西和做任何处理。它只是接收请求

24、并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。模型 (Bussiness Object/Java Bean)模型表示企业数据和业务规则。模型允许重用相同的代码跨数个不同的用户界面组件。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。开发接口:OpenNMS提供了一个简单快速的框架用来扩展设置缺省服务与协议,为了扩展OpenNMS管理一个可定制的服务或协议需满足如下要求:以 Caspd plugin为例编写代码 capsd plugin(插件 ) 测试网络接口是否有支持期望的协议或服务添加一个<protocolplugin>

25、;元素,在$OPENNMS_HOME/etc/capsd-configuration.xml config定义新的服务。的编写代码 poller插件,在某一特定的网络接口,监测当前期望的协议或服务的状态。在 $OPENNMS_HOME的 /etc/capsd-configuration.xmlconfig配置文件中添加<service>和<monitor>元素定义新的调用服务。1.编写PluginCapsd使 用plugin执 行 设 备 的 性 能 检 测 , 一 个接口的 Java类。Plugin是一个实现下列接口中的方法必须实现:publicString getP

26、rotocolName();publicbooleanisProtocolSupported(InetAddress address);publicbooleanisProtocolSupported(InetAddress address, Mapqualifiers);在配置文件capsd-configuration.xml添加,比如FtpPlugin<protocol-plugin protocol="FTP"<property key="timeout" value="2000" /><property

27、 key="retry" value="1" /></protocol-plugin>在运行时,性能daemon通过它的服务将通过接结点标识符与调用 isProtocolSupported()方法。此方法是每一加载的plugin对象的每一个被发现的守护daemon,发现任何支持此接口IP 地址增加到ifservices数据表中。创建 Poller PluginPollerdaemon使用PollerPlugin轮询受管制接口所支持的服务当前状态。一个Plugin 是一个实现接口的JavaPoller类。实现下面的poller plugin接口。publicvoidpublicvoidrelease();publicvoidpublicint在 poller-configuration.xml中添加一个新的服务,间间隔与预定时间,参数列表需定义在<parameter>中的传递给 plugin<service>元素定义服务名称,多少时元

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论