Netexpert FAQ 网络分析专家学习建议入口 @netexpert成员申请指南
netexpert积分规则的说明 Netis招贤纳士(2008年11月22日更新)
发新话题
打印

傻瓜化的流量监控软件Cacti的安装与使用

傻瓜化的流量监控软件Cacti的安装与使用

2005.4 原创

作者:wp1998@e21.edu.cn
声明:本文档可以自由转载与公开,但请保留作者信息。更多文档交流请到http://kds.1vs1.cn

一、Cacti介绍与工作原理

在使用cacti之前先谈谈mrtg,呵呵。一般情况下,我们目前大多是采用mrtg对网络设备的端口流量进行监控,其基本原理是利用cron定时采集snmp数据,并定时生成流量示意图,当然也可以定时采集其他程式成生的非snmp数据来生成特定的曲线图,例如在线人数等。

但是mrtg也存在一些问题:
1。配置比较繁琐。我们一般都是通过修改cfg文件来设定流量图的监控项目、标题、颜色、长宽等信息,当设备数量比较多,或者监控项目需要修改设定的时候,修改cfg文件的工作是比较繁琐,不小心就会出错。
2。系统资源消耗较大。mrtg将每一个监控项目的历史数据通过log文本文件保存,时间越长log文本将会越大,在每次定时生成流量示意图的时候都会处理这个文本并重新生成日、周、月、年四张图片,在监控项目很多的时候对系统的负载要求是很大的。
3。流量图过于简单。mrtg的流量图只能处理2条曲线,而且只能显示固定的日周月年四个时间区段的图片,对于很多监控项目可能就并不适合了。

这个时候就有了一种新的替代方案RRDtool,它能够弥补以上mrtg的一些弱点,但是需要指出的是RRDtool已经不是一个单纯的监控软体,它更是一种时间戳格式数据的存储方式,以及相关的数据更新、输出和曲线图生成功能的软体平台。关于RRDtool的详细介绍可以查询官方网站和搜索引擎,我也将另文详细介绍。

Cacti是一种利用RRDtool、snmp、PHP、mysql、apache多种工具而成的一种监控软件,其源代码基于PHP脚本编写并公开,它的基本工作流程就是:
1。利用cron定期执行php脚本代码,通过snmp读取指定监控项目的snmp信息,然后将结果保存到rrdtool数据文件中。
2。在web监控界面中通过php读取rrdtool并生成指定监控项目和指定时间段的监控曲线图

它主要有以下一些特点,当然有些是RRDtool的特性:
1。基于RRDtool使效率提高。
Cacti基于RRDtool存储监控数据,在查询指定时间段的监控数据时候不用浏览整个数据文件,和mrtg的文本log相比具有更高的效率。监控曲线图片的生成并不想mrtg那样和数据采集同步并定时成生,而是通过RRDtool提供的图片生成工具使用PHP脚本来生成动态web图片。
2。监控项目曲线图多样化。
RRDtool的图片生成工具提供了多种参数,这样可以动态设置更多样式的曲线图,也可以将若干监控项目集中显示在一张图片中,例如我们如果要同时显示http/ftp/dns多种协议的流量时就可以派上用场了。当然,其他如颜色,曲线样式,图片大小格式,说明文字等都可以定制产生。
另外我认为最大的一个改进功能是定时时间段的曲线图生成,突破了mrtg中日周月年的固定模式,当然,这取决于你的存储数据条数,呵呵,在一般情况下,日周月年还是非常科学的一种时间样式。
3。基于web配置与监控,操作简单
Cacti是一种web方式的软件,监控项目的新建、配置、管理、监控都是基于web方式来操作的,这对于使用者来说是非常舒服的。

