一、cacti的简介
网络管理(如主机负载、网络流量等的监控)是系统管理岗工作人员日常工作的一个重要组成部分,许多厂商为此提供了各自的解决方案。早期开源网管软件中比较著名的其中之一的MRTG,是一款使用perl开发的,通过SNMP协议实现管理工作站与设备代理进程间的通讯,以完成对设备的管理和运行状态的监视。MRTG安装配置简单、图形界面直观,因为广受当时网络管理人员的喜爱,也为笔者早期的网络管理工作立下了汗马功劳。
但MRTG也有许多固有的缺点,如:使用文本式的数据库,数据不能重复使用;只能按日、周、月、年来查看数据;每图只能画两个DS(一条线、一个块);每取一次数据即需要绘图一次,浪费系统资源;同时,它也没有提供管理功能。
有鉴于此,MRTG的作者后来另外又开发了一个工具,即rrdtool。rrdtool是一个性能优良的数据记录器,同时也是一个功能强大的绘图引擎。它使用rrd的数据存储格式,使用得数据可以重复使用;在绘图方面,它可以定义任意时间段进行绘图,能绘出多个DS。但它也有自己的缺点:虽然提供了强大的数据存储及绘图功能,但rrdtool却没有提供类似于MRTG中集成的数据采集功能;同时,它提供了过多的参数,以至于在命令行界面使用起来极为不便;此外,rrdtool也没有提供管理功能。于是cacti应运而生。
简单来说,Cacti就是rrdtool的一个forefront,它内置了快速的获数据取工具、优秀的绘图模板以及许多设计精良的数据获取脚本,从而可以通过结合rrdtool强大的数据抓取、数据存储和绘图功能,轻松实现主机负载、网络流量等信息的走势图的绘制。目前其最新的软件版本是0.8.7e。
cacti是用php语言实现的一个软件,它的运行需要网站服务器(如apache)及PHP环境的支持。同时,cacti还需要Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。
rrdtool的对主机负载、网络流量等信息的统计需要通过SNMP协议实现。经过SNMP抓取到的数据存储于由rrdtool生成的rrd文件中,这些文件通常位于cacti的rra目录中。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的归档文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。
cacti各组件的功能:
cacti工作流程:
二、cacti依赖的软件包
1、关于依赖关系的说明
RRDTool 1.0.49 or 1.2.x 或以上的版本;
MySQL 4.1.x or 5.x 或以上的版本;
PHP 4.3.6 及以上版本; 推荐建议使用5.x系列版本,这为cacti的高级功能所需要;
Apache(或Windows平台的ISS);
在本示例中,各软件包尽量以系统光盘提供的rpm包为主,而rrdtool则使用源码包。其需要安装的rpm包如下:
php-5.1.6-23.el5
php-mysql-5.1.6-23.el5
php-gd-5.1.6-23.el5
php-snmp-5.1.6-23.el5
php-pdo-5.1.6-23.el5
mysql-5.0.45-7.el5
mysql-devel-5.0.45-7.el5
mysql-server-5.0.45-7.el5
httpd-2.2.3-22.el5
net-snmp-libs-5.3.2.2-5.el5
net-snmp-5.3.2.2-5.el5
net-snmp-utils-5.3.2.2-5.el5
libart_lgpl-2.3.17-4
libart_lgpl-devel-2.3.17-4
关于rrdtool的安装本文中使用rrdtool-1.2.30.tar.gz,同时,它需要用到pango-1.7.5以上版本的支持,因此,还需要事先更新系统中的pango软件包。
2、上述软件包的安装
(1)rpm格式的软件包
rpm系列软件包的安装建议采用yum方式进行安装,这可在使用如下方式命令实现:
# yum install package_name,[p2,…]
如果没有合适的yum源,则挂载系统安装光盘,使用rpm的安装命令安装即可,安装可以使用如下方式实现:
# rpm -ivh package
(2)安装源码包
(i)pango-1.17.5
# tar jxvf pango-1.17.5.tar.bz2
# cd pango-1.17.5
# ./configure
# make
# make install
(ii)rrdtool-1.2.30
# tar zxvf rrdtool-1.2.30.tar.gz
# cd rrdtool-1.2.30
# ./configure --prefix=/usr/local/rrdtool
# make
# make install
为rrdtool的二进制文件创建链接至/usr/local/bin,cacti默认到这里查找所需的rrdtool
# ln -s /usr/local/rrdtool/bin/* /usr/local/bin
将rrdtool的库文件添加至系统库文件搜索路径:
# vi /etc/ld.so.conf
添加:
/usr/local/rrdtool/lib
#ldconfig -v
三、所需系统环境的配置
(1)配置php工作环境
首先需要确保php能够加载所需的系统模块,cacti所需要用到的php模块有mysql、SNMP 、XML、Session、Sockets、LDAP(仅在使用LDAP认证时需要)、GD(某些插件可能用到)。/etc/php.ini文件中的如下选项可以保证php能够加载到所需的模块:
extension_dir = /usr/lib/php/modules
可以使用如下命令查看本机php已经打开的支持模块:
# php -m
如果在以后的使用中需要导入cacti模板,这还需要确保在/etc/php.ini中打开了文件上传的功能:
file_uploads = On
(2)配置httpd
默认情况下,打开httpd对php支持所需要的配置文件在/etc/httpd/conf.d/目录中,所以,请确保您的httpd.conf文件中开启了以下选项:
Include conf.d/*.conf
启动httpd服务,并把它加入到自动启动队列(如果是第一次配置httpd):
# service httpd start
# chkconfig --level 2345 httpd on
(3)配置MySQL
首先启动mysql,并将其加入到自动启动服务队列(如果是第一次配置MySQL):
# service mysqld start
# chkconfig --level 2345 mysqld on
接着为root用户添加密码,为了简单起见,这里使用“123456”,生产环境中应该使用强密码。
# mysqladmin --user=root password '123456'
接着登录mysql,创建cacti的数据库,并为其指定cactiuser用户和密码(123456)。数据库名字可根据需要指定,这里指定为cactidb:
# mysql -uroot -p
mysql> create database cactidb;
mysql> GRANT all privileges ON cactidb.* TO cactiuser@localhost IDENTIFIED BY '123456';
mysql> flush privileges;
(4)配置SNMP
在net-snmp的主配置文件/etc/snmp/snmpd.conf中,默认的community为public,建议将public修改为您需的密码项。
接着,启动snmp进程,并将其加入到自动启动服务队列(只在第一次配置时需要):
# service snmpd start
# chkconfig --level 2345 snmpd on
四、安装设定cacti
(1)解压cacti的压缩包,并将其移至网站目录中:
# tar zxvf cacti-0.8.7e.tar.gz
# mv cacti-0.8.7e /var/www/html/cacti
说明:如果您的网站目录在别处,这里需要做相应的改变;同时,您也可以使用httpd的虚拟目录,而不必要一定要将cacti目录移至网站目录;
(2)使用cacti提供的schema生成cacti所需要的表等对象:
# cd /var/www/html/cacti
# mysql -uroot -p cactidb < cacti.sql
(3)编辑cacti的主配置文件,为其指定对应的数据库参数:
# vi /var/www/html/cacti/include/config.php
将下列各参数的值修改为您前面所设定的:
$database_type = "mysql";
$database_default = "cactidb";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "123456";
$database_port = "3306";
(4)添加运行cacti所需要的用户帐号,并将运行时需要生成rrd文件和日志文件的目录权限赋予给它:
# useradd cactiuser
# passwd cactiuser
# chown -R cactiuser rra/ log/
(5)为cacti用户添加周期性任务,以实现所需数据的获取:
# vi /etc/crontab
添加如下行:
*/5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1
(6)进入安装界面,开始安装设定cacti
打开浏览器,在地址栏输入如下地址,当安装界面出现后,按照提示一步步安装即可。
刚刚安装成功时,cacti还没有获取到所需要的数据,因此,可能不会有图表显示。待过上五分钟以上的一段时间,就会有关于本机负载情况的统计图表出现了。如果要监控其它主机,请首先确保其它主机开启中了SNMP服务,接着在cacti控制台“device”中添加新设备,并为其创建“New graph”即可。后文将演示如何监控Windows主机的工作情况。
五、安装cacti-spine (非必需)
cacti-spine是一个用C语言开发的、用来替换默认的cmd.php的、能够快速获取数据的引擎。
(1)安装
cacti-spine要用到mysql的头文件,因此事先需要安装mysql-devel包,如果是非rpm安装,则需要在configure时使用--with-mysql选项指定mysql的安装位置。
# tar zxvf cacti-spine-0.8.7e.tar.gz
# cd cacti-spine-0.8.7e
# aclocal
# libtoolize --force
# autoheader
# autoconf
# automake
# ./configure
# make
# make install
(2)设定
编辑其主配置文件/usr/local/spine/etc/spine.conf,确保其中的相关参数的值为您需要的正确设置。
DB_Host 127.0.0.1 <--此处不能使用localhost
DB_Database cactidb
DB_User cactiuser
DB_Pass 123456
DB_Port 3306
(3)cacti设定
在cacti的控制台界面,选择settings进入设定页面。
在“Paths”页面中,为“Spine Poller File Path”指定spine的详细路径,这里为“/usr/local/spine/bin/spine”。
在“Poller”页面中,为“Poller Type”选项选择“spine”选项。
六、使用cacti监控Windows Server 2003
(1)首先要监控的Windows 系统上安装SNMP组件,这可以通过“添加/删除面板”中的“添加/删除组件”进行。
(2)为SNMP服务组件指定接收SNMP消息的地址为cacti服务器,同时为其commutity指定正确的名称。这里要跟net-snmp配置文件中的设定保持一致,默认为public,在实际使用中建议修改此项。
(3)在cacti的控制台中,按照“create device”的向导添加设备即可。
参考文献:
http://blog.sina.com.cn/5istone
http://blog.chinaunix.net/u/26011/showart_409137.html