NMS开源软件选型分析评估报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NMS开源软件选型分析评估报告
目录
1标准和目标 (1)
1.1前言 (1)
1.2目标 (1)
1.3标准 (1)
2评估 (2)
2.1筛选 (2)
2.1.1候选软件 (2)
2.1.2License评估 (2)
2.1.3软件功能评估 (3)
2.1.4开发语言评估 (5)
2.1.5小结 (6)
2.2开发接口调查 (7)
2.2.1Nagios (7)
2.2.2Opennms (8)
3结论 (14)
4MISC (14)
1标准和目标
1.1前言
目前开源的网管软件众多,时间关系只能通过网络上的资料介绍和其他用户的体验进行评估。对于重点调查的开源软件通过运行环境搭建、开发环境搭建的方法进行实践。
如果只是对通用网络设备的管理,被调研的软件只要经过适当的配置就可以满足要求。对于我们的需求,这些软件不能满足我们100%的需求,必须进行二次开发,对软件二次研发的接口的调研就成为我们考察软件的一个重要的组成部分。
部门对网管软件的定位应该不会投入过多的资金,商用软件价格高昂应该不在考虑范围之内,也尽量不选用开源软件商用版本,重点放在纯开源软件上。
选择了一种开源软件也就选择了一种架构,所以架构的选择也要适合我们部门的开发能力。
1.2目标
选择一款适合的开源软件,在此基础上进行整合和二次开发,构建部门设备网管平台。
1.3标准
选型标准:
✧License
不仅仅是免费,无license限制是首选;
✧市场占有率
广泛的市场占有率,说明软件得到过足够多的验证;针对于成功的开源软件,可以找到一些第三方的扩展资源,我们只要遵循拿来主义就好;
✧功能
一些功能可以直接拿来使用,或者简单的改造,可以节约成本;
✧完备的扩展开发接口
被选择的开源软件是否已经提供完备的二次开发接口,满足二次开发的要求;
✧开发技术
选择开源软件的另外一个层面考虑是尽量考虑使用部门成员最熟悉的开发技术,尽量避免涉及相对部门来说的新技术、开发语言,这样可以进一步研发降低成本;
✧开源架构
就我们目前的需求,开源网管软件的功能,我们能用到的部分并不多。选择了开源其实主要就是选择它的架构。架构的开放性,易扩展性将直接决定我们的研发成本。
2评估
开源网管软件的市场占有情况
上图是网络监控软件的占有率。其中以Nagios和Opennms占有率最高。
2.1筛选
2.1.1候选软件
✧Nagios
✧Opennms
✧Cacti
✧Zenoss
✧Zabbix
✧SugarNMS
2.1.2L icense评估
2.1.3软件功能评估
The NRPE addon is designed to allow you to execute Nagios plugins on remote Linux/Unix machines
2.1.4开发语言评估
2.1.5小结
关于license,Opennms的license网站描述如下
其他软件基本上都是在GPL限制下进行。如果我们选用了,在不付费的情况下就是涉及开放源码的问题。但也可以打擦边球“一个关于GPL重要的争议是,非GPL软件是否可以动态链接到GPL库”。
从市场占有率来讲,Nagios和opennms应用的比较广,也意味着更多的资料可以获取,更多的经验可以借鉴。
从开发语言来说,Nagios使用c开发,界面PHP,cgi也是由c来开发的,由于c的复杂性,扩展开发上存在一定的难度,但是c对我们部门来说还是比较熟悉的。Opennms是基于java的,Web管理界面是基于JSP/ Servlet,Spring MVC。
但是Nagios没有配置界面,配置需要直接修改配置文件。如果选用建议推翻所有目前的cgi方式的管理界面,全部重新开发,或者再结合其他的管理软件。
Cacti基于PHP,zenoss基于python,zabbix基于c和php,SugarNMS开源程度不够,所以不做过多调研。
从以上分析,倾向选择Nagios和opennms中的一种。
调研过程中分别搭建了Nagios和Opennms的运行环境。搭建了Opennms的开发环境,(Nagios的编译环境,源码包解压缩就是开发环境,无所谓搭建了)。在搭建Opennms 的过程中遇到一点点麻烦。
Opennms的安装和编译环境搭建都比较费力,Opennms的编译环境依赖于Maven,
eclipse的开发环境也需要花上一定的时间,尤其是公司的网络有诸多限制。
Nagios编译和部署非常的顺畅,可以下载源码包直接编译安装。
2.2开发接口调查
基于上文中的调查,对于开发接口的调查只针对于Nagios和Opennms。
2.2.1N agios
Nagios支持插件开发。支持C/C++,JAVA,脚本,并且有大量开发好的Plugins。
插件是编译的可执行文件或脚本(Perl脚本,shell脚本等),可以从命令行运行检查状态或一个主机或服务。Nagios的插件的使用结果来确定网络上的主机和服务的当前状态。Nagios在需要时执行Plugin检查服务或主机状态。
NRPE方式:
NRPE是一个插件,允许执行远程Linux/ Unix主机上的插件。如果需要监控远程主机上的资源和属性,如磁盘使用情况,CPU负载,内存使用等,需要使用这种方式。通过使用check_by_ssh插件可以实现类似的功能。
NSCA方式:
NSCA是一个插件,允许你发送被动检查结果从远程Linux/ Unix主机到Nagios监控服务器上运行的守护进程。在分布式和冗余/故障监测设置,这是非常有用的。
NDOUtils方式:
NDOUtils是一个插件,允许把所有状态信息存储在MySQL数据库中的Nagios。Nagios 的多个实例都可以存储在一个集中的报告的中央数据库的信息。这可能会作为一个新的基于PHP的未来的Nagios的Web界面的基础上。
Nagios提供了Nagios Plugin API。但是并没有提供除Nagios提供的功能外的其他功能的开发。添加新的服务需要阅读c代码,难度上相对比较大。基于这一点,Nagios并不能满足我们的要求。
2.2.2O pennms
Opennms是装配式的,支持根据配置装载服务和插件,扩展性很强。