天天看点

centos 搭建cacti监控以及常见故障解决方案

      CentOS搭建Cacti监控平台以及故障解决

准备环境:

一、配置防火墙,开启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

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)

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

问题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

$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

#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源码需要加上)

#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

本文转自Devin 51CTO博客,原文链接:http://blog.51cto.com/devingeng/1358376