Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具,它是通过 snmpget来获取数据,使用 RRDtool绘画图形,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。界面友好。
cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。
cacti依赖于PHP+MYSQL环境,前面的几篇文章已经详细讲解了如何在Linux部署LNMP环境,这篇文章我们就是用前面几章所搭建的环境,所以这里不再讲解如何搭建环境,如果您不会可以先看看前几篇文章.
下面就介绍如何来部署cacti.
首先介绍本文所使用的环境: server:
系统为CentOS 5.5 32bit
ip:192.168.3.120
cacti:cacti-0.8.7i.tar.gz
cacti使用SNMP采集数据,首先安装snmp数据采集工具:
yum -y install lm_sensors net-snmp net-snmp-utils
同时cacti又依赖于rrdtool生成图表所以首先安装rrdtool:
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz
yum -y install cairo-devel glib2-devel pango-devel intltool # 安装rrdtool依赖
./configure --prefix=/usr/local
make && make install
下面就来下载cacti安装:
wget http://www.cacti.net/downloads/cacti-0.8.7i.tar.gz
tar -zxvf cacti-0.8.7i.tar.gz
cp -r cacti-0.8.7i /usr/local/nginx/html/cacti # 复制到html目录
useradd cactiuser -M -s /sbin/nologin # 创建cacti用户
chown -R cactiuser.cactiuser /usr/local/nginx/html/cacti/rra/ # 改变属主和属组
chown -R cactiuser.cactiuser /usr/local/nginx/html/cacti/log/
然后进入到数据库创建cacti数据和创建一个用户:
create database cactidb default character set utf8; #创建数据库
grant all on cactidb.* to cactiuser@localhost identified by '123456'; # 创建一个mysql用户
use cactidb # 使用刚才创建的数据库
source /usr/local/nginx/html/cacti/cacti.sql # 导入cacti数据
接下来我们编辑cacti配置文件/usr/local/nginx/html/cacti/include/config.php
cd /usr/local/nginx/html/cacti/
vi include/config.php
编辑下面内容:
$database_type = "mysql"; # 数据库类型
$database_default = "cactidb"; # 数据库名字
$database_hostname = "localhost"; # 数据库主机
$database_username = "cactiuser"; # 数据库用户
$database_password = "123456"; # 数据库密码
$database_port = "3306"; # 数据库端口
$database_ssl = false;
然后修改nginx配置文件像下面:
location / {
root html;
index index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
include fastcgi.conf;
}
重启nginx
pkill -9 nginx
/usr/local/nginx/sbin/nginx
然后设置php时区,
cd /usr/local/nginx/html/cacti/
vi include/global_constants.php
在第二行添加
date_default_timezone_set("Asia/Chongqing");
接下来配置snmp,编辑/etc/snmp/snmpd.conf
vi /etc/snmp/snmpd.conf
然后找到41行将public改成一个较为复杂的名字:
com2sec notConfigUser default public
然后找到62行
access notConfigGroup "" any noauth exact systemview none none
将systemview改成all:
access notConfigGroup "" any noauth exact all none none
然后去掉85行的注释:
view all included .1 80
保存配置文件后启动snmp
service snmpd start
然后在浏览器里输入:http://192.168.3.120/cacti/ 然后根据提示一步步安装,安装好后使用admin密码admin登录.如果点击graphs不能显示图像的话执行:
php /usr/local/nginx/html/cacti/poller.php # nginx下不会自动生成*.rrd文件必须手动执行这条命令才会生成,Debug没报错,测试权限也没问题,不知道怎么回事,望知道的能告知小弟
为了方便把这句加入到cron,执行:
yum -y install vixie-cron #安装
service crond start
crontab -e
添加如下内容:
*/5 * * * * /usr/bin/php /usr/local/nginx/html/cacti/poller.php
好了这时候我们就可以打开查看生成的图像了. 注意如果报如下错误: Call to undefined function session_unregister() 将session_unregister('username') 改成 $_SESSION['username']='';