前段时间在PINER的BLOG上看到监控DB的图形画的很漂亮,询问后得知是使用CACTI画的,于是拿来学习。因为linux下的所有技术都很差,因此最后实现了一个运行在linux下,使用java来采集数据进行画图的咚咚。
网上有很多安装文档,这里记录的仅仅是安装过程中碰到的问题和cacti自定义绘图的基本原理和方法。
[@more@]CACTI安装使用总结
linux:REDHAT AS4U4X86
cacti:0.86j 此版本的cacti需要的相关软件版本:
1、RRDTool 1.0.49 或者 1.2.x 或者更高
2、MySQL 3.23 或者更高, 推荐使用4.0.20d 或者更高版本(可以使用更多的功能)
3、PHP 4.1 或者更高, 推荐使用4.3.6或者更高版本(可以使用更多功能)
4、需要安装的软件包括:httpd、php、php-mysql、php-snmp、mysql、mysql-server、net-snmp
官方安装文档:
Extract the distribution tarball.
shell> tar xzvf cacti-version.tar.gz
Create the MySQL database:
shell> mysqladmin --user=root create cacti
Import the default cacti database:
shell> mysql cacti < cacti.sql
Optional: Create a MySQL username and password for Cacti.
shell> mysql --user=root mysql
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'somepassword';
mysql> flush privileges;
Edit include/config.php and specify the MySQL user, password and database for your Cacti configuration.
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cacti";
Set the appropriate permissions on cacti's directories for graph/log generation. You should execute these commands from inside cacti's directory to change the permissions.
shell> chown -R cactiuser rra/ log/
(Enter a valid username for cactiuser, this user will also be used in the next step for data gathering.)
Add a line to your /etc/crontab file similar to:
*/5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1
Replace cactiuser with the valid user specified in the previous step.
Replace /var/www/html/cacti/ with your full Cacti path.
Point your web browser to:
Log in the with a username/password of admin. You will be required to change this password immediately. Make sure to fill in all of the path variables carefully and correctly on the following screen.
安装依赖关系需要的包(可以在REDHAT的发布版中找到):
1、安装HTTP服务器:apr-0.9.4-24.5.i386.rpm|apr-util-0.9.4-21.i386.rpm|httpd-suexec-2.0.52-25.ent.i386.rpm|httpd-2.0.52-25.ent.i386.rpm四个包(在DISK2中)
2、安装PHP服务器:php-4.3.9-3.15.i386.rpm|php-pear-4.3.9-3.15.i386.rpm|php-mysql-4.3.9-3.15.i386.rpm|php-snmp-4.3.9-3.15.i386.rpm
3、安装PERL:perl-DBD-MySQL-2.9004-3.1.i386.rpm|perl-DBI-1.40-8.i386.rpm
4、安装MYSQL:mysql-4.1.20-1.RHEL4.1.i386.rpm|mysql-server-4.1.20-1.RHEL4.1.i386.rpm
5、安装NET-SNMP:net-snmp-5.1.2-11.EL4.7.i386.rpm|net-snmp-utils-5.1.2-11.EL4.7.i386.rpm|lm_sensors-2.8.7-2.40.3.i386.rpm
6、安装RRDTOOL:freetype-2.1.10.tar.tar(tar -jxvf)|libart_lgpl-2.3.17.tar.gz|libpng-1.2.10.tar.gz|rrdtool-1.2.19.tar.gz,把编译通不过提示路径不存在的地方的/usr/include改为/usr/local/include(直接修改configure文件),对应的每个LIB都有两个地方要改,然后把/usr/local/rrdtool-1.2.19/bin目录下的可执行文件全部拷贝到/usr/bin和/usr/local/bin目录下,同时把/usr/local/lib/libpng12.so.0拷贝到/usr/lib/libpng12.so.0,覆盖原文件。
7、安装cacti:参照上面的文档
8、更换CACTID需要包mysql-devel-4.1.20-1.RHEL4.1.i386.rpm|net-snmp-devel-5.1.2-11.EL4.7.i386.rpm|beecrypt-devel-3.1.0-6.i386.rpm|elfutils-devel-0.97.1-3.i386.rpm|elfutils-libelf-devel-0.97.1-3.i386.rpm(需要注意的是有时候在命令行测试执行没问题,但是添加到CRONTAB执行却有问题,有可能是bug。目前的解决方法是,自己定义一个可执行脚本,然后把这个脚本添加到crontab中去。范例:
. /home/cactiuser/.bash_profile
/usr/bin/php /var/www/html/cacti/poller.php
/home/cactiuser/j2sdk1.4.2_13/bin/java OracleUpdateCactiTable)
在bash_profile中记录了java执行的classpath:
export CLASSPATH=/var/www/html/cacti/scripts/:/var/www/html/cacti/scripts/classes12.jar
9、更换完后需要配置/ETC/CACTID.CONF,并且好像要把这个配置文件拷贝到/VAR/SNMP/CACTID.CONF,并且修改/VAR/SNMP和CACTID.CONF的文件权限为最大。
10、修改POLLER配置中选择CACTID来执行POLLER.PHP,然后在PATH中设置CACTID的路径,并把DATA INPUT METHOD中的关于路径的都更改为绝对路径。
11、检查RRA下的文件的生成以及采集后的文件时间是否更新,另外RRA的权限和RRA下文件的属主、权限是否正确。
11、最后执行PHP POLLER.PHP来测试(可以打开最大的DEBUG日志,也可以直接在最后绘图那里进行TRUN ON DEBUG进行调试)
使用:
1、cacti的流程是从Data Input Methods开始,创建一个信息采集的方法先,里面定义了采集的方法和采集需要的脚本(注意:如果使用CACTID最好使用可执行文件的全路径),可以定义一个输入和输出。输入可以为你执行这个脚本带入参数,比如连接数据库的参数,这样只要设置这个参数就可以连上不同的数据库了。输出是信息采集的输入结果,以列名+冒号+采集结果的形式返回。
2、然后是数据模版,里面需要选择Data Input Methods,如果数据输入方法中有参数的,这里可以设置参数,也可以选择忽略这个设置,然后到最后配置图形的时候再输入特定的参数。
3、创建图形模版,里面需要定义图形的ITEM,可以使用AREA方式先画一个框,然后把其他值以STACK的方式往前面的AREA上面累加。也可以使用GPRINT方式在最下面的备注那里输出些信息(一般是输入最后采集时候的值)。这里可以定义CDEF function,这个函数可以把你显示的ITEM进行转换,比如把8k转换成8192字节等,这个函数可以自定义的(可以参考Graph Management中的CDEFs中的定义来进行自定义)。
4、创建DATASOURCE,然后创建GRAPH。
最后可以把他们放到一个TREE上