红联Linux门户
Linux帮助

CentOS搭建Cacti监控以及常见故障解决方案

发布时间:2015-04-19 15:57:38来源:linux网站作者:sangh

准备环境:
一、配置防火墙,开启80端口、3306端口
vi/etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp--dport 80 -j ACCEPT(允许80端口通过防火墙)
-A INPUT -m state --state NEW -m tcp -p tcp--dport 3306 -j ACCEPT(允许3306端口通过防火墙)
特别提示:很多哥们把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
添加好之后防火墙规则如下所示:
*filter
:INPUT ACCEPT[0:0]
:FORWARD ACCEPT[0:0]
:OUTPUT ACCEPT[0:0]
-A INPUT -mstate --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp-j ACCEPT
-A INPUT -i lo-j ACCEPT
-A INPUT -mstate --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -mstate --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -mstate --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -jREJECT --reject-with icmp-host-prohibited
-A FORWARD -jREJECT --reject-with icmp-host-prohibited
COMMIT
/etc/init.d/iptablesrestart#最后重启防火墙使配置生效


二、关闭SELINUX
vi/etc/selinux/config
#SELINUX=enforcing#注释掉
SELINUX=disabled#增加
:wq保存,关闭
shutdown -r now#重启系统


三、系统约定
软件源代码包存放位置:/usr/local/src
源码包编译安装位置:/usr/local/软件名字


四、下载软件包
http://wwwNaNake.org/files/v2.8/cmake-2.8.7.tar.gz
ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
http://mirror.bit.edu.cn/apache/apr/apr-1.4.6.tar.gz
http://mirror.bit.edu.cn/apache/apr/apr-util-1.4.1.tar.gz


