环境:
RHEL 5.2
自己搭建一个yum源,可以避免RPM包安装时的关联性
//怎么搭建,请看前面的文章
http://hi.baidu.com/bubu600/blog/item/abe2c5b3bb587cadd8335a5e.html
1.基本安装
cacti是运作在apache+php+mysql+net-snmp工具集+rrdtool这样的一个工作环境之下,所以我们先要做一个基本的工作的环境
#yum -y install mysql mysql-server php-mysql httpd php
上面完成一个php,http,mysql的环境,接下来安装要用到的包
#yum -y install php-pdo lm_sensors net-snmp php-snmp net-snmp-utils perl-Net-Daemon perl-PlRPC perl-DBI rrdtool perl-rrdtool perl-DBD-MySQL
注意:这里有几个包在RHEL5.2的包里面没有
我分别列出来:
perl-Net-Daemon 
perl-PlRPC 
rrdtool
perl-rrdtool 
这几个包可以到
http://rpmfind.net/ 这个里面搜素,选择对应系统版本的包,我用的RHEL5.2x86-64的,所以我选择的是DAG packages for Red Hat Linux el5 x86_64 这个对应的包
还有一个需要注意的是,在安装rrdtool时 还需要下载一个包rrdtool-devel,而且rrdtool perl-rrdtool rrdtool-devel要一起安装,如rpm -ivh rrdtool perl-rrdtool rrdtool-devel
安装完,启动相关的程式,和设置开机启动
#chkconfig mysqld on
#chkconfig httpd on
#server mysqld start
2.数据库设置
准备数据库,和设置权限,安装cacti。
#mysql -uroot -p
mysql>create database cacti default character set utf8;
mysql>GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, LOCK TABLES, CREATE TEMPORARY TABLES, DROP, REFERENCES ON cacti.* TO cacti@localhost IDENTIFIED BY ‘passwd’;
mysql>flush privileges;
mysql> \q
3.下载安装
下载中文的cacti,解压到/var/www/cacti.后进入cacti的目录.导入cacti的数据结构
下载地址:  cacti-0.8.7b-cn-utf8.tar.gz  
# cd /var/www/cacti
# mysql -u cacti -p cacti < cacti.sql
修改配置文件
# vim /var/www/cacti/include/config.php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "passwd";
$database_port = "3306";
添加cacti用户
#useradd cacti
#chown -R cacti /var/www/cacti/rra /var/www/cacti/log
       #chgrp -R cacti /var/www/cacti
       #chmod 664 /var/www/cacti/poller.php
这个上面可能添加不行试试:
#chown -hR cacti /var/www/cacti/rra /var/www/cacti/log
4. 配置httpd服务器的配置文件
# vim /etc/httpd/conf.d/cacti.conf
Alias /cacti /var/www/cacti
<Directory /var/www/cacti>
DirectoryIndex index.php
AllowOverride all
order deny,allow
deny from all
allow from all
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc on
php_flag track_vars on
</Directory>
重起httpd的服务,让上面的修改生效
# /etc/init.d/httpd restart

5.测试安装是否正常
打开下面的url.
http://server.ip.or.name/cacti
打开网站,点next.选择new install,使用一路回车法.最后完成
最后的用户名为: admin 密码为: admin
6.收尾
让系统每5分钟收集,需要
crontab -e -u cacti
*/5 * * * * php /var/www/cacti/poller.php &>/dev/null
第一运行 poller.php一定是cacti账户 否则后面的数据将无法写入
7。字体在图形中显示不正常的解决方法
下载并安装cjkuni-fonts中文字体,字体名ukai.ttf,下载地址
http://ftp.tw.debian.org/debian/pool/main/t/ttf-arphic-ukai/ttf-arphic-ukai_0.1.20060928.orig.tar.gz
#tar zxvf ttf-arphic-ukai_0.1.20060928.orig.tar.gz
# cd ttf-arphic-ukai-0.1.20060928/
# cp ukai.ttf /usr/share/fonts/ukai.ttf
安装完成后注意在"设置"中更改下面两个必改项.
常规->RRDTool应用程序版本 改为1.2.x,默认为1.0.x.不改可能图像不能正常显示出来.
路径->RRDTool默认字体路径 改为上面安装的ukai.ttf的文件路径,如/usr/share/fonts/ukai.ttf
8,被监控主机snmp文件设置
被监控主机需要配置snmp.(谢谢网友园园的提醒)
  1. vi /etc/snmp/snmpd.conf
