Cactirrdtool简介

一、概述
Linux
下用的最多的是MRTG的性能监视,MRTG配置比较简单,MRTG的确是非常好的东东,但我认为它毕竟已经是一套很旧的软件了,其作者在多年前就已经开发了RRDTool代替该软件,现在已经发展得很成熟。既然有更好的选择,为什么我们还要用MRTG呢?
简单的说,rrdtool就是一个强大的绘图的引擎,很多语言都可以调用rrdtool绘图。
整个系统的架构是这样的:
基于SNMP协议,被监控端是服务器,或一些网络设备,
网络管理工作站,采用Linux(Freebsd)操作系统,并且安装Net-SNMP工具,使用RRDTOOL采集数据,存储数据,并用Cacti调用rrdtool显示出来。
CACTI
采用PHP编写,基于B/S结构。
二、介绍
MRTG
的优点:简单、易上手,基本安装完了之后只要更改一下配置文件即可。
缺点:
1
、使用文本式的数据库,数据不能重复使用;
2
、只能按日、周、月、年来查看数据;
3
、只能画两个DS(一条线、一个块);
4
、每取一次数据即需要绘图一次,浪费系统资源;
5
、无管理功能;

rrdtool
的优点:
1
、使用rrd存储格式,数据能重复使用,比如我可以将一个rrd文件中的数据与另一个rrd文件中的数据相加。
2
、可以定义任意时间段画图,即你可以画出一张半年以来的数据的图,也可以画出一张半小时以来的图。
3
、能画任意个DS
4
CDEF让你能任意摆弄数据。

缺点:
1
rrdtool的作用只是存储数据和画图,它没有mrtg中集成的数据采集功能;
2
、在命令行的使用非常复杂,参数极多。
3
、无管理功能。

简单的说,rrdtool就是一个强大的绘图的引擎。

由于其非常复杂的命令,对用户非常不友好,我一度想自己用php写一套系统。幸运的是,半年前我找到了cactiwww.cacti.net)。对该工具我只有一个字形容:“great
cacti
其实是一套php程序,它运用snmpget采集数据,使用rrdtool绘图。它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。更难能可贵的是,它提供了强大的数据管理和用户管理功能,一张图是属于一个host的,每一个host又可以挂载到一个树状的结构上。用户的管理上,作为一个开源软件,它居然做到为指定一个用户能查看的host、甚至每一张图,还可以与LDAP结合进行用户的验证!我不由得佩服作者考虑的周到!Cacti还提供自己增加模板的功能,让你添加自己的snmp_queryscript!可以说,cactirrdtool的所有缺点 都补足了!
Cacti架构图:
数据实现层            apache          php    
--------------------------------------------------------------------------------------------------
数据存储层             mysql           rrdtool
--------------------------------------------------------------------------------------------------
数据采集层            net-snmp        script
 
Cacti工作原理图:
 

 
cacti 安装环境:
Centos 5.5 x64
内核版本:2.6.18-194.el5
Apache:httpd-2.2.3-65.el5.centos
PHP:php-5.1.6-39.el5_8
Mysql:mysql-5.0.95-1.el5_7.1
Net-snmp:5.3.2.2-17.el5_8.1
RRDtool:1.4.7-1.el5.rf
Cacti:0.8.7h
===================================================
先yum mysql  apache   php
yum -y install mysql mysql-server php-mysql httpd php
再yum需要用到的包
yum -y install php-pdo lm_sensors net-snmp net-snmp-perl net-snmp-devel net-snmp-utils  php-snmp perl-Net-Daemon perl-PlRPC perl-DBI perl-DBD-MySQL
 
设置 mysql Apache snmp 开机自动启动
[root@cacti-qmail soft]# chkconfig mysqld on
[root@cacti-qmail soft]# chkconfig httpd on
[root@cacti-qmail soft]# chkconfig snmpd on
[root@cacti-qmail soft]# service mysqld start
[root@cacti-qmail soft]# service httpd start
[root@cacti-qmail soft]# service snmpd start
 
PHP配置(默认已都激活)
激活PHP扩展
/etc/php.ini
Extension_dir=”usr/lib/php/modules”
 
激活mysql扩展
/etc/php.d/mysql.ini
Extension=mysql.so
Apache配置(默认已支持)
配置支持PHP:/etc/httpd/conf.d/php.conf
LoadModule php5_module modules/libphp5.so
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php
Mysql配置
为mysql数据库root账号设置密码
[root@cacti-qmail soft]# mysqladmin --user=root password admin
[root@cacti-qmail soft]# mysqladmin --user=root --password reload
Enter password: 输入刚设置密码,检验是否正确
Rrdtool安装
[root@cacti-qmail soft]# ls
lua-5.1.4-2.el5.rf.i386.rpm         
rrdtool-1.4.7-1.el5.rf.i386.rpm       
perl-rrdtool-1.4.7-1.el5.rf.i386.rpm 
rrdtool-devel-1.4.7-1.el5.rf.i386.rpm
 
