用apache搭建简单得多但是考虑到要做下载服务器apahce抗压能力不足改用nginx
nginx版本用nginx-0.7.65,0.8版不适合redhat5,因为需要eventfd(),这个函数要在2.6.22以后才有
网上一堆php加nginx的看得头都大,互相转来转去没意思,只上监控根本不需要编译php。
php直接用redhat自带的php,否则你等着编译一大堆软件。
装完nginx和php后改nginx的配置
conf.d/virtual.conf
server
{
listen 80;
server_name cacti.mynet.com;
location / {
root /home/www/cacti/;
charset utf8;
tcp_nodelay on;
fastcgi_pass 127.0.0.1:7090;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;(这个是必须的不过你下面include默认配置这条可以不要了因为下面包括了)
include fastcgi.conf;
}
}
fastcgi_param 指的是php脚本(也就是cacit的php文件的位置)
php-cgi用下面命令启动
php-cgi -q -c /etc/php.ini -b 127.0.0.1:7090
启动nginx就能访问php了
下面配置cacit
cacit用野狗之家翻译的0.87e,n年没更新了,cacti都到87g了吧,不过新版本的对某些插件支持不好,不会web啊xml什么的的搞这些插件麻烦,还是用e算了。
下载地址
cacit原来装好过以后就没动过了现在都块忘记光了....先装rrdtool的一堆包吧
rpm -ivh rrdtool-1.4.3-2.el5.rf.i386.rpm
warning: rrdtool-1.4.3-2.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
error: Failed dependencies:
libdbi.so.0 is needed by rrdtool-1.4.3-2.el5.rf.i386
lua is needed by rrdtool-1.4.3-2.el5.rf.i386
perl(RRDp) is needed by rrdtool-1.4.3-2.el5.rf.i386
perl(RRDs) is needed by rrdtool-1.4.3-2.el5.rf.i386
ruby is needed by rrdtool-1.4.3-2.el5.rf.i386
下面的包系统自带
ruby-1.8.5-5.el5_3.7.i386.rpm
ruby-libs-1.8.5-5.el5_3.7.i386.rpm
libdbi-0.8.1-2.1.i386.rpm
libdbi-devel-0.8.1-2.1.i386.rpm
自行下载
perl-rrdtool-1.4.3-2.el5.rf.i386.rpm
liblua-5.1.4-3.el5.pp.i386.rpm
lua-5.1.4-3.el5.pp.i386.rpm
rrdtool-1.4.3-2.el5.rf.i386.rpm
rrdtool-devel-1.4.3-2.el5.rf.i386.rpm
下载cacti-spine-0.8.7e.tar并编译(编译这个需要net-snmp-devel-5.3.2.2-7.el5支持,装这个要装一圈的东西,所以编译好一次以后保留二进制文件以后就不用再编译了)
cd cacti-spine-0.8.7e
aclocal
libtoolize --force
autoheader
autoconf
automake
./configure
(redhat 6开始configure报错看下面文章
./configure
configure: error: cannot run /bin/sh config/config.sub
List the file on config folder and found it’s symlink to invalid file;
ls -al config/*
简单来说就是config中有2个软连接位置改变了要手动处理下)
make
make install
之后就可以删除这个文件夹了,编辑/user/local/spine/etc/spine.conf配置好数据库
解压cacti087e.gz
进到目录中导入数据库mysql cacti < cacti.sql(之前自己建好cacit的数据库)
编辑include/config.php
然后按照说明配置
rrd字体路径(这个在font-chinese包里,装系统的时候选择了中文会直接装上)
/usr/share/fonts/chinese/TrueType/ukai.ttf
spine路径
/usr/local/spine/bin/spine
几个常用的cacti模板
snmpdiskio-0.9.6(里面带了2个模板,还要复制里面一个xml到cacti目录)
cacti_graph_template_ucdnet_-_full_cpu_usage,cpu占用(比系统自带的全面点)
cacti_graph_template_ping_advanced_ping_v1_3 (这个几乎是必备的)
advanced_ping测试,redhat5.4可以直接非root用icmp ping了,下面测试通过你就可以用相应的协议和端口(0.87e自带ss_fping.php不需要下载)
php /home/www/cacti/scripts/ss_fping.php 127.0.0.1 20 UDP 161
php /home/www/cacti/scripts/ss_fping.php 192.168.1.104 20 ICMP
orz 自己来打自己脸了,系统自带的php没有php-fpm,用nginx的话,每点一次就php就fock一个进程然后关掉。php-cli开在那里才点几次cacit里的东西就几百个连接然后挂掉- -,不过好在有人帮编译好了php5.2的带fpm版本,直接rpm -Uvh就可以了(装完还担心连接数据库有问题,还好没这个问题,不过注意,如果你之前用其他用户启动过php-cgi,那么需要改下/var/lib/php下面session文件夹和里面文件的权限)
下载地址
先到找下面两个rpm包下载
t1lib-5.1.2-1.el5.rf.i386.rpm
libevent-1.4.14b-1.el5.pp.i386.rpm
第一个包系统不带
第二个包系统自带libevent-1.1,不过装这个包不会冲突文件也不会替换所以直接ivh就好
然后下载下面rpm包然后rpm -Uvh安装
php-5.2.16-1.el5.i386.rpm
php-cli-5.2.16-1.el5.i386.rpm
php-common-5.2.16-1.el5.i386.rpm
php-devel-5.2.16-1.el5.i386.rpm
php-fpm-5.2.16-1.el5.i386.rpm
php-gd-5.2.16-1.el5.i386.rpm
php-mysql-5.2.16-1.el5.i386.rpm
php-pdo-5.2.16-1.el5.i386.rpm
php-xml-5.2.16-1.el5.i386.rpm
一些故障以及解决方法
poller无法\轮询可以用下面方法(比如你时间错误回退了时间造成距离上次轮询时间为负数)
即直接加--force参数运行poller
/usr/bin/php /home/www/cacti/poller.php --force
php报错Warning: Invalid argument supplied for foreach() ,一般报错在snmp.php这个文件
因为foreach里面的变量类型不对,强制转换下就能去掉这个警告
原来是foreach($banned_snmp_strings as $item)
改成foreach((array)$banned_snmp_strings as $item)
今天迁徙到64位半天打不开php,最后发现是php-mysql没装orz
装好后终于登陆发现rrd报错,版本不对orz,解决方法
简单来讲就是用老的rrdtool dump xxx.rrd > xxx.xml把rrd转成xml
然后再用新版本的rrdtool dump restore xxx.xml xxx.rrd转回rrd文件
自定义监控不能不能获得数据但是snmpwalk正常
这种情况重启被监控端的snmpd服务即可
长时间运行还会出现统计图断断续续,也就是经常取不到数据的情况,这种情况也是要重启被监控端的snmpd服务
附带redhat 6下php5.3带pfm的下载地址