CentOS/RHEL上通過Cacti監控mysql

如果你學會了架設和原理,去看英文版本的有很大的提升空間

http://code.google.com/p/mysql-cacti-templates/wiki/MySQLTemplates

一、準備工作

環境:Centos 5.4 x86_64

所需軟件:

    http
    Php
    Php-mysql
    Php-snmp
    Mysql
    Perl-DBD-MySQL
    Php-pdo
    rrdtool
    Net-snmp
    Net-snmp-libs
    Net-snmp-utils

下載相關軟件

cd /usr/local/src/
wget http://www.cacti.net/downloads/cacti-0.8.7e.tar.gz


二、環境介紹

主監控機是Centos 5.4 x86_64

主監控機IP=10.0.0.52

三、安裝配置

(1)在主監控機上安裝apache+php+gd的web環境,推薦編譯安裝,不再贅述,本處方便起見用yum裝了

yum install php php-mysql php-snmp mysql mysql-server net-snmp net-snmp-libs net-snmp-utils php-pdo perl-DBD-MySQL

(2)在主監控機上安裝rrdtool,rrdtool依賴的包過多,所以選擇增加源,然後用yum安裝

增加源

vi /etc/yum.repos.d/CentOS-Base.repo

在文件末尾增加以下部分

[dag]

name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
gpgkey=http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
enabled=1
yum install rrdtool

(3)配置snmp

vi /etc/snmp/snmp.conf

將下邊這行中的default

com2secnotConfigUser default public

改爲127.0.0.1

com2secnotConfigUser 127.0.0.1 public

將下邊這行中的systemview

access notConfigGroup "" any noauth exact systemview none none

改爲all

access notConfigGroup "" any noauth exact all none none

將下邊這行的註釋“#”號去掉

#view all included .1 80

重啓snmpd服務

service snmpd restart

(4)安裝cacti

把解壓後的包移動到你的相應的web目錄

tar xvf cacti-0.8.7e.tar.gz
mv cacti-0.8.7e /var/www/html/cacti

(5)在數據庫中建庫、授權、導入數據庫結構

注意導入cacti.sql時該文件的路徑

mysql -p
mysql> create database cacti;
mysql> grant all privileges on cacti.* to cacti@localhost identified by 'cacti' with grant option;
mysql> grant all privileges on cacti.* to [email protected] identified by 'cacti' with grant option;
mysql> use cacti;
mysql> source /var/www/html/cacti/cacti.sql;

配置cacti以連接數據庫

vi /var/www/html/cacti/include/config.php

(6)瀏覽器下配置

用瀏覽器打開 http://10.0.0.52/cacti ,會顯示 cacti的安裝指南,設置好就不會再出現了。

點擊 “Next”

選擇“New Install”,點擊“Next”

指定 rrdtool、 php、 snmp 工具的 Binary 文件路徑,確保所有的路徑都是顯示“ FOUND”,沒有 “NOT FOUND”的,點擊 Finish 完成安裝。

Cacti 默認的用戶名與密碼是 admin,輸入用戶名與密碼,點擊 login

爲了安全的原因,第一次登錄成功後,cacti 會強制要求你更改一個新的 password ,輸入新密碼並確認密碼,點擊 save ,進入 cacti 控制檯界面:

點擊 graphs ,查看cacti 監控本機的圖表:

(7)增加入一個計劃任務,使得 cacti 每五分鐘生成一個監控圖表。

crontab -e

加入如下內容。注意poller.php的路徑

*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1

確保 /var/www/html/cacti/rra/目錄存在

如果暫時未看到圖表,可以手工執行,生成圖表

php /var/www/html/cacti/poller.php > /dev/null 2>&1

(8)使用 Cacti 監控 Linux 主機

在被監控的linux主機上安裝net-snmp

yum install net-snmp
vi /etc/snmp/snmpd.conf

更改以下部分

將下邊這行中的default

com2secnotConfigUser default public

改爲10.0.0.52(cacti)服務器的地址)

com2secnotConfigUser 10.0.0.52 public

將下邊這行中的systemview

access notConfigGroup "" any noauth exact systemview none none

改爲all

access notConfigGroup "" any noauth exact all none none

將下邊這行的註釋“#”號去掉

#view all included .1 80
service snmpd restart

  
四、配置cacti監控mysql

