cacti的安装使用(RHEL5.3)
一、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____.gif

cacti工作流程:
cacti________.gif

二、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

四、安装设定cact i

(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
打开浏览器,在地址栏输入如下地址,当安装界面出现后,按照提示一步步安装即可。
http://youIP/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组件,这可以通过“添加/删除面板”中的“添加/删除组件”进行。

24866_090807180111.jpg

(2)为SNMP服务组件指定接收SNMP消息的地址为cacti服务器,同时为其commutity指定正确的名称。这里要跟net-snmp配置文件中的设定保持一致,默认为public,在实际使用中建议修改此项。

24866_090807180216.jpg

(3)在cacti的控制台中,按照“create device”的向导添加设备即可。


参考文献:
http://docs.cacti.net/manual:087
http://blog.sina.com.cn/5istone
http://blog.chinaunix.net/u/26011/showart_409137.html
原文来自: http://blog.chinaunix.net/u/24866/showart_2020939.html