Cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。
Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。
snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。关于RRDTool的知识请参阅RRDTool教学。
前期准备工作:
Cacti官网:http://www.cacti.net/download_cacti.php
找到Linux/Unix in tar.gz format连接图标,
下载地址: http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz
下载地址: http://www.cacti.net/downloads/spine/cacti-spine-0.8.8b.tar.gz
确保前期安装需要准备的软件:
net-snmp-devel
mysql
mysql-devel
openssl-devel
准备所需要的软件包
Apache http://www.apache.org/
Mysql http://www.mysql.com/
Php http://www.php.net
Rrdtool http://oss.oetiker.ch/rrdtool/
Net-snmp http://www.net-snmp.org/
Cacti http://www.cacti.net/
其中apache、mysql、php通过yum安装
下面简述安装过程:
一、安装RRDTool和SNMP
1 安装RRDTool
[root@localhost /]#yum -y install rrdtool[root@localhost /]#service rrdcached start 失败报错:rrdcached: 未被识别的服务
[root@localhost /]#chkconfig rrdcached on 失败
#启动rrdtool服务并且加入启动列表
#下载地址:wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.8.tar.gz
也chkconfig失败
2 安装snmp支持工具
可以yum安装,也可以源码安装,比如
#下载地址:wget http://sourceforge.net/projects/net-snmp/files/net-snmp/5.6.2.1/net-snmp-5.6.2.1.tar.gz/download
[root@localhost /]#yum -y install net-snmp
[root@localhost /]#yum -y install net-snmp-utils
[root@localhost /]# service snmpd start
[root@localhost /]# chkconfig snmpd on
#启动snmpd服务并且加入启动列表
[root@localhost /]# yum -y install httpd mysql-server php php-mysql mysql-devel
[root@localhost /]# chkconfig httpd on
[root@localhost /]# chkconfig mysqld on
[root@localhost /]# /etc/init.d/httpd start
[root@localhost /]# /etc/init.d/mysqld start
启动完httpd之后,直接在浏览器键入http://localhost 或 http://本机IP ,应该会看到Apache的测试页面
二、然后下载cacti
到这里去下载cacti: wget http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz
下载cacti-spine:wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8b.tar.gz
三、开始安装cacti-spine
1,建立cacti用户
[root@localhost /]# useradd -m cacti
[root@localhost /]# passwd cacti
密码:cacti
2,首先安装几个编译cacti-spine需要的devel包:
[root@localhost /]#yum -y install net-snmp-devel mysql-devel openssl-devel
3,安装gcc和libtool
[root@localhost /]#yum -y install gcc libtool
4,下载cactid并解压:
[root@localhost /]# tar -xf cacti-spine-0.8.8b.tar.gz编译安装:
[root@localhost /]# cd cacti-spine-0.8.8b
[root@localhost cacti-spine-0.8.8b]# aclocal[root@localhost cacti-spine-0.8.8b]# libtoolize --force
[root@localhost cacti-spine-0.8.8b]# autoheader[root@localhost cacti-spine-0.8.8b]# autoconf
[root@localhost cacti-spine-0.8.8b]# automake[root@localhost cacti-spine-0.8.8b]# ./configure
[root@localhost cacti-spine-0.8.8b]# make
[root@localhost cacti-spine-0.8.8b]# make install
5,安装好以后,我们需要再配置一下:
[root@localhost cacti-spine-0.8.8b]# cp /usr/local/spine/etc/spine.conf.dist /etc/spine.conf
[root@localhost cacti-spine-0.8.8b]# chown -R cacti.cacti /etc/spine.conf
[root@localhost cacti-spine-0.8.8b]# su - cacti
[cacti@localhost ~]$ vim /etc/spine.conf
DB_Host localhostDB_Database cacti
DB_User cactiuser
DB_Pass cactiuser
DB_Port 3306
DB_PreG 0
6,启动一下看看
[cacti@localhost ~]$ /usr/local/spine/bin/spine
报错 :
SPINE: Using spine config file [/etc/spine.conf]
04/26/2013 10:53:14 AM - SPINE: Poller[0] FATAL: Connection Failed, Error:'1045', Message:'Access denied for user 'cactiuser'@'localhost' (using password: YES)' (Spine init)
原因:应为cactiuser没有权限访问cacti数据库,我修改了下cactiuser用户的密码就OK了
解决办法:创建cacti数据库
[root@localhost cacti-spine-0.8.8b]# mysqladmin create cacti
#创建一个cacti数据库
[root@localhost /]# mysql -e "GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser'"
#给cactiuser权限
再次启动
[root@localhost cacti-spine-0.8.8b]# /usr/local/spine/bin/spine
报错:
SPINE: Using spine config file [/etc/spine.conf]
05/16/2014 04:16:40 PM - SPINE: Poller[0] FATAL: MySQL Error:\'1146\', Message:\'Table \'cacti.settings\' doesn\'t exist\
原因:需要导入默认的cacti.sql,解压缩cacti-0.8.8b.tar.gz,获得cacti.sql
解决办法:
[root@localhost cacti-spine-0.8.8b]# tar -xvf cacti-0.8.8b.tar.gz
[root@localhost cacti-spine-0.8.8b]# cd cacti-0.8.8b
[root@localhost cacti-spine-0.8.8b]#mysql -u cacti_user -pcacti05261743 -h127.0.0.1 cacti </home/cacti/cacti-0.8.8b/cacti.sql
[root@localhost cacti-spine-0.8.8b]# /usr/local/spine/bin/spine
SPINE: Using spine config file [/etc/spine.conf]
SPINE: Version 0.8.8b starting
SPINE: Time: 0.1386 s, Threads: 5, Hosts: 2
启动成功了。
四、我们开始安装正主cacti
1 配置
[root@localhost cacti-spine-0.8.8b]#tar -xf cacti-0.8.8b.tar.gz
[root@localhost cacti-spine-0.8.8b]#mv cacti-0.8.8b /var/www/html/cacti
[root@localhost cacti-spine-0.8.8b]#cd /var/www/html/
#解压并放到apache文档目录(/var/www/html)
#编辑CentOS cacti配置文件,连接MySQL服务的用户名,密码,端口等。
[root@localhost html]#vim /var/www/html/cacti/include/config.php
$database_type = \"mysql\";
$database_default = \"cacti\";
$database_hostname = \"localhost\";
$database_username = \"cactiuser\";
$database_password = \"cactiuser\";
$database_port = \"3306\";
$database_ssl = false;
2添加计划任务(使cacti每5分钟获得一次数据)
[root@localhost html]#crontab -e
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1 //让系统每5分钟收集
在前面的第三步已经配置好了,创建数据库cacti以及用户。
[root@localhost html]# vim test.php
$link=mysql_connect("192.168.1.110","root","123qwe.");
if(!$link)
echo "FAILD!连接错误,用户名密码不对";
else
echo "OK!可以连接";
?>
注意:需要重启httpd服务
在浏览器键入http://本机IP/php/test.php ,应该会看到如下页面
#测试php与mysql的连通!!!
5 web安装cacti
在浏览器键入http://本机IP/cacti ,如下界面
点击next,继续下一步,其他的都死默认选项,默认登录用户名密码是admin:
五:Cacti监控mysql报表流量图:
[root@localhost ~]#wget https://mysql-cacti-templates.googlecode.com/files/better-cacti-templates-1.1.8.tar.gz
[root@localhost ~]#tar –xvf better-cacti-templates-1.1.8.tar.gz
[root@localhost ~]#cd better-cacti-templates-1.1.8
[root@localhost better-cacti-templates-1.1.8]#cp/root/better-cacti-templates-1.1.8/scripts/ss_get_mysql_stats.php/var/www/html/cacti/scripts/
#将better-cacti-templates-1.1.8\scripts下的 ss_get_mysql_stats.php 这个脚本 这个脚本需要放在cacti的服务端。
#比如cacti部署在/var/www/html目录下,那么就cp到/var/www/html/cacti/scripts/下
修改ss_get_mysql_stats.php 文件 第30行
$mysql_user = 'cacti_user';
$mysql_pass = 'cacti_user05161610';
$cache_dir = "/xok.la/cacti/cache/";
[root@localhost better-cacti-templates-1.1.8]#chown -R apache.apache/var/www/html/cacti/scripts
[root@localhost better-cacti-templates-1.1.8]#chmod -R 755 /var/www/html/cacti/scripts
使用 http 访问 cacti主机 导入
[root@localhost better-cacti-templates-1.1.8]#/opt/mysql-cacti-templates-1.1.2/cacti_host_template_x_db_server_ht_0.8.6i.xml
然后创建mysql用户:
grant process,super on *.* to 'cacti_user'@'%'identified by 'cacti_user05161610';