手把手實現用Cacti監控資源+完美監控MySQL等服務

 

簡介

Cacti是通過 snmpget來獲取數據,使用 RRDtool繪畫圖形,而且你完全可以不需要了解RRDtool複雜的參數。它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、host以及任何一張圖,還可以與LDAP結合進行用戶驗證,同時也能自己增加模板,功能非常強大完善。界面友好。
  

CACTI

軟件 Cacti 的發展是基於讓 RRDTool 使用者更方便使用該軟件,除了基本的 Snmp 流量跟系統資訊監控外,Cacti 也可外掛 Scripts 及加上 Templates 來作出各式各樣的監控圖。
 
cacti是用php語言實現的一個軟件,它的主要功能是用snmp服務獲取數據,然後用rrdtool儲存和更新數據,當用戶需要查看數據的時候用rrdtool生成圖表呈現給用戶。因此,snmp和rrdtool是cacti的關鍵。Snmp關係着數據的收集,rrdtool關係着數據存儲和圖表的生成。
 
Mysql配合PHP程序存儲一些變量數據並對變量數據進行調用,如:主機名、主機ip、snmp團體名、端口號、模板信息等變量。
 
snmp抓到數據不是存儲在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目錄的rra文件夾下)。rrdtool對數據的更新和存儲就是對rrd文件的處理,rrd文件是大小固定的檔案文件(Round Robin Archive),它能夠存儲的數據筆數在創建時就已經定義。關於RRDTool的知識請參閱RRDTool教學。

Cacti的官方網站:http://www.cacti.net 

本文示例:
文中所有在終端輸入的命令都以灰色底色覆蓋,如:
        vi /etc/snmp/snmp.conf
文中所有在打開的文件中加入/修改的內容都用青色底色覆蓋,如:
        view systemview included .1.3.6.1.2.1
 



接下來就來實現CACTI的完整安裝配置,以及圖形化界面的介紹和MySQL的監控。

一、準備工作
環境:RedHat 5.4
所需軟件:(都使用yum的方式直接裝好)
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.7g.tar.gz

二、環境介紹
主監控機是Redhat 5.4
主監控機IP=192.168.0.33

三、安裝配置
(1)在主監控機上安裝apache+php+gd的web環境,推薦編譯安裝,在此直接用yum安裝。
yum install -y 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安裝
yum install -y rrdtool rrdtool-devel rrdtool-php
如果yum源無法提供可以到http://pkgs.repoforge.org/rrdtool/下載下來然後使用以下命令
yum localinstall --nogpgcheck
(3)配置snmp
vi /etc/snmp/snmp.conf

service snmpd start
service mysqld start
(4)安裝cacti
#把解壓後的包移動到你的相應的web目錄
tar xvf cacti-0.8.7g.tar.gz
mv cacti-0.8.7g /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
#主要修改連接數據庫所對應的用戶和密碼

#啓動httpd開啓web服務
service httpd start
 

(6)瀏覽器下配置

#用瀏覽器打開 http://192.168.0.33/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

# 更改以下部分

# 開啓snmpd服務
service snmpd restart

 

四、cacti常用插件安裝

要安裝別的插件前,先要安裝cacti的一個patch--Plugin Architecture,才能支持插件

下載地址:http://www.cacti.net/downloads/pia/cacti-plugin-0.8.7g-PA-v2.8.tar.gz

tar xvf cacti-plugin-0.8.7g-PA-v2.8.tar.gz
cp -R cacti-plugin-arch/* /var/www/html/cacti/
cd /var/www/html/cacti/

mysql -ucacti -pcacti cacti < pa.sql
patch -p1 -N < cacti-plugin-0.8.7g-PA-v2.8.diff

vi include/config.php
修改爲$url_path = “/cacti/”;
登陸,啓用PA。啓用方法見後圖

 

監控插件Monitor的安裝(其他插件安裝方式相同)
tar zxvf monitor-latest.tgz
mv monitor/ /var/www/html/cacti/plugins/monitor

登陸安裝啓用對應的插件即可。

啓用PA以及監控插件的方法:

 

五:使用腳本監控相關軟件——使用腳本監控MySQL
(1)腳本下載以及設置
wget http://mysql-cacti-templates.googlecode.com/files/better-cacti-templates-1.1.8.tar.gz

tar zxvf better-cacti-templates-1.1.8.tar.gz
cd better-cacti-templates-1.1.8

cp scripts/ss_get_mysql_stats.php /var/www/html/cacti/scripts/

我們這隻測試mysql,mysql相關的有2個文件:
模板文件:./templates/cacti_host_template_x_mysql_server_ht_0.8.6i-sver1.1.8.xml
插件:./scriptsss_get_mysql_stats.php

修改ss_get_mysql_stats.php 文件
vm /var/www/html/cacti/scripts/scriptsss_get_mysql_stats.php 

(2)創建監控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";

(3)模板導入
我們將模板從Linux中載下來,進入瀏覽器,手動導入文件

在cacti管理界面(Import Templates)導入cacti_host_template_x_mysql_server_ht_0.8.6i-sver1.1.8.xml。

(4)添加設備

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

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

 

六、常見故障排除

1.安裝完畢在瀏覽器上無法看到數據的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

  關閉selinux,即可解決問題。
注意:無法獲取數據圖大多和poller.php,cmd.php權限有關。

2.當cacti 有圖沒有數據時,而且狀態爲nan的錯誤
這個很可能是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版本不一致導致的。都用version 1是一種解決方法
如果都用version 1,需要把所有監控機和被監控機的snmpd.conf改一下
vi /etc/snmp/snmpd.conf
將下邊這行
view systemview included .1.3.6.1.2.1.1
改爲
view systemview included .1.3.6.1.2.1
rrdtools版本要一致,特別是在升級cacti時候。版本不一致,可能rra數據格式不同。就無法處理。

七、排錯方法以及思路

1,查看log下的日誌文件。一般那裏會有提示
2,測試SNMP是不是工作正常 snmpwalk -v 2c -c public hostIP  
如果正常的話會出現一些數據。不正常會出現一些錯誤,也會有對應的錯誤提示。


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。把cacti目錄裏的cmd.php和poller.php文件加下運行的權限。

 

 

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