五、安装编译工具及库文件(使用CentOS yum命令安装)
yum install make autoconfautomake gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gdkernel keyutilspatchperl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel pplcloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-develkrb5-devel zlib-devel libXpm* freetype libjpeg* libpng* php-common php-gdncurses* libtool* libxml2 libxml2-devel patch
安装步骤
以下是用putty工具远程登录到服务器,在命令行下面操作的
1)安装libmcrypt
cdlibmcrypt-2.5.7./configuremake && make install
ldconfigcd libltdl/./configure--enable-ltdl-install make && make install
2)安装cmake./configure --prefix=/usrmake && make install
3)安装apryum-yremoveapr
./configure--prefix=/usr/local/webserver/aprmake && make install
4)安装apr-util
./configure--prefix=/usr/local/webserver/apr-util--with-apr=/usr/local/webserver/apr/bin/apr-1-config
1、安装mysql
#Nginxyum -yinstall pcre-develzlib-devel
第二步:添加MYSQL安装用户
groupaddmysql
useradd -gmysqlmysql -s /bin/false
第三步:编译和安装
cd mysql-5.5.21
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql\
-DMYSQL_DATADIR=/user/local/webserver/mysql/data\
-DSYSCONFDIR=/etc\
-DEXTRA_CHARSETS=all\
-DDEFAULT_CHARSET=utf8\
-DDEFAULT_COLLATION=utf8_general_ci\
-DWITH_INNOBASE_STORAGE_ENGINE=1\
-DWITH_ARCHIVE_STORAGE_ENGINE=1\
-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
-DWITH_FEDERATED_STORAGE_ENGINE=1\
-DWITH_PARTITION_STORAGE_ENGINE=1\
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1\
-DMYSQL_UNIX_ADDR=/usr/local/webserver/mysql/tmp/mysqld.sock\
-DMYSQL_TCP_PORT=3306\
-DWITH_DEBUG=0 \
-DENABLED_LOCAL_INFILE=1
make&& make install
第四步:设置mysql
#在support-files目录中有五个配置信息文件(这里很重要,一定要根据自己的内存复制对应的cnf文件,否则mysql始终起不来):
#my-small.cnf (内存<=64M)#my-medium.cnf (内存 128M)#my-large.cnf (内存 512M)
#my-huge.cnf (内存 1G-2G)#my-innodb-heavy-4G.cnf (内存 4GB)
cp ./support-files/my-huge.cnf /etc/my.cnf
vi /etc/my.cnf
#在 [mysqld] 段增加
datadir = /usr/local/webserver/mysql/data
wait-timeout =30
max_connections= 512
#在 [mysqld] 段修改
max_allowed_packet= 16M
第五步:设置权限
chown -R root.mysql.
chown -Rmysql.mysql data
第六步:生成新的mysql授权表
//利用mysql_install_db脚本生成新的mysql授权表
cd/usr/local/webserver/mysql/scripts
./mysql_install_db--user=mysql --basedir=/usr/local/webserver/mysql--datadir=/usr/local/webserver/mysql/data
第七步:添加mysql server到系统服务
cpsupport-files/mysql.server /etc/init.d/mysqld#把Mysql加入系统启动
chmod 755/etc/init.d/mysqld#增加执行权限
chkconfigmysqldon#加入开机启动
vi/etc/init.d/mysqld #编辑
basedir =/usr/local/webserver/mysql#MySQL程序安装路径
datadir =/usr/local/webserver/mysql/data#MySQl数据库存放目录
service mysqldstart#启动
第八步:mysql服务加入系统环境变量
vi /etc/profile#把mysql服务加入系统环境变量:在最后添加下面这一行
exportPATH=$PATH:/usr/local/webserver/mysql/bin
#使环境变量立即生效:source /etc/profile
下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。
//设置软连接使mysql,mysqldump,mysqladmin这三个bin命令能在shell中直接运行
ln -s/usr/local/webserver/mysql/include/mysql /usr/bin
ln -s/usr/local/webserver/mysql/bin/mysqldump /usr/bin
ln -s/usr/local/webserver/mysql/bin/mysqladmin /usr/bin
第九步:设置密码
mysqladmin-uroot password "ellisqin"
2、安装apache2
./configure--prefix=/usr/local/webserver/apache--with-apr=/usr/local/webserver/apr --with-apr-util=/usr/local/webserver/apr-util--enable-static-support--enable-mods-shared=most--enable-speling--enable-forward --enable-ssl--with-ssl--enable-cache-disk --enable-cgid--enable-module=so --with-mysql=/usr/local/webserver/mysql--sysconfdir=/usr/local/lamp/etc
# /usr/local/webserver/apache/bin/apachectl-k start#启动
# vi /usr/local/webserver/apache/conf/httpd.conf#编辑配置文件
找到:#ServerNamewww.example.com:80修改为:ServerName www.pphc.com:80
找到:DirectoryIndex index.html修改为:DirectoryIndex index.html index.php
找到:Options Indexes FollowSymLinks修改为:Options FollowSymLinks#不显示目录结构
找到AllowOverride None 修改为:AllowOverride All#开启apache支持伪静态,有两处都做修改
LoadModulerewrite_modulemodules/mod_rewrite.so#取消前面的注释,开启apache支持伪静态
vi/etc/profile#添加apache服务系统环境变量
在最后添加下面这一行
exportPATH=$PATH:/usr/local/webserver/apache/bin
cp/usr/local/webserver/apache/bin/apachectl /etc/init.d/httpd#把apache加入到系统启动
vi/etc/init.d/httpd#编辑文件
在#!/bin/sh下面添加以下两行
#chkconfig:234510 90
#descrption:Activates/DeactivatesApache Web Server
chowndaemon.daemon-R /usr/local/webserver/apache/htdocs#更改目录所有者
chmod700 /usr/local/webserver/apache/htdocs-R #更改apache网站目录权限
chkconfighttpdon#设置开机启动
3、安装php
yum install libjpeg-devel net-snmp net-snmp-devel net-snmp-utils gmpgmp-devel php-mysql* freetype* object* bzip2* gd-devel libpng-develfreetype-deve l libxml2-devel curl-devel
ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/
./configure--prefix=/usr/local/webserver/php--with-apxs2=/usr/local/webserver/apache/bin/apxs--with-mysql=/usr/local/webserver/mysql--with-gd--with-freetype-dir--with-jpeg-dir--with-png-dir --enable-sockets
#makemakeinstall
cpphp.ini-production /usr/local/webserver/php/etc/php.ini#复制php配置文件到安装目录
ln -s/usr/local/webserver/php/bin/*/usr/local/bin#创建配置文件软链接
vi /usr/local/webserver/php/etc/php.ini#编辑
找到:;open_basedir =
修改为:open_basedir= .:/tmp/#防止php木马跨站,重要!!
#列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
找到:;date.timezone =
修改为:date.timezone ='Asia/Shanghai'(*重要*)不修改会导致PHP文件打不开
找到:expose_php = On
修改为:expose_php = OFF#禁止显示php版本的信息
找到:display_errors = On
修改为:display_errors = OFF#关闭错误提示
8、配置apache支持php
vi /usr/local/webserver/apache/conf/httpd.conf#编辑apache配置文件
在LoadModule php5_modulemodules/libphp5.so这一行下面添加、
AddTypeapplication/x-httpd-php.php(注意:php .php这个点前面有一个空格)
/usr/local/webserver/apache/bin/apachectl-k restart#重启apache
service mysqldrestart#重启mysql
至此,CentOS 6.2编译安装Apache2.4.2+MySQL5.5.25+PHP5.3.13配置完成。
4、rrdtool安装
yum install zib libpng freetype libjpeg fontconfiggd libxml2 cairo-devel libxml2-devel pango pango-devel
yum install libxml2-devellibpng-devel pkgconfig glib pixman pango pango-devel freetype freetype-develfontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel
#./configure--prefix=/usr/local/rrdtool
可能会报下面这个错误
configure: error: Please fix the library issues listed above and try again.
还要确定是否安装了perl和perl-devel如果没有安装在make的时候会报错。
解决方法yum -y installpango-develpango*perlperl-devel
#make &&make install
#ln -s/usr/local/rrdtool/bin/* /usr/local/bin/
5、cacti安装
#mvcacti-0.8.8a/usr/local/webserver/apache/htdocs/
#mysql -uroot -pellisqin
mysql> createdatabase cacti;
Query OK, 1 rowaffected (0.03 sec)
mysql> grantall privileges on cacti.* to cactiuser@localhost \
-> identified by "ellisqin";
mysql> flushprivileges;
Query OK, 0 rowsaffected (0.02 sec)//重载MySQL授权表
#mysql-ucactiuser -pellisqin cacti <cacti.sql//导入cacti数据库
#viinclude/config.php
$database_default= "cacti";
$database_hostname= "127.0.0.1";
$database_username= "cactiuser";
$database_password= "ellisqin";
#crontab –e,加入如下内容,让cacti每五分钟采集一次数据
*/5 * * * * envLANG=C /usr/local/webserver/app/bin/php/usr/local/webserver/apache/htdocs/cacti/poller.php
#service crondstart
访问http://ip/cacti
问题1:Warning: strtotime() [function.strtotime]:
解决方法
1:改 php.ini
date.timezone ='Asia/Shanghai'
2:在程序代码中写入
#vi include/global.php
<?php
date_default_timezone_set('Asia/Shanghai');//添加这一行
/*
问题2The following PHP extensions are missing: *sockets
原来是安装php时没有配置socket支持
哎,没办法只能重新编译下php,添加socket支持
1.不用停止 apache
2.进入 apache 的模块目录,备份一下php模块.
cd/usr/local/apache2/modules/
cp libphp5.solibphp5.so.bak
3.进入php的源码目录下,由于已经成功编译过,会有一个成功的config.nice文件,打开这个文件并重新配置,增加 socket 支持
cd/usr/local/src/php-5.2.4
viconfig.nice
增加一行
'--enable-sockets'
4.重新生成配置文件
shconfig.nice
5.重新编译
make && make install
6.重启 apache
/usr/local/apache2/bin/apachectl restart
----------------加载其他模块同--------------
6、对Centos Linux机器进行监控采用两个版本
yum installnet-snmp net-snmp-devel net-snmp-utils
采用第一种版本V3
在笔者的试验环境下,CentOS下的net-snmp无法在selinux环境下正常使用v3。如果您想使用snmp v3,请先禁用selinux。
net-snmp-config--create-snmpv3-user -ro -A hnjingpw -a MD5 qin
以上命令,创建一个snmpv3用户,只读,使用MD5,用户名为qin,密码为hnjingpw
注意:运行之前请先停用net-snmp服务。
我们可以使用snmpwalk来检测snmp服务是否正常开启。
shell>snmpwalk-v 3 -u qin -a MD5 -A "hnjingpw" -l authNoPriv 127.0.0.1 sysDescr
#shell>service snmpd start
采用第二种版本V2
编辑snmp配置文件/etc/snmp/snmp.conf
修改:com2secnotConfigUserdefaultpublic
改为:com2sec notConfigUser127.0.0.1(允许哪台机器捕捉数据)public
修改:accessnotConfigGroup ""anynoauthexactsystemview none none
改为:accessnotConfigGroup ""anynoauthexactall none none
去掉这句的注释#view allincluded .180
7、Plugin Architecture安装 (不需要)
插件下载地址http://cactiusers.org/
#mysql-ucactiuser -pellisqin cacti<pa.sql
#cpcacti-plugin-0.8.7h-PA-v3.0.diff /usr/local/webserver/apache/htdocs/cacti/
#patch -p1 -N< cacti-plugin-0.8.7h-PA-v3.0.diff
#viinclude/global.php
$database_password= "ellisqin";
$url_path ="/cacti/";
$config['url_path']= $url_path;
8、net-snmp安装
如果安装了net-snmpnet-snmp-devel net-snmp-utils就不需要安装第8步了
# yum -y installmysql-devel net-snmp-devel (*重要*) 不安装的话net-snmp完装不了
#./configure--prefix=/usr/local/net-snmp
#make &&make install
#cpEXAMPLE.conf/usr/local/net-snmp/share/snmp/snmpd.conf
#ln -s/usr/local/net-snmp/bin/* /usr/local/bin/
9、cacti-spine安装
Cacti 在采集数据时使用的是cmd.php脚本,此脚本最短轮询时间为 5 分钟,也就说我们使用cmd.php 是无法将 cacti 轮询时间设置为每分钟轮询一次,因此,我们需要安装额外的高效轮询工具Spine
#./configure--prefix=/usr/local/cacti-spine--with-mysql=/usr/local/webserver/mysql--with-snmp=/usr/local/net-snmp(可不选,如果安装了net-snmp源码需要加上)
#make &&make install
#cd/usr/local/cacti-spine/etc/
#cpspine.conf.distspine.conf
#vispine.conf//配置连接 cacti数据库的信
报错:configure: error:Cannot find MySQL headers. Use --with-mysql= to specify
解决办法:# yum -y installmysql-devel
报错:configure: error:Cannot find SNMP headers
解决办法:# yum -y installnet-snmp-devel
#vispine.conf
DB_Host127.0.0.1
DB_Databasecacti
DB_Usercactiuser
DB_Passellisqin
cacti-spine报日志错误
cat/var/spool/mail/root
/usr/local/spine/bin/spine:error while loading shared libraries: libmysqlclient_r.so.18: cannot openshared object file: No such file or directory
做个软链接,问题解决
ln -s/usr/local/webserver/mysql/lib/libmysqlclient.so.18 /usr/lib64