1.3 Cacti的架构与原理
本节分为两大部分,第一部分介绍Cacti的组织架构,通常新产品部分的介绍都比较晦涩难懂,所以我们通过一个形象生动的例子来介绍,大家看了不会感觉头晕脑胀。第二部分阐述Cacti系统的数据流向,这里不用花太多时间,了解即可,因为后面章节会有详细说明。
1.3.1 Cacti系统的组织架构
Cacti系统的各个模组之间的工作界面比较清晰,各个模组分工明确,耦合松散。如果把系统比作同福客栈(Cacti系统),那么会有以下几个角色(系统模组)。
1.?同福客栈的门脸——浏览器窗口
同福客栈,最初叫尚儒客栈,坐落在关中七侠镇,作为当地的一个知名高端会所,迎接远至十八里铺,西凉河地带的商业巨子,贵至六扇门的警界精英,连知县(大嘴他姑父)都要高看一眼。所谓来的都是客,同福客栈以最佳的用户体验,最完美的用户服务成为当地对外交流的形象窗口。
Cacti系统的对外窗口,即浏览器窗口,就好像同福客栈的门脸,所有的用户需求、用户操作、用户指令均通过浏览器窗口来进行交互(当然也支持命令行交互),这么做的目的只有一个——提升服务质量,完善用户体验。
2.?衡山派掌门人莫小宝遗孀、同福客栈掌柜佟湘玉——Cacti主体程序
掌柜负责客栈的整体协调,老白、大嘴、秀才一干人等均在她的调度下各司其职。谁不老实工作,她都能及时发现,开始发飙。
“额错咧,额一开始就错咧,额如果不嫁过来,额的夫君就不会死,额夫君不死,额就不会沦落到这个伤心的地方……”
Cacti主体程序是各个模组之间相互协同工作的基础和核心,它按照内置的工作流程引擎来顺序调度模组执行各自的工作。当模组工作不正常,或者数据偏离很大时,它可以及时发现其中的问题,并且第一时间报警,通知系统管理员进行系统维护。
3.?盗圣、八大派左护法、同福客栈大跑堂白展堂——Poller程序
白展堂跟掌柜的关系最好,俩人配合最紧密,掌柜要他干啥,他绝没二话,不过老白最核心的任务只有一个——跑堂,即把客人都迎进来,听听客人要吃点啥、喝点啥,都记下来。告诉李大嘴掌勺做饭。客人点完了菜,他还要隔三岔五地问问人家菜好不好吃,还需要点啥,最重要的就是得配合掌柜盯着客人,防止邢捕头、燕小六这样的二货一拔刀,客人不结账就跑了。
Poller程序主要是轮询被监控设备的数据采集工具。它在被监控设备第一次接入时通知系统建立相应的数据保存区域(招呼客人),然后定期轮询数据(回访客人),将数据保存在rrd文件中(通知大嘴做饭),并且配合主体程序(佟湘玉),实时探测被监控设备的状态,如果监控设备失去连接,就开始报警(防止客人不结账就跑路)。
4.?原七侠镇第三十六任缁衣铺头,现同福客栈厨子李大嘴——RRDTool
李大嘴重情重义,不随便抛头露面,兢兢业业把饭菜做好。他的任务是按照老白从客户那里得到的菜单,加工原料,形成菜品。即使面对钱老板的百般刁难,也能自成一家,独创必胜阁、麦得劳等多种新式月饼。他的存在,为同福客栈满足用户需求奠定了基础。虽不出彩,但足够稳定的菜品质量,保证了为同福客栈的客源。
RRDTool的主要工作是将Poller程序轮询采集到的数据进行妥善管理、保存和组织(从老白那里拿到采集的需求)。它是Cacti系统能够画出精美图表的基础。虽然RRDTool的软件体积很小,结构也相对简单,但是它工作稳定,资源开销相对较小,即使面对大量数据的处理,也能得心应手,是Cacti系统稳定工作的保障。
5.?前尚儒客栈老板、同福客栈账房吕轻侯——MySQL
吕秀才本出身名门,三岁识千字,五岁背唐诗,七岁熟读四书五经,八岁精通诗词歌赋,无奈遭遇变故,将尚儒客栈变卖给佟湘玉,成为了同福客栈账房。他饱读诗书,识文断字,是七侠镇不可多得的技术型人才,曾经刀不见血地了结姬无命而成为关中大侠,任青州知府,之后升至户部侍郎。吕秀才平时在同福客栈的主要工作是记账,把同福客栈的固定资产、人事信息等记录得井井有条。他是同福客栈长期稳定、繁荣发展的重要原因。
MySQL是一个关系型数据库管理系统,它由瑞典MySQL AB公司开发,目前属于Oracle公司(出身名门),由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。MySQL在Cacti系统中负责记录系统的基础数据(固定资产)和用户权限管理资料(人事信息)。
综上所述,一个完整的Cacti系统各个模块之间的关系应该如图1-7所示。
1.3.2 Cacti系统的数据流向
Cacti系统的数据流向主要分为三个阶段:数据的检索、数据的存储和数据的可视化(数据展示),如图1-8所示。
第3章将详细介绍这3个阶段的技术细节,这里,读者只需要有个大致的印象即可。
通过前文的介绍,结合这3个主环节,可以总结出一个完整的Cacti系统的工作流程。
Cacti系统的管理、使用、配置均通过浏览器窗口来完成。可以通过浏览器新建一个监控图表、监控模板等。所有的管理数据都存储在MySQL数据库中。同时,在一台Cacti服务器中,还可以发现Poller程序,它的任务主要是在被监控设备中轮询采集监控数据,它就好像一个路由器或者网关,将系统环境中的服务器设备、存储设备、网络设备、安全设备等一系列的IT设备的运行数据接驳进Cacti系统。这些轮询采集到的数据被保存在rrd文件中,Cacti系统运用rrd数据文件来创建监控图形。