更改
com2sec notConfigUser default public
改为
com2sec notConfigUser 127.0.0.1 public
2、更改
access notConfigGroup "" any noauth exact systemview none none
改为
access notConfigGroup "" any noauth exact all none none
3、#view all included .1 80
将前面的 # 注释 去掉。
保存退出
9.测试snmp是否正常
#snmpwalk -c public -v 2c localhost
#snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
IP-MIB::ipAdEntIfIndex.61.xxx.xxx.xxx = INTEGER: 2
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.172.xxx.xxx.xxx = INTEGER: 3
也可以用snmpd -f -Le 命令查看当前有没有出什么错
FQA:
1如果磁盘监控不到
请使用Cacti 中自带的模板 ucd/net – Get Monitored Partitions ,然后在被监控的机器的snmpd.conf(/etc/snmp/snmpd.conf)中加入
disk / (比如我们监视根分区)
然后可以用snmpwalk -v 1 -c public 192.168.0.52 dsktable这个命令来检查
2.如果图出不来
1.检查你的主机是不是活的,一定要能测试通过,状态是活的才行,可以用命令来检查是否有输出
2.另外cacti默认选择的rrdtool的版本是RRDTool 1.1.x 的!—-点击Console->System Utilities->Technical Support->RRDTool Version选择RRDTool 1.2.x,不然有可能出不了图.
3.网卡流量达到100M以上图像有问题?
这与snmp的版本有关,snmp1的数据是32位而snmp2c以上是64位(AS4默认是不支持64位的)。
1.首先要确定你使用的是snmp2c或以上,是否支持64位MIB库.如下如果返回的有几行含有“Counter64:”的话.那么表明是支持的。
#snmpwalk -c public -v 2c localhost IF-MIB::ifHCInOctets
IF-MIB::ifHCInOctets.1 = Counter64: 3174458
IF-MIB::ifHCInOctets.2 = Counter64: 1585772167
IF-MIB::ifHCInOctets.3 = Counter64: 35696997927
IF-MIB::ifHCInOctets.4 = Counter64: 0
2.然后点击Cacti的页面:“Console ->; Create New Graphs ->;Data Query”。你在下面看到“Select a graph type:”的下拉菜单(默认是“In/Out bits”),要取64bits的数据所以将其改为“In/Out bits(64-bit Counters)”,然后选择你要监测的网卡即可。另外,该监测点的“Maximum Value”必须设置为100M以上。
3.设备管理中,选择的主机中的 SNMP版本,一定要是2.
4.RedHat AS4 的(net-snmp5.2以下不支持) snmp不支持64位计数器的解决方法 (本方法由嘻嘻哈哈提供 http://www.haw-haw.org/node/654)
可以下载一个src.rpm再在/usr/src/redhat/SPECS/net-snmp.spec文件的configure下加上一句–enable-mfd-rewrites \
然后再
#cd /usr/src/redhat/
#rpmbuild -bb SPECS/net-snmp.spec
生成一堆的x86_64.rpm在/usr/src/redhat/RPMS/x86_64下,如果是32位的就在i386下.在安装就行了.
注 :64位计数器是在net-snmp 5.2上新加入的IF-MIB ,它可以转换更多的 MIB 对象 (e.g. ifXTable with 64-bit ifHC* counters). 所有象RHEL4,Centosd4上,如果使用默认的5.2的src包,就算加入了enable-mfd-rewrites其实也是不行的.所以要下载5.2的src包来安装.
下载地址
这个包中默认就加入了enable-mfd-rewrites.下载后,直接用上面方法中的rpmbuild -bb SPECS/net-snmp.spec编译后安装就行.
这个有时还得不到数据,要注意你的snmpd.conf是否配置对了.其中的如下,read选项要是全部.
access notConfigGroup ""      any       noauth    exact  all  none none
如果不想编译,可以下载在这下载redhat4的rpm直接安装就行了