二、安装Cacti
在安装Cacti之前需要先安装如下软件,apache/php4/mysql/net-snmp/rrdtool,其中php需要配置mysql和snmp模块。
Cacti的安装是非常傻瓜的,我们首先可以在官方网站(http://www.cacti.net/download_cacti.php)下载软件包,我使用的是linux版本,因为我觉得在linux中运行得更为稳定,呵呵。

# wget http://www.cacti.net/downloads/cacti-0.8.6d.tar.gz //注意:在web站点根目录操作
# tar zxvf cacti-0.8.6d.tar.gz
# cd cacti-0.8.6d
# mysqladmin -u root create cacti  //创建Cacti所需的数据库
# mysql -u root cacti < cacti.sql  //初始化mysql表与数据
# vi ./include/config.php   //修改Cacti的配置文件

$database_default = "cacti";  //Cacti数据库
$database_hostname = "localhost";  //Mysql数据库地址
$database_username = "root";  //Mysql用户
$database_password = "";   //Mysql用户密码
我这里使用的是管理员用户帐号,你也可以新建一个单独管理Cacti数据库的Mysql用户;

# chown -R cactiuser rra/ log/
# crontab -e     //在cron进程中添加定时处理程序,这里是每5分钟执行一次PHP脚本
*/5 * * * * cactiuser /usr/local/php/bin/php /www/cacti/poller.php > /dev/null 2>&1

然后通过 http://your-server/cacti/install做一些配置的初始化,好了,这个时候软件基本配置完毕,默认的管理帐号和密码都是admin。

三、使用Cacti进行流量监控
下面我们来做个最基本的监控,来监控路由器的端口流量和CPU;
首先我们通过管理用户来登陆http://your-server/cacti/,在页面上有两种界面,Console是管理界面,graphs是图形监控界面;

第一步:点击Devices添加一个设备,填写相关的信息,Description/描述、Hostname/设备网管的IP地址、Host Template/可以选用Cacti提供的设备模板如Cisco Route,也可以选择None、SNMP Community/snmp口令,其他选项默认即可,当然你也可以根据自己设备的snmp设置来调整。
添加设备完成后正常情况下页面应该显示设备的snmp信息。
第二步:创建data Sources数据源和监控图。我们通过一种简单的方式来创建,点击Devices中我们刚刚添加的设备名,进入到设备编辑界面中,在页面下部有Associated Data Queries菜单,可以在这里通过Cacti查询某Snmp的关联信息,我们Add Data Query: 选择SNMP-Interface Statistics,点击add。
然后我们点击页面上部的Create Graphs for this Host 创建监控图,这是我们可以看到页面中路由器的所有interface都列表显示出来,在想监控的端口右侧的选择复选框,选择右下的监控类型为In/Out Bits,然后Create创建(这时就创建了RRDtool的数据库)。

点击Graph Management菜单,可以看到当前的监控项目列表,点击其中的监控项目可以进行编辑,也可以查看监控图是否正常生成。

在Graph Trees菜单中定制监控项目的分类,这样就可以在graphs界面中显示监控曲线图了。

四、一些思考

1。acati并不是一个直接的网络监控工具,它只是一个整合了各种工具的软体,首先它通过net-snmp来获取设备的snmp信息,然后它通过rrdtool保存信息,最后再通过php来生成和显示图片,最根本的仍然是获取snmp的节点信息。

2。以上演示的只是cacti一个很基础的操作,他有很多菜单都是要基于SNMP和RRDtool操作的,如果要更进一步需要多了解这两者的知识。

2。RRDtool是一个非常适于监控的数据存储格式,以时间戳为准保存信息使效率非常高,当然你也可以通过RRDtool的工具将数据输出成XML,我们可以利用RRDtool来进行你能够采集到信息的各种监控,这里是一个RRDtool生成DNS查询监控的例子(http://www.heinet.cn/dnsMonitor/)。当然RRDtool有很多其他的功能命令和参数,另文介绍。

[ Last edited by wp1998 on 2005-5-27 at 09:42 ]
三人行必有我师!

TOP

发新话题
版块跳转