一、概述
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写一套系统。幸运的是,半年前我找到了cacti(www.cacti.net)。对该工具我只有一个字形容:“great!”。
cacti 其实是一套php程序,它运用snmpget采集数据,使用rrdtool绘图。它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。更难能可贵的是,它提供了强大的数据管理和用户管理功能,一张图是属于一个host的,每一个host又可以挂载到一个树状的结构上。用户的管理上,作为一个开源软件,它居然做到为指定一个用户能查看的“树”、host、甚至每一张图,还可以与LDAP结合进行用户的验证!我不由得佩服作者考虑的周到!Cacti还提供自己增加模板的功能,让你添加自己的snmp_query和script!可以说,cacti将rrdtool的所有“缺点” 都补足了!
<b>cacti 安装环境:</b>
操作系统:Redhat Linux AS5.4
安装方式:全新安装并以文本方式与自定义安装软件
内核版本:2.6.18-164.el5
Apache:httpd-2.2.3-31.el5
PHP:php-5.1.6-23.2.el5_3
Mysql:mysql-5.0.77-3.el5
Net-snmp:net-snmp-5.3.2.2-7.el5
RRDtool:rrdtool-1.2.23-1.el5.rf
Cacti:cacti-0.8.7e.tar.gz
<b>Cacti架构图:</b>
数据实现层 <b>apache php </b>
--------------------------------------------------------------------------------------------------
数据存储层 <b> mysql rrdtool</b>
数据采集层 <b> net-snmp script</b>
<b>Cacti工作原理图:</b>
<a target="_blank" href="http://blog.51cto.com/attachment/201003/161049175.jpg"></a>
<b>全新linux系统安装</b>
<b>以文本方式并自定义安装软件</b>
……………………省略…………………….
<b>去掉所有打勾</b>
然后把红色标记移到 <b>development tools</b>
<a target="_blank" href="http://blog.51cto.com/attachment/201003/161115224.jpg"></a>
接下来按F2,跳出详细菜单
选择OK就行了,
<a target="_blank" href="http://blog.51cto.com/attachment/201003/161128502.jpg"></a>
同样步骤把红色标记移到MySQL Database,按F2.除了默认打勾还要把以下三个一起打勾
<b>Mod_auth_mysql mysql-devel php-mysql</b>
<a target="_blank" href="http://blog.51cto.com/attachment/201003/161141508.jpg"></a>
接下来同样步骤选择<b>web server</b>,去掉默认<b>squid tux webalizer</b>的安装
<a target="_blank" href="http://blog.51cto.com/attachment/201003/161201207.jpg"></a>
接下来选择system tools ,然后按回车,再选中它按F2,去掉所有默认安装
只留Net-snmp-libs 与net-snmp-utils连个打上勾
<a target="_blank" href="http://blog.51cto.com/attachment/201003/161220340.jpg"></a>
安装完后重启
选择firewall configuration,禁用selinux
<a target="_blank" href="http://blog.51cto.com/attachment/201003/161311637.jpg"></a>
<b>开放http-80</b><b>端口</b>
<a target="_blank" href="http://blog.51cto.com/attachment/201003/161325131.jpg"></a>
启动结束进入系统
=====================================================================
先yum mysql apache php
yum -y install mysql mysql-server php-mysql httpd php
再yum需要用到的包
yum -y install php-pdo lm_sensors net-snmp php-snmp net-snmp-utils perl-Net-Daemon perl-PlRPC perl-DBI perl-DBD-MySQL
=====================================================================
<b>设置 mysql Apache snmp 开机自动启动</b>
[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
<b>PHP配置(默认已都激活)</b>
激活PHP扩展
/etc/php.ini
Extension_dir=”usr/lib/php/modules”
激活mysql扩展
/etc/php.d/mysql.ini
Extension=mysql.so
<b>Apache配置(默认已支持)</b>
配置支持PHP:/etc/httpd/conf.d/php.conf
LoadModule php5_module modules/libphp5.so
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php
<b>Mysql配置</b>
为mysql数据库root账号设置密码
[root@cacti-qmail soft]#<b> mysqladmin --user=root password viong0613</b>
[root@cacti-qmail soft]# <b>mysqladmin --user=root --password reload</b>
Enter password: 输入刚设置密码,检验是否正确
<b>Rrdtool安装</b>
[root@cacti-qmail soft]# <b>ll</b>
总计 1100
-rw-r--r-- 1 root root 49815 02-22 22:18 perl-rrdtool-1.2.23-1.el5.rf.i386.rpm
-rw-r--r-- 1 root root 955176 02-22 21:53 rrdtool-1.2.23-1.el5.rf.i386.rpm
-rw-r--r-- 1 root root 5542 02-22 22:01 rrdtool-devel-1.2.23-1.el5.rf.i386.rpm
-rw-r--r-- 1 root root 65566 2004-05-19 rzsz-3.48.tar.gz
drwxrwxr-x 2 10127 wheel 4096 02-24 01:46 src
[root@cacti-qmail soft]#<b>rpm –ivh perl-rrdtool-1.2.23-1.el5.rf.i386.rpm</b> rrdtool-1.2.23-1.el5.rf.i386.rpm rrdtool-devel-1.2.23-1.el5.rf.i386.rpm
warning: perl-rrdtool-1.2.23-1.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing... ########################################### [100%]
1:rrdtool ########################################### [ 33%]
2:perl-rrdtool ########################################### [ 67%]
3:rrdtool-devel ########################################### [100%]
<b>Cacti安装</b>
[root@cacti-qmail soft]# wget http://www.cacti.net/downloads/cacti-0.8.7e.tar.gz
[root@cacti-qmail soft]# tar -zxvf cacti-0.8.7e.tar.gz
[root@cacti-qmail soft]# mv cacti-0.8.7e /var/www/html/cacti
[root@cacti-qmail soft]# chown -R root.root /var/www/html/cacti/
修改cacti文件目录的拥有者
<b>在mysql建立cacti数据库环境</b>
[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 viong@localhost identified by 'viong0623';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
mysql> quit;
Bye
到cacti根目录下把cacti.sql中的数据导入到数据库cacti中
[root@cacti-qmail cacti]# mysql -uroot -pviong0613 cacti<cacti.sql
<b>配置mysql连接参数</b>
[root@cacti-qmail cacti]# vi /var/www/html/cacti/include/config.php
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "viong";
$database_password = "viong0623";
$database_port = "3306";
[root@cacti-qmail cacti]# vi /var/www/html/cacti/include/global.php
/* Default database settings*/
<b>cacti-plugins插件安装</b>
[root@cacti-qmail soft]#unzip cacti-plugin-0.8.7e-PA-v2.6.zip
[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.7e-PA-v2.6.diff
drwxr-xr-x 5 root root 4096 11-22 13:03 files-0.8.7e
-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.7e-PA-v2.6.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.7e-PA-v2.6.diff
[root@cacti-qmail cacti]# mysql -uroot -pviong0613 cacti<pa.sql
[root@cacti-qmail cacti]# vi include/global.php
修改一下参数
$config['url_path'] = '/cacti/';
保存退出
<b>建立任务调度</b>
[root@cacti-qmail cacti]#<b> crontab –e</b>
输入以下内容,代表每5分钟来执行后面PHP解析内容,把显示信息重定向到空的路径
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1
[root@cacti-qmail cacti]# <b>crontab -l</b>
也可手工跑一次:/usr/bin/php /var/www/html/cacti/poller.php
<b>Cacti的web初始化</b>
<b>被监控主机snmp文件设置</b>
<b>Linux</b>
被监控主机需要配置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 命令查看当前有没有出什么错
<b>Windows</b>
需要安装snmp服务
开启---运行—appwiz.cpl 把管理和监视工具打上勾,然后点详细信息进去,勾起我们需要用的组件
<a target="_blank" href="http://blog.51cto.com/attachment/201003/162950493.jpg"></a>
安装好后,
运行—services.msc,点snmp server设置一下选项
小插曲:很感谢方老师制作了一个cacti视频教程,自己用cacti也几年时间了。为了加固自己的知识。把这些整理出来当备用,并附上方老师发给我的一系列的视频教程.下载看附件
开源网管软件Cacti系列视频讲座
(一)Cacti架构与应用示例
(二)Cacti安装与部署(上)
(二)Cacti安装与部署(下)
(三)Cacti设备管理与模板应用
(四)Cacti的多种数据采集方式
(五)Cacti插件架构与插件安装
(六)Cacti高效轮询工具spine
<a href="http://down.51cto.com/data/2355380" target="_blank">附件:http://down.51cto.com/data/2355380</a>
本文转自viong 51CTO博客,原文链接:http://blog.51cto.com/viong/286701,如需转载请自行联系原作者