Linux下cacti的安装RedHat9,RedHat AS4 |
---|
2007-12-22 21:47:28
|
Cacti安装手册
第一步、 Cacti的架构
第三步、 Cacti简介
1. cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用 rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。 2. Mysql配合PHP程序存储一些变量数据并对变量数据的调用如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。 3. snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。另外,当生成图片时对采集的数据的处理方式:有gauge、counter、derive、absolute。参考以下例子: 类型:如果输入数据依序为 98 100 98: GAUGE(个�e值,像CPU loading):产生图形时画 98 100 98 COUNTER (累计值,像流量资料):产生图形时画 2 -2 DERIVE (累计值,像流量资料),小于0画0:产生图形时画 2 0 ABSOLUTE 如同 COUNTER,但 COUNTER 可能 overflow(数值过大),所以会取绝对值 补充说明,COUNTER/DERIVE/AVSOLVTE 虽是取差值,但会再除以两次间隔间的秒数,如上 COUNTER 例,两次间隔间为 300 秒,那画出来的就是 2/300,-2/300 的值 数据采集中可以看到定义的是什么数据类型:Counter和gauge C:\usr\bin>snmpget -v 2c -c public 192.168.224.1 .1.3.6.1.2.1.6.5.0 TCP-MIB::tcpActiveOpens.0 = Counter32: 1927 C:\usr\bin>snmpget -v 2c -c public 192.168.224.1 .1.3.6.1.2.1.6.9.0 TCP-MIB::tcpCurrEstab.0 = Gauge32: 0 4. rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。 [root@localhost rra]# ls 220_181_11_156_mem_* 220_181_11_156_mem_buffers_30.rrd 220_181_11_156_mem_cache_31.rrd 220_181_11_156_mem_free_32.rrd (可以看出一个图形对应好几个rrd文件---即对应几个数据源---但也可以一个rrd文件包含几个数据源) 具体RRDTool的知识见以下网页: 使用Cacti监测系统与网络性能: [url]http://hi.baidu.com/myfreezone/blog/item/7f00fd247d2411338744f9c3.html[/url] RRDTool应用示例: [url]http://hi.baidu.com/myfreezone/blog/item/4720f0f280538e13b07ec5c1.html[/url] 对RRDTool的总结 [url]http://hi.baidu.com/myfreezone/blog/item/18973aad8ad66b094b36d6f8.html[/url] 第四步、 Cacti 的安装 1.安装环境:redhat9.0 2.安装版本的特别说明 对cacti的poller type改为了cactid,他是用c语言写程序,目的是为了配合cacti工作,解决poller.php更新、获取数据慢的缺点;具有多进程多线程的特性 安装rrdtool版本是1.2.11,此版本的特点是生成的图像比1.0.50版本更美观 3.安装以下软件包: httpd-2.0.54.tar.gz mysql-4.0.18.tar.gz php-4.4.0.tar.gz rrdtool-1.2.11.tar.gz net-snmp-5.2.1.1.tar.gz cacti-0.8.6f.tar.gz cacti-cactid-0.8.6f-1.tar.gz 都放到/tools下 A .安装mysql # groupadd mysql # useradd -g mysql mysql # cd /tools # tar zxvf mysql-4.0.18.tar.gz # cd mysql-4.0.18 #./configure --prefix=/usr/local/mysql --with-charset=gbk --with-extra-charsets=all --with-mysqld-user=mysql # make # make install # /usr/local/mysql/bin/mysql_install_db # echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf # su - # ldconfig # cd /home/admin/mysql-4.0.18/support-files/ # cp mysql.server /etc/rc.d/init.d/mysql # chkconfig --add mysql # chown -R mysql.mysql /usr/local/mysql/var # chmod 700 /usr/local/mysql/var # /etc/rc.d/init.d/mysql start或者/usr/local/mysql/bin/mysqld_safe & # cp /usr/local/mysql/bin/mysql /usr/local/bin 修改mysql的最大连接数 # vi mysqld_safe 找到: nohup $ledir/mysqld --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR \- --skip-locking >> $err_log 2>&1 在--skip-locking与 >>之间插入-O max_connections=1000 重起mysql B .安装apache # cd /tools/http #./configurs --prefix=/usr/local/http/ # make # make install C .安装php # cd php #./configure --with-mysql --with-apxs2=/usr/local/http/bin/apxs --enable-track-vars --with-zlib-dir=/usr/include --with-gd # make # make install # cp php.ini-dist /usr/local/lib/php.ini D .安装rrdtool [url]http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.2.11.tar.gz[/url] 由于rrdtool1.2.11需要一些库文件支持,故需先安装配置支持的环境,然后编译安装。直接运行以下sh脚步就可以完成安装: 注意:将cgilib-0.5.tar.gz、zlib-1.2.2.tar.gz、libpng-1.2.8-config.tar.gz、 freetype-2.1.9.tar.gz、libart_lgpl-2.3.17.tar.gz、rrdtool-1.2.11.tar.gz放到 /root/rrdtool-1.2.11 将脚本保存为/root/rrdtool-1.2.11/rrdtoolinstall,并给执行权限chmod 766 /root/rrdtool-1.2.11/rrdtoolinstall。 #!/bin/sh BUILD_DIR=/root/rrdtool-1.2.11 INSTALL_DIR=/usr/local/rrdtool cd $BUILD_DIR tar zxf cgilib-0.5.tar.gz cd cgilib-0.5 make CC=gcc CFLAGS="-O3 -fPIC -I." mkdir -p $BUILD_DIR/lb/include cp *.h $BUILD_DIR/lb/include mkdir -p $BUILD_DIR/lb/lib cp libcgi* $BUILD_DIR/lb/lib cd $BUILD_DIR tar zxf zlib-1.2.2.tar.gz cd zlib-1.2.2 env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb make make install cd $BUILD_DIR tar zxvf libpng-1.2.8-config.tar.gz cd libpng-1.2.8-config env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \ ./configure --disable-shared --prefix=$BUILD_DIR/lb make make install cd $BUILD_DIR tar zxvf freetype-2.1.9.tar.gz cd freetype-2.1.9 env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \ ./configure --disable-shared --prefix=$BUILD_DIR/lb make make install cd $BUILD_DIR tar zxvf libart_lgpl-2.3.17.tar.gz cd libart_lgpl-2.3.17 env CFLAGS="-O3 -fPIC" ./configure --disable-shared --prefix=$BUILD_DIR/lb make make install IR=-I$BUILD_DIR/lb/include CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS=-O3 export CPPFLAGS LDFLAGS CFLAGS cd $BUILD_DIR tar zxf rrdtool-1.2.11.tar.gz cd rrdtool-1.2.11 ./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl && make && make install E .安装net-snmp Unix系统安装的都是net-snmp或ucd-snmp(其实两个都是同一组人写的)。如果没有安装snmp,可以到net-snmp.sourceforge.org上下载源码编译安装。 我这里说的安装SNMP服务并不是要求安装SNMPD,其实是Cacti需要用到net-snmp中的两个命令�D�Dsnmpwalk和snmpget进行数据的采集。我们可以直接在系统中运行snmpwalk和snmpget看是否有该命令,如果有则不用安装了。 [url]http://prdownloads.sourceforge.net/net-snmp/net-snmp-5.2.1.1.tar.gz[/url] # tar zxf net-snmp-5.2.1.1.tar.gz # cd net-snmp-5.2.1.1 #./configure --prefix=/usr/local/net-snmp --enable-developer # make # make install F .安装cacti [url]http://www.cacti.net/downloads/cacti-0.8.6f.tar.gz[/url] # cp cacti-0.8.6f.tar.gz /usr/local/http/htdocs/ # cd /usr/local/http/htdocs/ # tar zxvf cacti-0.8.6f.tar.gz # mv cacti-0.8.6f cacti G .安装cacti-cactid [url]http://www.cacti.net/downloads/cactid/cacti-cactid-0.8.6f-1.tar.gz[/url] CACTID 的安装需要以下支持: net-snmp-devel (需要编译安装net-snmp时添加--enable-developer选项) mysql mysql-devel (mysql源文件编译安装后默认支持) openssl-devel (redhat9.0默认安装) 因此需要检查是否具备安装的环境。 # tar zxf cacti-cactid-0.8.6f-1.tar.gz # cd cactid0.8.6-f1 # ./configure ;make 这是此目录下你将看到cactid 和cactid.conf # mkdir /usr/local/cactid # cp cactid cactid.conf /usr/local/cactid/ H .安装完成后配置cacti 1.配置apache # vi /usr/local/http/conf/httpd.conf 加入 AddType application/x-tar .tgz AddType application/x-httpd-php .php AddType image/x-icon .ico DirectoryIndex index.php index.html index.html.var # /usr/local/http/bin/apachectl stop # /usr/local/http/bin/apachectl start 编辑测试php文件 test.php内容如下: phpinfo(); ?> 2.配置mysql 建立cacti需用的数据库 # /usr/local/mysql/bin/mysql mysql> create database cactidb; Query OK, 1 row affected (0.00 sec) mysql> grant all on cactidb.* to root; Query OK, 0 rows affected (0.01 sec) mysql> grant all on cactidb.* to root@localhost; Query OK, 0 rows affected (0.01 sec) mysql> grant all on cactidb.* to cactiuser; Query OK, 0 rows affected (0.00 sec) mysql> grant all on cactidb.* to cactiuser@localhost; Query OK, 0 rows affected (0.01 sec) mysql> set password for cactiuser@localhost=password('cactipw'); Query OK, 0 rows affected (0.00 sec) mysql> exit # cd /usr/local/http/htdocs/cacti # /usr/local/mysql/bin/mysql �Cu root cactidb 3.配置cacti-cactid # vi /usr/local/cactid/cactid.conf DB_Host localhost DB_Database cactidb DB_User cactiuser DB_Pass cactipw 4.配置cacti # useradd cactiuser # chown �CR cactiuser rra/ # vi /usr/local/http/htdocs/cacti/include/config.php $database_type = "mysql"; $database_default = "cactidb"; $database_hostname = "localhost"; $database_username = "cactiuser"; $database_password = "cactipw"; 为cactiuser创建crontab */5 * * * * /usr/local/bin/php /usr/local/http/htdocs/cacti/poller.php > /dev/null 2>&1 5.完成配置 [url]http://IP/cacti[/url]开始配置 默认用户名密码admin/admin 更改默认密码 设定 snmpwalk Binary Path /usr/local/net-snmp/bin/snmpwalk snmpget Binary Path /usr/local/net-snmp/bin/snmpget RRDTool Binary Path /usr/local/rrdtool/bin/rrdtool PHP Binary Path /usr/local/bin/php Cacti Log File Path /usr/local/httpd/htdocs/cacti/log/cacti.log Cactid Poller File Path /usr/local/cactid/cactid 另外,进入cacti后需确认更改一下位置:(如下图) Console>Settings>General |