不仅在分布式系统中经常用到,在网络管理中Cacti是无人不知的。 我们常见的应用是,在分布式系统中的 缓存系统,负载均衡器,底层存储等 组件的CPU,内存负荷,磁盘容量的监控。 还有在网络中各交换机,路由器,网络代理服务器的流量的监控也离不开Cacti.简单的总结一下这款网管软件的构架,流程和安装,及具体的部署和优化。
一.构架
CACTI :调度其他模块进行工作和以及与用户的接口。
其用户接口是基于B/S的站点,用户可以这站点中配置监控的设备,并且查看该监控设备的数据图。
Net-SNMP: 简单网管协议是一种无状态的基于UDP的网络管理协议。其原理是在一定的时间间隔内客户机到安装Net-SNMP的主机采集主机的数据。
要求通讯的机器必须安装 net-snmp协议栈,网上有开源的协议栈可以提供源码(如果想深入研究,可以看源码)。
其与CACTI的接口是snmpwalk命令,一般通过CACTI poller.php脚本进行调用。
RRDtool: 解析和生成对用户有价值数据的核心组件。 通过该工具可以将net-snmp协议采集的数据生成 rrd数据文件,并且可以将rrd数据文件进一步
解析成数据图形文件。
MySQL: 负责存储用户接口的相关数据,和RRDtool生成的图形文件数据。
二. 系统流程
step1 : Net-snmp 定时采集数据
通过执行crontab脚本
例:* /5 * * * * /usr/local/php/bin/php /usr/local/apache/htdocs/cacti/poller.php > /dev/null >&1
step2: 利用RRDTool将采集的存储在rrd文件中
例: rrdtool create test.rrd
--300 step
--。。。数据
并将该文件文件名存入数据库中。
step3: 用户查看某台数据
--用户登录后,点击graphs。
step4: cacti根据某种联合查询在mysql中得到 相关设备 rrd文件。可以在datasources中查看。
SQL语句的执行。
step5: 得到rrd文件后,cacti再去通过rrdtool将 rrd文件生成为图片。
例与: rrdtool create graphs 命令等
step6 :将png图片持久化存储在磁盘上,并在网页上返回给用户。