cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。
snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(round robin archive),它能够存储的数据笔数在创建时就已经定义。关于rrdtool的知识请参阅rrdtool教学。
rrdtool是指round robin database 工具(环状数据库)。round robin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。我们使用rrdtool来处理rrd数据库。使用它向rrd数据库存储提取数据。
rrd适合存储时间序列的数据。就是说你必须能够在时间的几个点上度量某些值,并提供这些信息给rrdtool。如果你能够做到这一点,rrdtool就能够存储它们。这些数值必须是数字,但是不一定要是整数。
下面的许多例子是关于snmp的,snmp是简单网络管理协议的缩写。简单是指协议简单--并不表示管理或监视网络简单。读完本篇文档后,你应当能够对人们谈论的snmp有更多的理解。只要知道snmp可以用来查询设备中保持的计数器的值就可以了。我们要存放到rrd数据库中的正是这些计数器中的数值。
rrdtool源自mrtg(多路由器流量绘图器)。mrtg是有一个大学连接到互联网链路的使用率的小脚本开始的。mrtg后来被当作绘制其他数据源的工具使用,包括温度、速度、电压、输出量等等。
很可能你会从使用rrdtool来存储和处理通过snmp收集到的数据。这些数据很可能是某个网络或计算机接收或发送的字节数(比特数)。它也可以用来显示潮水的波浪、阳光射线、电力消耗、展会的参观人员、机场附近的噪音等级、你喜欢的度假区的温度、电冰箱的温度、以及任何你可以想象的东西。
你最需要一个度量数据,以及能够提供这些数据给rrdtool的感应器。rrdtool会让你创建数据库、存储数据、提取数据、创建用于在web浏览器中显示的png格式的图像。这些png图像来于你收集的数据,它可以是网络平均使用率、峰值等。
下面是cacti监控的一个关系拓扑图:
接下来我们开始搭建cacti监控环境:
首先安装snmp服务:
[root@vm ~]# yum install net-snmp.x86_64 net-snmp-utils.x86_64 -y
[root@vm ~]# /etc/init.d/snmpd start
对snmp进行配置:/etc/snmp/snmpd.conf
配置看这个网页:
configure snmp
(1) edit the file
/etc/snmp/snmpd.conf
using a text editor such as vi, enter:
# vi /etc/snmp/snmpd.conf
change/modify line(s) as follows:
find the following line:
com2sec notconfiguser default public
replace with (make sure you replace 192.168.0.0/24 with your network/subnet) the following lines:
com2sec local localhost public
com2sec mynetwork 192.168.0.0/24 public #这里改成你的ip所对应的网段
scroll down a bit and change :
find lines:
group notconfiggroup v1 notconfiguser
group notconfiggroup v2c notconfiguser
replace with:
group myrwgroup v1 local
group myrwgroup v2c local
group myrwgroup usm local
group myrogroup v1 mynetwork
group myrogroup v2c mynetwork
group myrogroup usm mynetwork
again scroll down a bit and locate the following line:
find line:
view systemview included system
replace with:
view all included .1 80
again scroll down a bit and change the following line:
find line:
access notconfiggroup "" any noauth exact systemview none none
replace with:
access myrogroup "" any noauth exact all none none
access myrwgroup "" any noauth exact all all none
scroll down a bit and change the following lines:
find lines:
syslocation unknown (edit /etc/snmp/snmpd.conf)
syscontact root (configure /etc/snmp/snmp.local.conf)
replace with (make sure you supply appropriate values):
syslocation linux (rh3_up2), home linux router.
syscontact yournamehere 注意这里我们在设置的时候一定要改成你的用户名
按照上面的配置完成后我们重新启动服务:
[root@vm ~]# /etc/init.d/snmpd restart
[root@vm ~]# snmpwalk -v 1 -c public localhost ip-mib::ipadentifindex
ip-mib::ipadentifindex.127.0.0.1 = integer: 1
ip-mib::ipadentifindex.
192.168.1.103 = integer: 2
看到我自己的ip信息证明我们配置正确.
安装配置apache,mysql,php:
[root@vm ~]# yum install httpd php mysql-server php-mysql php-snmp php-xml -y
[root@vm ~]# rpm -ivh php-snmp-5.3.3-22.el6.x86_64.rpm #这个安装包我们需要从网上下载
[root@vm ~]# /etc/init.d/mysqld start
[root@vm ~]# mysql_secure_installation #初始化数据库,并给root用户设置密码
[root@vm ~]# mysql -uroot -p
enter password: 输入密码登录数据库验证
安装rrdtool工具:
[root@vm ~]# yum install libxml* perl-extutils-embed -y #这两个包是后面编译安装所需要的
[root@vm ~]# tar zxf rrdtool-1.4.4.tar.gz
[root@vm ~]# cd rrdtool-1.4.4
[root@vm rrdtool-1.4.4]# ./configure
[root@vm rrdtool-1.4.4]# make && make install
[root@vm rrdtool-1.4.4]# ln -s /opt/rrdtool-1.4.4/bin/rrdtool /usr/local/bin/
安装并配置cacti
[root@vm ~]# tar zxf cacti-0.8.8b.tar.gz -c /var/www/html/cacti
[root@vm ~]# cd /var/www/html/cacti/
[root@vm cacti]# useradd cacti
[root@vm cacti]# mysqladmin -pwestos create cacti
[root@vm cacti]# mysql -pwestos cacti
[root@vm cacti]# mysql -pwestos
mysql> grant all on cacti.* to cacti@localhost identified by 'westos';
mysql> flush privileges;
[root@vm cacti]# cd include/
[root@vm include]# vim config.php
-
/* make sure these values refect your actual database/host/user/password */
-
$database_type = "mysql";
-
$database_default = "cacti";
-
$database_hostname = "localhost";
-
$database_username = "cacti"; #修改用户名
-
$database_password = "westos"; #修改密码
-
$database_port = "3306";
-
$database_ssl = false;
-
-
$url_path = "/cacti/";
-
$cacti_session_name = "cacti";
[root@vm include]# vim /etc/php.ini
date.timezone = asia/shanghai #修改时区,因为要做crontab
[root@vm include]#su - cacti
[root@vm ~]$ crontab -e
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1 #我们定义每5分钟采集一次数据
[root@vm include]# /etc/init.d/httpd start
在浏览器上输入:安装cacti,第一次登录用户名和密码都是admin,后面可以自己修改。
当我们点击graphs的时候出现一些字符乱码,是因为缺少,解决办法如下:
[root@vm ~]# yum install -y cjkuni-uming-fonts #安装完成后刷新页面显示正常
安装cacti-spine加速器,提高扫面速率:
[root@vm cacti]# yum install dos2unix autoconf automake libtool -y
[root@vm ~]# tar zxf cacti-spine-0.8.8b.tar.gz
[root@vm ~]# cd cacti-spine-0.8.8b
[root@vm cacti-spine-0.8.8b]# ./configure
[root@vm cacti-spine-0.8.8b]# make && make install
[root@vm cacti-spine-0.8.8b]# cd /usr/local/spine/etc
[root@vm etc]# cp spine.conf.dist spine.conf
[root@vm etc]# vim spine.conf #修改下面内容
db_host localhost
db_database cacti
db_user cacti
db_pass westos
db_port 3306
db_preg 1
[root@vm etc]# cp spine.conf /etc/
[cacti@vm ~]$ /usr/local/spine/bin/spine
spine: using spine config file [/etc/spine.conf]
spine: version 0.8.8b starting
spine: time: 0.0651 s, threads: 5, hosts: 2
cacti 0.8.8版本以后可以不用装plugin,直接进行一下模块的添加:
[root@vm ~]# tar zxf settings-v0.71-1.tgz -c /var/www/html/cacti/plugins
[root@vm ~]# tar zxf monitor-v1.3-1.tgz -c /var/www/html/cacti/plugins
[root@vm ~]# tar zxf thold-v0.5.0.tgz -c /var/www/html/cacti/plugins
然后登录到web界面去设置cacti,进入cacti之后,首先设置安装好的spine
console->setting->paths
save之后点击poller->点击下图中的cmd.php
选择spine最后save
console->plugin management 安装插件,下面我们展示几张监控的图片:
下面我们做一下如何添加其他主机的状态监控:
我们另外一台主机的ip:192.168.1.104 (selinux and iptables is disabled)
[root@vm1 ~]# yum install net-snmp.x86_64 net-snmp-utils.x86_64 -y
[root@vm ~]# scp /etc/snmp/snmpd.conf 192.168.1.104:/etc/snmp/ #从103主机上复制snmpd.conf这个配置文件到104主机,然后开启104主机的snmp服务
[root@vm1 ~]# /etc/init.d/snmpd start
[root@vm ~]# snmpwalk -v 1 -c public 192.168.1.104 ip-mib::ipadentifindex #在103上对104进行远程监控
ip-mib::ipadentifindex.127.0.0.1 = integer: 1
ip-mib::ipadentifindex.192.168.1.104 = integer: 2
然后我们在web端进行设置:
点击下图的console->create devices
点击add:
填写下面信息:
点击save,出现下面信息:
创建graph:
选择下面两个选项:
添加要监控的项:
出现下面信息一下信息表示成功:
创建->add填写好后,然后继续点击下面的add->save
选择要监控的主机,然后create:
到这里我们的监控主机添加成功,下面我们点击monitor就可以看到,点击192.168.1.104我们可以看到他的监控信息
我们还可以通过setting设置邮箱报警,等其他设置.