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