(一)安裝並配置mysql-cacti模板

wget http://mysql-cacti-templates.googlecode.com/files/mysql-cacti-templates-1.1.2.tar.gz
tar -xzvf mysql-cacti-templates-1.1.2.tar.gz
cd mysql-cacti-templates-1.1.2
cp ss_get_mysql_stats.php /xok.la/cacti/scripts

可以看到裏面有多個監控項目,報告監控apache和nginx.我這隻測試mysql,mysql相關的就2個文件:

模板文件:cacti_host_template_x_db_server_ht_0.8.6i.xml

插件:ss_get_mysql_stats.php

修改ss_get_mysql_stats.php 文件 第30行

$mysql_user = 'cacti';
$mysql_pass = 'cacti';
$cache_dir  = "var/www/html/cacti/cache/";

設置準備監控的數據庫的賬戶相關信息

mkdir  /var/www/html/cacti/cache/
chmod 777 -R /var/www/html/cacti/cache/

默認在獲取的數據/tmp/下,會有cacti不能讀取的情況。所以放在cacti目錄來。


(二)創建監控Mysql需要的賬戶以及權限

配置MySQL服務器,讓cacti所在機器能夠訪問MySQL服務器的狀態信息,必須擁有”process”權限。如果要監控InnoDB狀態,還必須有”SUPER”權限。

mysql> grant process,super on *.* to 'cacti'@'%' identified by 'cacti';
mysql> grant all privileges on cacti.*  to cacti@"%" identified by "cacti";

(三)模板導入

在cacti管理界面(Import Templates)導入cacti_host_template_x_db_server_ht_0.8.6i.xml。


(四)添加設備

創建Graph。在Console選項卡下的左側菜單欄中選擇Devices,爲要監控的主機新建一個Devices或選擇已有Devices。

在Associated Graph Templates中添加想要監控MySQL狀態的Graph Templates(如X MySQL Connections GT模板)。

並點擊最上面的Create Graphs for this Host鏈接,在Graph Templates的選擇框中選擇X MySQL Connections GT,然後點擊Create按鈕,出現以下WEB頁。

cacti 監控 mysql

五、常見故障排除

安裝完畢在瀏覽器上無法看到數據的png圖片。看apache的log

    如果出現:

    ========================

    [Thu Feb 09 15:12:24 2006] [error] [client 127.0.0.1] File does not exist: /var/www/html/favicon.ico

    ERROR: opening ‘/var/www/html/cacti/rra/localhost_mem_buffers_3.rrd’: Permission denied

    PS:解決辦法:關閉selinux,即可解決問題。

PS:以上無法獲取數據圖大多和poller.php,cmd.php權限有關。

當cacti 有圖沒有數據時,而且狀態爲nan的錯誤

PS:這個很可能是snmp的問題,執行以下命令,沒有得到如圖的結果。就說明snmp不支持64位MIB庫。重新編譯安裝snmp

snmpwalk -c public -v 2c 127.0.0.1 IF-MIB::ifHCInOctets

IF-MIB::ifHCInOctets.1 = Counter64: 7437357

IF-MIB::ifHCInOctets.2 = Counter64: 353773IF-MIB::ifHCInOctets.3 = Counter64: 0

PS:被監控主機無法獲得snmp信息,還有可能是對方主機snmp版本和當前主機的snmp版本不一致導致的。

PS:rrdtools版本要一致,特別是在升級cacti時候。版本不一致,可能rra數據格式不同。就無法處理。

排錯思路

1,查看log下的日誌文件。一般那裏會有提示

2,測試SNMP是不是工作正常 snmpwalk -v 2c -c public hostIP   if正常的話會出現一些數據。不正常會出現一些錯誤,也會有對應的錯誤提示。

3,自動運行poller.php沒有。有沒有加入cacti的的用戶。。有沒有給cacti用戶寫入rra/ log/的權限。。

4,crontab –u cactiuser –e 爲cactiuser加上自動運行poller.php的任務:*/5     *       *       *       *       root    /usr/local/bin/php /usr/local/share/cacti/poller.php /dev/null 2>&1

5分鐘刷新一次數據。你也可以根據需要還設置。

5。把cacti目錄裏的cmd.php和poller.php文件加下運行的權限。

轉自:http://www.unixwind.com/09/05/620.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章