一、	Cacti概述
1.1、什么是Cacti
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。

1.2、Cacti简介
1. cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。
2. Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量
3. snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(RoundRobinArchive),它能够存储的数据笔数在创建时就已经定义。

1.3、Cacti组成部分
 
 
2.1    Data Retrieval
Cacti首先要做的工作就是收集数据,cacti使用Poller(轮询器)收集数据。Poller是操作系统scheduler的扩展,如在类Unix系统中的crontab。现在的IT设施中会有许多不同的设备,如服务器、网络设备等,cacti主要使用SNMP协议来从远端的设备上收集数据,所有可以使用SNMP协议的设备都可以被cacti监控。
2.2    Data Storage
存储收集到的数据有许多方法,可以使用数据库、平面文件等,cacti使用的是RDDTool。RRD是Round Robin Database(环形数据库)的缩写,RRD用来存储和显示时间序列数据,如网络带宽、机房温度、服务器负载等,RRD使用非常紧凑的方式存储数据,数据不会随着时间的推移而增大,RRD还可以生成美观的图形。这些特性使得cacti没有存储需求。RRD也做一席位其他的工作,如RRD会将原始数据与已整合的数据进行合并,以使得历史数据的存储节省空间,RRD支持的整合功能包括:AVERAGE, MAXIMUM, MINIMUM和LAST。
2.3    Data Presentation
Cacti最大的一个特点是内置了RRDTool画图功能,将其与通用的web服务器相结合,可以实现在任意平台上使用浏览器就可以查看监控画面。
1.4、Cacti原理图
 
 
 
二、Cacti 服务端安装
2.1、安装关联包
# yum -y install install php php-mysql php-snmp mysql mysql-server net-snmp net-snmp-libs net-snmp-utils php-pdo perl-DBD-MySQL rrdtool



2.2、配置SNMP
#vim /etc/snmp/snmpd.conf
#将下边这行中的default 
com2sec notConfigUser  default       public
#改为:127.0.0.1
com2sec notConfigUser  127.0.0.1       public
com2sec notConfigUser  10.0.0.0/16       public
#将下边这行中的systemview
access  notConfigGroup ""      any       noauth    exact  systemview none none
#改为:all
access  notConfigGroup ""      any       noauth    exact  all none none
#将下边这行的注释“#”去掉
view all    included  .1          80





重启snmpd服务
# /etc/init.d/snmpd  restart
# chkconfig snmpd on
2.3、安装Cacti
# wget http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz   下载cacti主文件
# tar -xvf cacti-0.8.8b.tar.gz
# mv cacti-0.8.8b /var/www/html/cacti
# chown apache:apahce /var/www/html/cacti/ -R 
# chmod 755 /var/www/html/cacti/ -R


2.4、启动Mysql配置数据库
# /etc/init.d/mysqld restart
# mysql –uroot –p
> create database cacti default character set utf8;  注意咯。为utf8为否是乱码
> grant all privileges on cacti.* to cacti@localhost identified by 'cacti' with grant option;
> grant all privileges on cacti.* to cacti@127.0.0.1 identified by 'cacti' with grant option;
>use cacti;
>source /var/www/html/cacti2/cacti.sql;
> flush privileges;
>quit
2.5、修改cacti PHP文件,修改数据库地址
#vim /var/www/html/cacti/include/config.php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";

# vim /etc/php.ini
;date.timezone =
date.timezone = Asia/Shanghai

# crontab –e
*/5 * * * * root /usr/bin/php /var/www/html/cacti/poller.php >/dev/null 2&>1
# /etc/init.d/crond restart



2.6、验证安装
在浏览器里面打开
http://10.0.0.201/cacti

(1)然后 #点“Next”- #选择“New Install”,点击“Next” 确保所有的路径都是显示“FOUND”,没有“NOT FOUND”的点击Finish 完成安装。

(2)要求输入用户密码登陆,输入默认用户和密码为:admin 密码:admin
第一次登陆要求修改密码:请输入新的密码修改

(3)登陆成功后。到此界面
 

三、Cacti 客户端安装
3.1、安装snmp
# yum -y install net-snmp

3.2、配置snmp
#vim /etc/snmp/snmpd.conf
#将下边这行中的default 
com2sec notConfigUser  default       public
#改为:127.0.0.1
com2sec notConfigUser  10.0.0.201       public  修改成cacti服务器的IP地址
#将下边这行中的systemview
access  notConfigGroup ""      any       noauth    exact  systemview none none
#改为:all
access  notConfigGroup ""      any       noauth    exact  all none none
#将下边这行的注释“#”去掉
view all    included  .1          80

3.3、重启snmp服务
# # /etc/init.d/snmpd  restart
四、Cacti 的使用
4.1、新建一个本地主机
(1)、选择Devices
 
(2)、选择ADD 添加
 
(3)、输入信息然后点击右下角Create
 
(4)、创建成功后如下图
 
(5)、为监控模板创建图形文件

(6)、勾选所有模板,点击Create
 
(7)、选择创建图形的颜色
 
(8)、创建成功
 
(9)、加入默认树图

(10)、选择ADD

(11)、选择HOST –〉Create创建
 
(12)选择树图查看
 
(13)查看日志轮询情况。就是执行计划任务的情况
 
4.2、轮询是否报错。这个将决定状态是否UP 
 
4.3、如果没有up。手动执行
/usr/bin/php /var/www/html/cacti/poller.php  执行一边轮询和数据生成.
生成的数据在:/var/www/html/cacti/rra 里面
每次执行轮询的记录在/var/www/html/cacti/log 日志里面