天天看點

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