簡介Cacti是通過 snmpget來獲取數據,使用 RRDtool繪畫圖形,而且你完全可以不需要了解RRDtool複雜的參數。它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、host以及任何一張圖,還可以與LDAP結合進行用戶驗證,同時也能自己增加模板,功能非常強大完善。界面友好。 軟件 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控制檯界面:
(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
如果出現:
======================== |
關閉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 |
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文件加下運行的權限。