[root@cacti-qmail soft]#rpm –ivh  lua-5.1.4-2.el5.rf.i386.rpm  perl-rrdtool-1.4.7-1.el5.rf.i386.rpm  rrdtool-1.4.7-1.el5.rf.i386.rpm  rrdtool-devel-1.4.7-1.el5.rf.i386.rpm
Cacti安装
[root@cacti-qmail soft]# tar -zxvf cacti-0.8.7h.tar.gz
[root@cacti-qmail soft]# mv cacti-0.8.7h /var/www/html/cacti
[root@cacti-qmail soft]# chown -R root.root /var/www/html/cacti/
修改cacti文件目录的拥有者
 
在mysql建立cacti数据库环境
[root@cacti-qmail soft]# mysql -u root -h 127.0.0.1 -p
Enter password:
mysql> create database cacti;
Query OK, 1 row affected (0.01 sec)
mysql> grant all on cacti.* to hitman@localhost identified by 'admin';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;     
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye
到cacti根目录下把cacti.sql中的数据导入到数据库cacti中
[root@cacti-qmail cacti]# mysql -uroot -p cacti<cacti.sql
配置mysql连接参数
[root@cacti-qmail cacti]# vi /var/www/html/cacti/include/config.php
 
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "hitman";
$database_password = "admin";
$database_port = "3306";
 
[root@cacti-qmail cacti]# vi /var/www/html/cacti/include/global.php
 
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "hitman";
$database_password = "admin";
$database_port = "3306";
 
cacti-plugins插件安装
[root@cacti-qmail soft]#tar -zxvf cacti-plugin-0.8.7h-PA-v3.0.tar.gz
[root@cacti-qmail soft]# cd cacti-plugin-arch/
[root@cacti-qmail cacti-plugin-arch]# ll
总计 124
-rw-r--r-- 1 root root 93070 11-22 13:50 cacti-plugin-0.8.7h-PA-v3.0.diff
drwxr-xr-x 5 root root 4096 11-22 13:03 files-0.8.7h
-rw-rw-rw- 1 root root 15237 2006-11-10 LICENSE
-rw-rw-rw- 1 root root 2037 2007-11-06 pa.sql
-rw-rw-rw- 1 root root 1230 11-22 13:50 Readme.txt
 
[root@cacti-qmail cacti-plugin-arch]# cp cacti-plugin-0.8.7h-PA-v3.0.diff /var/www/html/cacti/
[root@cacti-qmail cacti-plugin-arch]# cp pa.sql /var/www/html/cacti/
root@cacti-qmail cacti-plugin-arch]# cd /var/www/html/cacti/
[root@cacti-qmail cacti]# patch -p1 -N <cacti-plugin-0.8.7h-PA-v3.0.diff
[root@cacti-qmail cacti]# mysql -uroot -p cacti<pa.sql
[root@cacti-qmail cacti]# vi include/global.php
修改一下参数
$config['url_path'] = '/cacti/';
保存退出
建立任务调度
[root@cacti-qmail cacti]# crontab –e
输入以下内容,代表每5分钟来执行后面PHP解析内容,把显示信息重定向到空的路径
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1
[root@cacti-qmail cacti]# crontab -l
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1
 
也可手工跑一次:/usr/bin/php /var/www/html/cacti/poller.php
 
Cacti的web初始化
 
在浏览器输入http://192.168.10.1/cacti/登陆cacti
 

 

 

被监控主机snmp文件设置
Linux
 
被监控主机需要配置snmp.
 
 #vi /etc/snmp/snmpd.conf
1更改
 com2sec notConfigUser default public
改为
com2sec notConfigUser 127.0.0.1 public
2、更改
access notConfigGroup "" any noauth exact systemview none none
改为
access notConfigGroup "" any noauth exact all none none
 
#view all included .1 80
将前面的 # 注释 去掉。 保存退出
 
如果还是无法抓到snmp数据包
用ps aux  |grep snmp 查看是否启动,如没有看到进程
输入/usr/local/sbin/snmpd -c /etc/snmp/snmpd.conf 启动snmp进程
 
 测试snmp是否正常
 #snmpwalk -c public -v 2c localhost
 
 #snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
 
IP-MIB::ipAdEntIfIndex.61.xxx.xxx.xxx = INTEGER: 2 IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1 IP-MIB::ipAdEntIfIndex.172.xxx.xxx.xxx = INTEGER: 3
 
也可以用snmpd -f -Le 命令查看当前有没有出什么错
 
Windows
需要安装snmp服务
开启---运行—appwiz.cpl 把管理和监视工具打上勾,然后点详细信息进去,勾起我们需要用的组件
 

 
安装好后,
运行—services.msc,点snmp server设置一下选项