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设置邮箱报警,等其他设置.