Cacti是一款优秀的开源监控软件,使用php实现,它的主要特点是使用snmp服务获取数据,然后用rrdtool存储和更新数据,当用户查看数据的时候,rrdtool生成图表呈现给用户。mysql数据库用于存储变量并进行调用。mysql数据库并不存储snmp捕获到的数据,snmp捕获到的数据,存在于rrdtool生成的rrd文件中,这些文件位于cacti目录下的rra目录中。
本文主要介绍cacti中文版的安装,配置,cacti插件的安装,配置。英文版的安装跟中文版大同小异,但是中文版会麻烦点,所以就以中文版为例。
系统:Centos5.6 x386
软件:cacti-0.8.7e
本文档提供pdf版本下载,祥见文章尾部。
一、 准备软件的安装
由于cacti使用php来实现,通过WEB来管理,使用snmp来捕获数据,使用rrdtool来生成图表,使用mysql来存储变量,因此需要先安装这些软件,直接使用yum进行安装即可,共需安装以下rpm包:
httpd/mysql-server/php/php-mysql/rrdtool/gd/net-snmp/php-snmp/net-snmp-utils/net-snmp-devel/mysql-devel/openssl-devel
各个rpm包的作用为:
httpd WEB服务器apache
mysql-server 数据库mysql
php cacti使用php来实现
php-mysql php支持mysql
rrdtool 用来生成cacti图像
gd rrdtool绘制图像需要的图形库
php-snmp php支持snmp
net-snmp-utils 一些snmp的扩展命令,如:snmpwalk、snmpget等,cacti需要
net-snmp-devel/mysql-devel/openssl-devel cactid/spine需要
安装rpm包:
yum -y install httpd gettext mysql mysql-server mysql-devel php php-mysql php-p
yum -y install php-mysql mysql perl mysql-server perl-DBI perl-DBD-MySQL httpd gcc glibc glibc-common gd gd-devel php
yum -y install net-snmp php-snmp net-snmp-utils net-snmp-devel mysql-devel openssl-devel
由于centos的标准组件中是不带rrdtool的,因此我们需要添加一个dag的yum源,以安装rrdtool。
修改/etc/yum.repos.d/CentOS-Base.repo,
#vi /etc/yum.repos.d/CentOS-Base.repo
在其末尾追加
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
gpgkey=http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
enabled=1
安装相关依赖
[root@localhost]#yum install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel ncurses-devel zlib-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel libXpm-devel gettext-devel pam-devel
[root@localhost]# yum install -y rrdtool perl-rrdtool rrdtool-devel
这可安装完成!
设置开机自启动
#chkconfig httpd on
#chkconfig mysqld on
#chkconfig snmpd on
二、 MySQL数据设置
由于cacti依靠mysql来存储必要的变量,我们有必要对MySQL做些设置。
启动并初始化mysql数据库
#service mysqld start
为root用户设置密码(以linuxpad为例),并更改登录权限,默认密码为空
#mysql –u root –p 回车后输入密码(空)
mysql>use mysql;
mysql>update user set password=password(‘linuxpad’) where user=’root’;
mysql>grant all privileges on *.* to root@localhost identified by ‘linuxpad’ with grant option;
mysql>flush privileges;
添加cacti库和cacti用户,并为其设置权限
mysql>create database cacti default character set utf8; //数据库字符集设置utf8,否则乱码
mysql>grant all privileges on cacti.* to cacti@localhost identified by ‘linuxpad’ with grant option;
mysql>flush privileges;
三、 安装Cacti
下载cacti-0.8.7e-cn-utf8.tar.gz,地址为http://blogimg.chinaunix.net/blog/upfile2/090815172648.gz (这个链接是tar.gz格式的,请下载后更改文件格式),假设下载目录为/opt/soft,下面相同
#cd /opt/soft
#tar zxvf 090815172648.tar.gz
#mv cacti-0.8.7e-cn-utf8 /var/www/cacti
修改配置文件
#vi /var/www/cacti/include/config.php
修改内容如下
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "linuxpad";
关于cacti添加用户,网上常见的做法是添加一个cacti的用户,并更改rra和log目录属主。经过本人测试这里并不需要添加cacti用户并更改rra和log的属主,直接使用root即可。原因是因为官方的安装文档上使用的是FreeBSD,在计划任务那步使用的是:
*/5 * * * * cacti php /var/www/cacti/poller.php &>/dev/null,使用用户cacti来执行任务。
但是centos并不是识别这个cacti参数,因此也就无需使用cacti来执行任务,我们直接使用root来执行任务就OK了,于是不用更改目录权限,crontab内容为
*/5 * * * * php /var/www/cacti/poller.php >/dev/null &2>1
还有另外一种的解决方案,就是添加一个cacti用户,更改rra和log目录属主为cacti,然后在cacti用户环境下设置crontab,内容为
*/5 * * * * php /var/www/cacti/poller.php >/dev/null &2>1
这样就能实现crontab计划是由cacti用户来执行的了。
创建并编辑apache的cacti配置文件
#vi /etc/httpd/conf.d/cacti.conf
内容如下:
Alias /cacti /var/www/cacti
< Directory /var/www/cacti>
DirectoryIndex index.php
AllowOverride all
order deny,allow
allow from all
php_flag magic_quotes_gpc on
php_flag track_vars on
< /Directory>
导入数据库
#mysql –u root –p cacti < /var/www/cacti/cacti.sql
启动服务,然后访问http://ip/cacti开始安装cacti
#service mysqld start
#service httpd start
#service snmpd start
直接下一步,选择”全新安装”,来到下面的一个界面,如图1
请确认所有路径都已找到,并选择SNMP应用程序版本为5.x,RRDTool版本为1.3.x。
完成之后来到登录页面,默认用户名admin,密码admin,登录之后会提示你强制更改密码。
设置计划任务
#crontab –e
追加以下内容
*/5 * * * * php /var/www/cacti/poller.php >/dev/null &2>1
添加中文字体支持,否则Cacti图像内会没有任何内容。CentOS下直接yum安装中文支持
#yum install fonts-chinese
打开Cacti,控制面板->配置->设置->路径:
将RRDTool默认字体路径设为/usr/share/fonts/chinese/TrueType/ukai.ttf
配置无误,会显示文件已找到。