本节书摘来自华章计算机《Cacti实战》一书中的第1章,第1.2节,作者:刘钊,张跃著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.2 为什么要使用Cacti
在IT行业,任何产品或者解决方案都不可能适用于所有的用户和场景,针对Cacti自身的特点,本节首先介绍它比较合适的使用场景。接着介绍目前市面上常用的同类产品,Cacti的优势和劣势,最后总结归纳出使用Cacti的理由。
1.2.1 Cacti的使用场景
通过笔者这些年的考察,会发现在如下几个场景中,Cacti具有得天独厚的优势。
1.?中小型企业
通常情况下,企业,特别是中小型的企业,对于IT信息系统的建设成本比较敏感,通常这样的企业又不乏有技术、有想法的工程师,利用开源软件既可以得到符合自己情况的系统,又能节省一大笔系统建设成本,所以在中小型企业的机房,经常会看到Cacti的身影。
2.?大型数据中心
大型数据中心的监控系统往往非常复杂,并不是某一家就可以提供End-To-End的解决方案,在这种情况下,Cacti可以肩负起整体监控系统的网络流量、单台主机工作负载以及非IT化的生僻设备的监控任务,并通过开放的API接口接受其他监控系统的整合,协同工作。
3.?紧急的项目抢险
不同于常用的使用场景,Cacti不仅可以作为一般企业IT系统监控和数据中心的日常运行维护管理,在某些特殊场景中,它还可以发挥独特的作用。紧急的项目抢险就是一个非常好的例子,笔者在项目的运行维护中,经常会接到这样的电话:
“我的数据库系统怎么从今天早上起变得这么慢?!”
“先别急,这之前的几天你们对数据库系统做过什么没有?”
“没有啊……什么都没做啊……好好的就突然慢下来了!”(通常我们的客户都是这样回答的……)
“系统日志和监控数据发给我看一下吧,我来试着定位问题。”
“系统日志怎么导出来啊?监控系统前几天消防演习,机柜关机的时候给停掉了,赶紧过来,别那么多废话了!”(客户暴怒了……)
通常这种情况下,我们都会再带着一套Cacti系统,接驳目标设备,Cacti系统会自动展现监控设备的情况,没准儿我们会发现网络的传输速度正常,数据库主机的计算压力也不大,内存也没有吃满到交换文件的地步,存储性能也OK,就是语句执行起来时间很长,试着查看了一下计划任务,发现问题:不知哪路“神仙”把Rebuild Index的维护计划给删掉了,导致大量的新增记录没有索引,联合查询的时候非常慢。问题得到准确定位!
通过Cacti采集数据,对数据可视化来定位问题,既快速,又简单明了。
Cacti,挺好的,我们一直用它,倍儿有面子!
总结起来,Cacti对于1000台服务器以下的数据中心监控,具有广泛的普适性,它良好的界面设计、开放的系统架构,可以承担起监控的重任。目前笔者看到Cacti已经在电信、石油、政府、教育、医疗等多个行业的客户机房使用。相信大家在日常的工作中也会经常看到,Cacti默默地为我们工作。
1.2.2 Cacti与同类运维工具的对比
目前在业内,有非常多的同类软件,针对商用产品,不做太多评价,毕竟开源项目的高度可定制化,随心所欲地按照用户需求修改功能,这一点是商业产品不具备的。单纯从开源项目来看,与Cacti在同一水平线上的产品有如下几个:
1.?Nagios
Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和UNIX的主机状态,交换机、路由器等的网络设置,以及监控打印机的什么等。在系统或服务状态异常时,发出邮件或短信报警,第一时间通知技术人员,在状态恢复后,发出正常的邮件或短信通知。
Nagios的优势在于可以对数据中心中大量的服务器,以及在其上运行的数据服务进行监控,以快速定位问题,进行报警。
相比Cacti,Nagios在网络流量、实时监控以及数据可视化方面的功能很弱。
2.?Zabbix
Zabbix是一个基于Web界面的、提供分布式系统监视以及网络监视功能的企业级开源解决方案。Zabbix的界面如图1-3所示。
Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制,使系统管理员快速定位和解决存在的各种问题。Zabbix由两部分构成:Zabbix Server与可选组件Zabbix Agent。
Zabbix Server可以通过SNMP、Zabbix Agent、Ping、端口监视等方法提供对网络状态的监视,数据收集等功能,它可以运行在Linux、Solaris、HP-UX、AIX、Free BSD、Open BSD、OS X等平台上。
Zabbix Agent需要安装在被监控的目标服务器上,它主要收集硬件信息或与操作系统有关的内存、CPU等信息。它可以运行在Linux、Solaris、HP-UX、AIX、Free BSD、Open BSD、OS X、Tru64/OSF1、Windows NT 4.0、Windows 2000/2003/XP/Vista等操作系统之上。
Zabbix的优势在于数据的输入/输出,但是在数据可视化方面做得不如Cacti。
3.?Zenoss Core
Zenoss Core是开源企业级IT管理软件,它允许IT管理员依靠单一的Web控制台来监控网络架构的状态和健康度。
Zenoss Core来源于Zenoss开源项目,Zenoss的体系架构非常庞大,当然具备的功能也比较完善,这一点是相对于Cacti来说的,这是Cacti的弱点。
但是Zenoss的体系架构足够复杂,也导致在二次开发和实际使用过程中,系统管理员必须花很长的时间,耗费很大的精力来学习,修改过后的Zenoss,由于功能模块的强耦合性,导致系统在上线之前需要进行大量的测试与验证,耗费人力、物力是在所难免的。
简单易用是Cacti对比Zenoss最大的优势。
4.?OpenNMS
OpenNMS是一个企业级基于Java /XML的分布式网络和系统运维管理平台。它可以显示网络中各种终端和服务器的状态和配置,为管理网络提供有效的信息。OpenNMS的界面如图1-4所示。
OpenNMS是用Java语言开发的,可以真正做到跨平台。这个项目是由一群经验丰富的网络管理专家设计开发的,针对网络管理员平时关注的对象建模,有很好的粒度把控和很好的扩展性。他们还借鉴了Linux系统设计的一些概念。它的系统开发、设计最大程度地遵循国际通信标准。OpenNMS从设计之初就被定义为一个分布式系统,可以通过配置来满足各种复杂的网络管理要求。
我们必须承认在现阶段,OpenNMS是市场上占有率最高的开源系统运维软件,跨平台的设计、完善的设备库、友好的界面都是它成功的因素。但是在实际使用过程中,我们发现针对OpenNMS的二次开发需要具备Java、JSP、Servlet、Spring、MVC等技术基础,开发的难度比较大,并且安装配置过程也非常麻烦。
几款开源软件的总体评估情况如表1-1所示。
1.2.3 使用Cacti的理由
Cacti的外观设计、架构设计很简单,而且松散耦合,深究其内涵,我们发现它对高级功能的扩展支持也很到位,特别适合中小型企业、院校机构、政府机关等潜在用户使用。通过一段时期的实际项目部署,也发现它确实简化了用户工作、增强了运维性能。总结起来,使用Cacti的理由也许会有以下几点。
1.?友好的体验
Cacti的安装和配置、数据组织、界面展现均通过Web来实现,通过鼠标点击即可完成。Cacti交互体验非常友好,还有具有强大的数据管理功能。Cacti登录之后的主界面如图1-5所示。
因为Cacti基于RRDTool进行运维数据的管理,所以RRDTool天生的优势(数据采集效率高、可以显示负值、一个图形中可以接驳多个数据源、数据的存储方便,等等)能很好地继承下来。
2.?低负载的运行
Cacti的数据存储与可视化是分开的,这样可以有效降低Cacti服务器的负载,提高运维服务器的性能。
通常可以把Cacti需要的各个组件安装在不同的服务器上来均衡Cacti系统的资源开销。例如,数据中心本身就已经部署了MySQL服务器,那么新建一个Cacti数据库即可,还可以将Cacti的主体程序与RRDTool图像文件分开存放来降低系统的计算资源,等等。
3.?高自由度的定制
Cacti调用的组件均为开源、高度的可定制化属性,用户可以根据自己的需要制作模板,不会遇到设备无法兼容的问题。
同时,Cacti加载扩展插件和模板的方法及其简单,用户能最快速地享受到扩展插件带给系统的好处。水位线预警功能插件的配置界面如图1-6所示。