随着网络方案的不断扩展与多元化走势,大量有线及无线设备开始成为网络体系不可或缺的组成部分,用户对网络监控工具的需求也随之持续走高。虽然功能丰富的商业产品比比皆是,但来自开源社区的强大方案仍然对监控工具市场的发展起到巨大的推动作用。
在本系列文章中,我们将一同剖析四款高人气开源产品--Nagios Core 3.5、NetXMS 1.2.7、OpenNMS 1.10.9以及Zenoss Core 4.2.四款产品都已经相当成熟,足以提供与其它企业级同类方案相媲美的综合性监控能力,同时拥有良好的社区支持体系。
四款产品都提供管理、性能监控以及网络设备警示与报告功能,其作用范围涵盖服务器、路由器、交换机、打印机、UPS、网络站点、业务应用程序以及移动设备等等。监控功能可以简单起效,用户可以像使用PING请求那样利用SNMP(即简单网络管理协议)或者本地代理对单一设备进行全面管理。
此次参与评述的四款产品经实测全部支持SNMP及其它通用型协议,包括WMI、HTTP、SMTP、SSH以及XML。尽管其中两款产品只能用于特定操作系统,但四者全部可以实现跨平台IT基础设施监控(本质上说可作用于任何拥有IP地址的设备)。它们支持的功能包括自动识别、SNMP、可阅读系统日志、触发器/警报设置、Web应用程序、分布式监控(即负载平衡)、映射、IPv6(只有NetXMS不支持IPv6)以及库存追踪。
四款产品还提供基本而全面的基础设施监控功能,而且很少甚至完全不需要额外硬件、内存以及存储机制作为监控环境的支持基础。在本次评述中,我们将从安装便捷性、配置便捷性、管理能力、多平台支持能力、报告机制及总体可用性等几个角度做出横向比较。
第一位竞争者:Zenoss
Zenoss堪称我们的首选方案,这主要是由于其直观且专业的管理界面对于用户极具吸引力。另外,其环境配置与报告运作机制也非常简便;当需要帮助时,我们找到的用户指导文档非常翔实清晰--出色的说明资料在开源领域极为难得。但完美永远只是目标却无法真正达成,我们发现Zenoss对资源要求较高,即使只管理少数几台设备、它也需要消耗大量硬件及内存等附加资源。
Zenoss Core是一款开源网络管理工具,可以运行在红帽企业Linux(简称RHEL)或者社区企业操作系统(简称CentOS)两大Linux版本当中。另有一套虚拟设备版本,能够利用VMware Player运行在最小安装配置下的CentOS当中.zenoss Core基于Gnu GPL2许可。除了开源版本之外,Zenoss还提供多套商业监控解决方案。
Zenoss不需要搭配代理,且使用SNMP、SSH、Telnet以及WMI等现有协议。在识别过程中,Zenoss会收集个别设备的组件信息并归纳其潜在运行依赖关系,通过这种方式创建出的基础架构清单被称为“配置模型”、这也正是Zenoss网络管理方案的核心所在。
除了使用自动识别功能之外,管理员还可以手动输入信息并将监控的ZenPack数量调整至200以上,从而拓展单一或多台设备所搭配的配置模型.zenPack从使用层面看类似于开源免费社区所开发的功能性插件.core ZenPack被打包在Zenoss Core版本当中,而商业版ZenPack则只会出现在商业版本中。
在解决了一系列硬件需求与依赖关系问题后,我们最终成功在运行着CentOS 6.4最小化版本(无图形用户界面)的虚拟机中安装了Zenoss 4.2.我们发现Zenoss在设计思路上并没有考虑轻量级基础设施的配置现状--事实上最少要6GB内存才能让一台仅安装了操作系统和Zenoss的设备进入正常运行状态.zenoss资源密集型方案的头衔可谓实至名归,它能够监控多达一千台设备,且建议配置为最少16GB内存与八个CPU核心,存储空间和传输速度也是越强越好。
Zenoss能够监控多种操作系统平台,其中包括网络设备(例如路由器与交换机)、服务器以及特定应用程序。它采用分层式架构:用户层、数据层、处理层与采集层。用户层基本负责提供用户界面,数据层则负责从三个不同的数据库中收集数据,处理层管理采集层与数据层之间的通信工作,采集层利用一系列服务向数据层提供收集到的数据。
可用性监控的实现依赖于一系列手段,例如利用ICMP或者SNMP响应对TCP/IP端口及服务进行测试及查询.zenoss还能够对Windows及Linux流程及服务进行可用性检测。
Zenoss通过收集SNMP OID值的方式实现性能监控。整个过程需要借助预加载MIB(即管理信息基础)、新的本地MIB以及对定制性能插件的内置支持等机制。
安装完成之后,Zenoss就能像物理设备那样接受来自不同设备(包括台式机、笔记本及移动设备)浏览器的访问。其用户界面高效而直观,在默认情况下会显示警示信息以及基础设施地理位置。用户还可以通过配置在浏览器中查看任何URL、内部或外部页面。仪表板中显示的信息可以通过开发者提供的所谓“门户组件”进行调整,各项目的对应显示窗口也可随时添加、删除并在仪表板内部任意拖拽及调整窗口尺寸。这样的开放性让我们能够随心所欲定制出符合需要的选项。“守护进程关闭”、“消息”与“生产状态”等功能也拥有对应的门户组件。
在向监控工具中添加设备时,大家可以使用自动识别功能或者手动输入设备的IP地址或主机名称。在设备添加完成之后,具体项目会显示在“基础设施”选项卡中、并附带状态基础信息与彩色编码提示。
除了“基础设施”之外、“事件”选项卡中显示的基本属于同类信息,但只按事件进行排序。事件与基础设施两种标签使管理员能够通过输入数列标题对大部分数列加以分类。对于每个事件,大家可以执行不同的处理操作,包括“只应答事件但不实际执行”及向设备发出“手动ping”或者“snmpwalk”指令以检索更多信息等。事件一旦处理完成,Zenoss会将其关闭并进行归档。
Zenoss Core提供强大的报告功能,从基础的准备就绪报告到定制报告功能应有尽有。除了标准的事件、设备及性能报告之外,Zenoss还还提供完善的图形化报告,包括在同一份报告中包含多份汇总自多台设备的图形化报告。这些报告可在屏幕中显示、打印在纸面上或者被保存为PDF文件。
目前已经有大量第三方ZenPack可供下载,其中一些甚至允许用户实现Zenoss与移动Android设备间的交互需求,我们也可以利用由Zenoss提供的API说明文档创建属于自己的ZenPack。
虽然Zenoss Core对于系统配置的要求颇为严苛,但这也使得整套监控环境在性能上极为强大、足以处理规模化设备与数据流量.zenoss的用户界面灵活而富于现代气息,丰富的选项与定制化仪表板令人印象深刻。无论是显示在屏幕上还是打印成PDF形式,其统计报告都极具综合性且信息排布井井有条。另外,我们还要再次掌握Zenoss那超过两百页的PDF用户手册,面面俱到的内容与清晰明了的指导在开源领域极为难得。
第二位竞争者:OpenNMS
OpenNMS是一款强大的网络管理工具,能够运行在大多数平台之上且足以应对大规模数据的管理工作,其定制仪表板功能尤其令人赞叹。由于已经得到广泛普及,目前已经有超过一万五千款插件可供用户选择。
作为一款基于Java的跨平台产品,OpenNMS能够运行在任何支持Java SDK 1.6及更新版本的平台上.openNMS基于GNU GPL许可,开发团队还提供商业许可及相关技术支持.openNMS的核心功能包括二层及三层连接自动识别、网络自动识别、自动配置以及服务识别等。在最新版本中,这款工具还添加了对IPv6的支持能力.openNMS拥有一套内置网络服务器系统,用户通过内置用户列表、LDAP或者RADIUS协议实现身份验证。
除了创建自有事件,OpenNMS还可以从SNMP、HTTP、WMI、XML、JMX以及系统日志等外部协议中接收性能数据。从服务监控方面来看,它能够与一系列常用协议及服务进行通信,包括DNS、Windows服务状态、BGP会话、思杰、邮件协议等等,这还只是其通信对象中的一小部分。目前已经有一百多家厂商为其开发出超过一万五千款trap,其中SNMP trap接收器能够在设备启动后为其提供大量实用功能。
我们可以通过多种方式实现通知推送目的,包括利用标准页面调度程序、邮件通知机制以及更具定制特色的微博(例如Twitter)与命令行呼叫等方式。在整合性方面,它能够与DNS交互、接收并上传节点信息,还可与Hyperic HQ、RANCID以及Asterisk电话平台等第三方产品进行交互。
最后,OpenNMS还提供多种报告选择,用户可以通过预先配置调整报告机制或添加以日期范围为基础的筛选方案。报告可以在指定时间运行,其结果会被保存到文件系统中或通过电子邮件发送至特定收件人。生成的文件格式分为PDF与CSV两种。
OpenNMS的最低系统要求非常亲民,只需要512MB内存。但如果要让整套系统有能力应对任何数据采集任务,那么用户仍然需要在处理器、内存以及存储配置方面进行大幅强化。
由于该工具图形用户界面所采用的JSP页面属于动态编译,因此除JRE之外、OpenNMS还必须配合完整的Java SDK才能正常运行。再有,PostgreSQL也必须提前安装就绪。
我们将OpenNMS作为独立服务器安装在Windows系统当中,并利用Web图形用户界面在浏览器中进行管理操作。在登录之后,主页面会显示关于基础设施的一些基本信息,例如各节点在过去24小时中的停机或者可用状态,并额外提供专门的区域用于访问与报告功能。大家在屏幕上方的水平链接栏中还能找到其它导航机制。
OpenNMS主要利用两种特定配置方式向监控体系中添加新功能,即自动识别与定向识别。我们先通过一系列参数设定让OpenNMS了解如何根据需求识别基础设施,大家可以在“识别配置”中输入URL、特定的IP及IP地址范围并设定例外情况的方式调整其识别机制。值得一提的是,大部分OpenNMS配置信息都被以XML格式保存在文件中,熟悉XML的用户可以直接在对应文件中进行修改、而不必使用图形用户界面。
在配置过程中,我们发现用户需要经常查阅在线说明文档(好在指导材料还算全面),否则很多任务根本无法完成。之所以面临诸多挑战,是因为我们对于OpenNMS所使用的基础设施技术术语不够熟悉。从理论角度讲,节点应该会被自动识别并添加到监控体系当中,但由于我们的测试实验室拥有许多故意隔离出来的节点,因此这部分配置工作只能通过手动方式完成。
全局导航对于我们来说不太符合逻辑,不过我们认为各个环节与屏幕信息在整合之后会使其得到改善。也许这只是由配置引起的小问题,但我们发现在打开警报、事件或者通知选项卡后,屏幕上确实不会显示任何内容--除非大家进行搜索或者点击查看全局链接。
不过我们清楚,对于大型基础设施来说除非与筛选工具配合使用、否则屏幕上直接显示出的基础信息几乎没什么实际价值。我们在登录后只能看到采用仪表板风格的屏幕, 而且需要点击OpenNMS以返回管理面板。我们还可以点击链接激活另一个仪表板界面,其中提供一部分关于基础设施的简要信息,但通过横向比较、我们发现这套方案效果平平。
我们对于搜索功能非常赞赏,而OpenNMS也确实在搜索功能的可用性方面下足了功夫。我们尤其喜爱以节点为单位搜索DNS或者POP3等特定服务这一功能。另一项实用功能在于对与资产(包括位置、操作系统及运行状态)相关的数据字段进行搜索。
OpenNMS的报告功能非常全面,其中包含大量预创建模板并能够运行临时报告。报告可被输入到屏幕中或者以PDF及/或CSV格式汇总成文件。
我们发现OpenNMS的用户界面需要经过一定调整才能满足大部分使用者对直观性的需求,但随着对界面的愈发熟悉、我们的注意力更多集中在了这款产品出色的功能身上。管理员界面提供大量实用信息,相信能很快得到大家的肯定。我们也喜欢它带来的创建只读仪表板的功能。搜索功能非常强大,彩色编码警报也效果显着。总体来看,OpenNMS确实是一款能够支持多种平台的出色管理工具。
第三位竞争者:NetXMS
这次我们一起来看NetXMS。这是一款用户界面有些凌乱、但却拥有丰富工具集的产品,不仅能对基础设施进行细化管理、而且在移动方面倾注了大量心血。
NetXMS可以运行在Windows 2003及更新版本、Linux、Solaris、AIX、HP-UX以及FreeBSD等多套系统平台之上,并遵循GPL许可机制。
NetXMS的最大特色就是能在不借助外部插件的前提下以原生方式支持大量主流平台.netXMS能够使用SNMP以及本地“高性能”代理、从而收集数据并将结果提交并保存至SQL数据库中(包括甲骨文、微软SQL Server、PostgreSQL、MySQL以及SQLLite)。我们可以通过自动或者手动方式实现二层与三层网络基础设施识别。收集到的数据会被保存在监控服务器中,并由管理员通过多种方式加以访问。
数据收集由对象/节点负责,而且每个对象/节点都拥有与自身相关联的阈值限制,例如服务器内存利用率或者路由器流量限值等。一旦超出阈值,NetXMS会直接触发某些事件;而随着阈值的回落,系统则继续触发正常业务事件.netXMS还支持Android,既可以对Android设备进行管理、又可以作为设备监控的代理机制。
除了在屏幕上显示通知及警报信息,NetXMS还允许管理员通过配置发送警报短信及电子邮件。具体事件也可被转发至另一台NetXMS服务器或其它外部系统.netXMS还具备本地脚本引擎,旨在实现高级自动化与管理功能。
NetXMS的系统配置要求简直可谓没有要求--只需要512KB内存与主频低于1GHz的处理器。不过对于大部分生产安装环境来说,主机操作系统还需要额外的CPU处理核心/强度/速率以及更大的内存容量。要安装在Windows系统中,我们还需要为其准备一套单独的数据库服务器,用于保存配置设定以及数据收集(支持PostgreSQL、MySQL、甲骨文或者SQL Server)。某些PDF说明文档已经有些过时(官方网站也已经明确提示了这一点),但我们发现维基百科能够起到很好的指导作用。
在测试环境中,我们将NetXMS安装在运行着PostgreSQL管理方案的Windows Server 2008 R2系统中,同时配备一套基于Java的桌面界面、Web界面或者移动管理控制台.netXMS还会同时安装自己的轻量级web服务器,这样大家就不必再安装IIS、Apache或者其它web服务器了。不过各位千万不要把Web界面安装在NetXMS所在的目录中,这样会导致工具安装失败、相当于搬起石头砸自己的脚。不过安装导航会默认将二者装在同一个目录中,这可能是供应商的失误。
NetXMS管理控制台的既定目标之一在于提供一套统一化跨平台图形用户界面(包括Web界面),从这个角度来看NetXMS无疑获得了极大成功。
虽然我们也在独立的台式机上测试过Web用户界面,但本次测试的大部分工作都利用了运行在服务器上的桌面应用程序。登录之后,工作台就成了我们的主要视图界面,用户可以通过不同的自定义方式对其进行调整,并将保存结果用于未来的会话过程。初一上手,用户界面上的大量标签与链接可能会让新手们感到不太适应。
要实现完整的自动识别功能,供应商建议我们让工具对大型网络进行几个小时乃至一整夜的全局扫描。由于我们的测试环境规模不大,因此整个识别过程耗时并不太长(不到30分钟)。大家也可以通过一系列简单步骤手动添加节点。节点添加完成后,NetXMS将在“事件状态”窗口中显示节点的基本信息,例如某个进程无法正常工作或者某个节点处于不可用状态。此外,工具还提供多个数据连接项(简称DCI),允许用户针对每个节点进行自定义配置或者将配置方案保存在模板并推广到整个网络当中。这样如果需要对配置进行整体修改,我们就不必在每个节点中重复折腾。
屏幕报告功能给我们留下了深刻印象,该功能允许用户运行一系列临时报告;报告结果所产生的数据集可被导出为CSV文件.netXMS还集成了Jaspersoft报告引擎,从而实现了创建自定义报告并在必要时加以重复使用。
总体而言,NetXMS是一套功能强大的管理工具,但在配置方面颇具挑战,因为设定与控制布局过多使整个调整逻辑显得有些混乱。用户手册也还不错,但具体内容应该再重新整理一遍。另一项不足之处在于,管理控制台应该提供与当前情况相关的帮助机制。
从积极的角度看,我们对NetXMS的跨平台能力、移动设备支持能力以及在移动设备中运行管理控制台的能力深表赞赏。便捷的自定义仪表板创建功能只需几次鼠标点击即可完成,能够帮助用户以可视化方式掌握网络运行状态。
第四位竞争者:Nagios
Nagios对于基础设施规模不大的小型企业而言非常理想,在它的帮助下技术团队无需像大型企业那样花费大量时间通过命令行对节点加以配置。
早在上世纪九十年代末Nagios就已经诞生,尽管最初是针对Linux所设计、但它在Unix平台上的运行状况同样出色.nagios Core是一款遵循GNU通用公共许可的开源软件,另有Nagios企业版为用户提供商业技术支持。
Nagios能够监控包括SMTP、POP3、HTTP、NNTP以及PING在内的多种网络服务。它还会追踪主机资源的使用情况,例如处理器负载、内存及磁盘使用量等。利用自定义插件,用户能够开发出自己的服务检查方案.nagios Core与之前提到的几款工具有所不同,其Core版本与市场上的其它商业产品相比缩水比较严重。
如果想使用SNMP trap或者移动应用等功能,大家必须采购其“专业版”或者“商务版”,而后端数据库选项则只在“商务版”中提供。“学生版”虽然仅仅售价50美元,但也只提供了快速入门指南、一套预配置虚拟机外加Web配置图形用户界面等基本功能。免费版本更是相当寒酸,只包含开源监控引擎。
HTTP、FTP以及SMTP等公共服务能够在不部署主机代理或者依赖于SNMP的前提下受到,但任何“私有”服务--例如CPU与内存使用率、用户信息、服务状态及运行流程等--都需要通过在主机上安装代理方可实现。针对不同类型的主机,供应商也提供不同种类的代理机制,例如Windows服务器、Linux/Unix服务器、打印机、路由器与交换机等。除了安装代理之外,大家还需要更新一系列配置文件以顺利启动监控工具.nagios Exchange网站提供大量可选插件,足以满足用户在实际监控/管理工作中的不同需求。
在通知功能方面,Nagios能够通过电子邮件或者手机短信发送警示信息,并有专门的系统根据问题的严重程度向不同个人及小组传达情况。
Nagios Core必须运行在Linux或者Unix的衍生系统环境下,如果要使用Web界面(也就是CGI,即计算机生成界面)、我们还需要准备一台web服务器(最好是Nagios与Apache一一对应)。
准备好前续工作后,我们需要从快速入门指南开始着手Nagios Core的安装工作。在我们的实际测试中,指南计划很快搁浅--因为我们选择Linux最新版本根本不在供应商的支持范畴之内。为了完成测试,我们不得不依靠第三方在线资源的指引将Nagios Core安装在CentOS 6.4版本中。必须抱怨的是,Nagios官方网站上根本就没有提供这样的备选说明。
Web用户界面中包含的CGI素材在外观与操作感受上都与Web页面非常相似。管理员启动页面左侧设有基本导航与公告/访问软件更新、技术支持与其它实用资源等选项。进入左侧的导航界面,我们可以访问各类指标,包括主机、问题以及报告的总体概述与细节信息。
“战术总结”屏幕显示出包括主机及服务在内的整套体系的当前运行状态。状态摘要则通过“关键”、“警告”、“未知”、“待定”以及“良好”等词汇对情况加以概括。网络图中显示了所有主机、各自运行状态以及彼此之间的连接方式。通过将光标移向不同主机,我们看到更为详细的概要信息。如果我们的基础设施由数百乃至上千台主机构成,那么这项功能恐怕没什么实用价值;但在小规模基础设施中,它倒确实能够提供实时的网络体系说明。
Nagios应用的一大优势在于能够在节点之间快速起效。略显平庸的用户界面使得资源没有被浪费在花哨的描述与表现形式上(但这也使界面较难上手)。虽然简单的设计不能算坏事,但我们仍然希望供应商能将界面风格加以进一步统一,同时对显示数据进行整理以提高可读性。当然,也许他们是故意通过这种笨拙的效果敦促用户尽快购买商业版本。
在报告功能方面,Nagios Core提供多种预置屏幕报告方式,用户可以在通过选项参数设置在下拉菜单中使用临时报告。但我们无法将报告内容以PDF或者其它任何格式加以导出。
单从免费版本来看,Nagios Core可谓名符其实--只提供“核心”功能组件,即最基本的基础设施监控引擎。虽然这样的方案在某些特定环境中也能顺利起效,但我们仍然希望花点时间进行任务管理配置。尽管Nagios Core的图形用户界面有些过时,但其性能表现非常出色、而且比其它全功能竞争方案更易于设置及管理。
备注:
NetXMS与OpenNMS具备很强的跨平台能力,而Zenoss与Nagios则基于Linux环境。为了在Linux与Windows之间找到测试环境平衡点,我们选择将NetXMS与OpenNMS安装在Windows服务器当中。