基於RRDTOOL+CACTI性能監視系統的架構

 
基於RRDTOOL+CACTI性能監視系統的架構
一、概述
Linux
下用的最多的是MRTG的性能監視,MRTG配置比較簡單,MRTG的確是非常好的東東,但我認爲它畢竟已經是一套很舊的軟件了,其作者在多年前就已經開發了RRDTool代替該軟件,現在已經發展得很成熟。既然有更好的選擇,爲什麼我們還要用MRTG呢?
簡單的說,rrdtool就是一個強大的繪圖的引擎,很多語言都可以調用rrdtool繪圖。
整個系統的架構是這樣的:
基於SNMP協議,被監控端是服務器,或一些網絡設備,
網絡管理工作站,採用Linux(Freebsd)操作系統,並且安裝Net-SNMP工具,使用RRDTOOL採集數據,存儲數據,並用Cacti調用rrdtool顯示出來。
CACTI
採用PHP編寫,基於B/S結構。
二、介紹
MRTG
的優點簡單、易上手,基本安裝完了之後只要更改一下配置文件即可。
缺點
1、使用文本式的數據庫,數據不能重複使用;
2
、只能按日、周、月、年來查看數據;
3
、只能畫兩個DS(一條線、一個塊);
4
、每取一次數據即需要繪圖一次,浪費系統資源;
5
、無管理功能;
rrdtool的優點:
 1
、使用rrd存儲格式,數據能重複使用,比如我可以將一個rrd文件中的數據與另一個rrd文件中的數據相加。
 2
、可以定義任意時間段畫圖,即你可以畫出一張半年以來的數據的圖,也可以畫出一張半小時以來的圖。
 3
、能畫任意個DS
 4
CDEF讓你能任意擺弄數據。

缺點:
1
rrdtool的作用只是存儲數據和畫圖,它沒有mrtg中集成的數據採集功能;
2
、在命令行的使用非常複雜,參數極多。
3
、無管理功能。

簡單的說,rrdtool就是一個強大的繪圖的引擎。

由於其非常複雜的命令,對用戶非常不友好。幸運的是,PHP可管理化的cactiwww.cacti.net)出現了。對該工具只有一個字形容:“great cacti其實是一套php程序,它運用snmpget採集數據,使用rrdtool繪圖。它的界面非常漂亮,能讓你根本無需明白rrdtool的參數能輕易的繪出漂亮的圖形。更難能可貴的是,它提供了強大的數據管理和用戶管理功能,一張圖是屬於一個host的,每一個host又可以掛載到一個樹狀的結構上。用戶的管理上,作爲一個開源軟件,它居然做到爲指定一個用戶能查看的host、甚至每一張圖,還可以與LDAP結合進行用戶的驗證!真是不由得佩服作者考慮的周到!Cacti還提供自己增加模板的功能,讓你添加自己的snmp_queryscript!可以說,cactirrdtool的所有缺點都補足了
 
 
 
Cacti的架構 ( 圖一 )
 
Cacti的工作流程( 圖二 )
 
三、監控管理工作站配置
採用Linux系統,CACTI要用到Net-SNMPRRDToolAapchePHPMysql,以下是安裝過程:
1.安裝Apache+Mysql+PHP
安裝過程比較簡單,參考其它的資料,需要注意的是,PHP最好加上SNMP支持,編譯的時候,加上—enable-snmp
注意。PHP不能運行在安全模式,否則,Cacti工作不正常。無法調用/usr/local/bin/下面的程序。
Mysql數據庫不能使用5以上的版本,測試mysql 5 cacti不能正常運行!
2.安裝rrdtool
1.0.x
版本:
官方網站:http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
下載:
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.0.x/rrdtool-1.0.50.tar.gz
然後(可去查看下載最新版)

#./configure –prefix=/usr/local/rrdtool
#make
#make install
 
mrtg相比,rrdtool1.0.x自帶了gd,所以不用先安裝gd.(不過由於rrdtool自帶的gd庫不支持中文,所以rrdtool畫出來的圖也不能有中文,否則會出現亂碼).

1.2.x
版本
 1.2版的rrdtool畫出的圖,比1.0的要漂亮些. 1.0用的是GD畫圖,1.2用的是libartfreetype畫圖,1.2的畫圖會慢一點.
注意:rrdtool1.2的版本由於已經不再自帶外部的lib庫(如cgilibzlib等),所以需要從http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/下載這些庫來安裝。
 
庫的編譯安裝:

安裝完後,執行rrdtool看是否正確,
如果執行不成功,提示命令不存在,則需要將所有RRDTool的可執行文件,拷到/usr/local/bin
#cp /usr/local/rrdtool/bin/* /usr/local/bin
Building cgilib
#tar zxvf cgilib-0.5.tar.gz
#cd cgilib-0.5
#make CC=gcc CFLAGS="-O3 -fPIC -I."
#cp *.h /usr/include/
#cp libcgi* /usr/lib
Building zlib
#tar zxvf zlib-1.2.2.tar.gz
#cd zlib-1.2.2
#./configure --prefix=/usr
#make
#make install
#tar zxvf libpng-1.2.8-config.tar.gz
#cd libpng-1.2.8-config
#cp scripts/makefile.gcmmx makefile
#./configure --disable-shared --prefix=/usr
#make
#make install
#tar zxvf freetype-2.1.10.tar.gz
#./configure --disable-shared --prefix=/usr
#make
#make install
#tar zxvf libart_lgpl-2.3.17.tar.gz
#./configure --disable-shared --prefix=/usr
#make
#make install
Building rrdtool-1.2.6
#tar zxvf rrdtool-1.2.6.tar.gz
#./configure
#make
#make install
#cp /usr/local/rrdtool/bin/* /usr/local/bin/
#ln -s /usr/local/rrdtool-1.2.6 /usr/local/rrdtool
3.安裝Net-SNMP
RH
下面,默認安裝了SNMP服務,但好象沒有snmpwalk,snmpget這兩個命令,所以需要安裝NET-SNMPNET-SNMP官方網站:http://www.net-snmp.org/
下載tar zxvf net-snmp-5.2.1.2.tar.gz
#tar zxvf tar zxvf net-snmp-5.2.1.2.tar.gz
#cd net-snmp-5.2.1.2
#./configure
#make
#make install
運行snmpget,snmpwalk測試是否安裝成功
RPM
包的snmpwalk的名稱是:net-snmp-utils.*.rpm,也可以從安裝光盤上RPM安裝。
4.安裝CACTI
官方網站:http://www.cacti.net/
a)
安裝cacti源文件
下載cacti-0.8.6g.tar.gz
將這個壓縮包解壓到網站根目錄
#cp cacti-0.8.6g.tar.gz /home/wwwroot              //httpd站點目錄所在
#cd /home/wwwroot/
#tar xzvf cacti-0.8.6g.tar.gz
#mv cacti-0.8.6g cacti
#chown –R apache.apache cacti
#cd cacti
b) 配置Mysql數據庫
cacti配置用戶和數據庫:
#mysql –u root –p
mysql>create database cactidb;
mysql>grant all privileges on cactidb.* to cactiuser@localhost identified by ‘password’;
mysql>quit
 
 
 
 
 
 
 
c) 配置Cacti連接數據庫
#vi /home/wwwroot/cacti/include/config.php
$database_type = “mysql”;
$database_default = “cactidb”;
$database_hostname = “localhost”;
$database_username = “cacti”;
$database_password = “password”;
d) 導入數據表
/usr/local/mysql/bin/mysql -u root –p cactidb < cacti.sql 
chown -R cactiuser rra/ log/

e)
定時crontab運行cacti的收集數據程序
crontab -u cactiuser –e
*/5 * * * * /usr/local/bin/php /home/wwwroot/cacti/poller.php > /dev/null 2>&1
注意: 不要使用root用戶運行上面的命令,否則要再運行一次chown –R cactiuser rra/ log/
f)
配置Cacti
在瀏覽器上輸入:
http://IP/cacti
進入cacti的初始設置頁面:
在這裏我們要輸入一些原始的信息:

NEXT
-》
輸入一些信息,如rrdtoolphpsnmpwalksnmpget的位置,使用ucd-snmp還是net-snmp-》
輸入原始的用戶和密碼:admin/admin -》
更改admin用戶的密碼-》
點擊 Save

安裝完成!!!
現在可以在瀏覽器中進入Cacti的世界了!
5.測試
1)              添加監控站點
 Devices 中的Add進入添加服務器如圖345
添加監控服務器(圖3
添加監控服務器(圖4
添加監控服務器(圖5
如果能連接得上,則添加後會在頭部顯示
61.129.102.51 (61.129.102.51)
SNMP Information
System: 00:LINUX:MAIL.BIZCN.COM:2.4.20-30.9SMP:#1:SMP:WED:FEB:04:20:36:46:EST:2004:I686
Uptime: 156994868
Hostname: mail.bizcn.com
 
 
添加監控服務器(圖6
 
2)              配置添加的服務器的監控服務(這裏一般使用UCD/NET 模板)
 New Graphs 選擇監控點名,勾選相應的creat
添加監控服務器(圖6
 
3)、添加目錄樹(增加後將在監控的位置出現)
Graph Trees 中的Add(如圖)
添加監控服務器(圖7
選擇host,並在下拉列表中選擇你剛添加的
 
添加監控服務器(圖8
4)、監控
點擊總菜單中的Graphs 顯示監控圖,可在左邊選擇相應的監控端查看(一般添加5分鐘後就有圖出來)
監控服務器(圖9
 
以下是關於流量負載內存等的截圖
 
 
四、被監控端配置
大部分情況下,我們監控的是服務器,以RedHat Linux爲例,看看如何打開SNMP服務。
只有開啓了SNMP服務,監控端纔可以收集數據。
打開默認的/etc/snmp/snmp.conf文件,更改如下配置:
1
、查找以下字段:
代碼:
#    sec.name source     community
com2sec notConfigUser default    public

"comunity"字段改爲你要設置的密碼.比如"bizcnpublic".
“default”改爲你想哪臺機器可以看到你的snmp信息,10.10.10.10。授權服務器IP

2
、查找以下字段:代碼:
####
# Finally, grant the group read-only access to the systemview view.
#    group     context sec.model sec.level prefix read  write notif
access notConfigGroup ""   any    noauth  exact systemview none none

"read"字段改爲all.
代碼:
#access notConfigGroup ""   any    noauth  exact all none none

3
、查找以下字段:代碼:
##      incl/excl subtree             mask
#view all  included .1                80
將該行前面的"#"去掉.
4、查找以下字段:代碼#
#name           incl/excl     subtree         mask(optional)
添加一行view    all           included   .1
變成
#name           incl/excl     subtree         mask(optional)
view    all           included   .1
 
4、查找一下字段:代碼
#view mib2   included .iso.org.dod.internet.mgmt.mib-2 fc
將該行前面的"#"去掉.

保存關閉.

4
、運行/etc/init.d/snmpd start命令運行snmpd.
5
、如果有防火牆,打開UDP 161端口。
最後運行netstat -ln查看161端口是否打開了.

使用ntsysv,讓snmp服務,每次開機自動運行。
如果沒有安裝snmp服務,請在RH的安裝光盤上找到net-snmp.rpm,再安裝。

五、測試
打開本機的SNMP服務,
打開http://IP/cacti
默認CactiLocalHost的四項參數,直接可以查看了。

六、排錯
1.
首先檢查一下rra/下面,有沒有數據,如果沒有檢查rra/ log/的擁有者是不是cactiuser
2. snmpwalk -v 2c -c public ServerIP if
用來測試被控對象(serverIP)是否開啓了SNMP服務
3. snmpwalk -v 2c ServerIP -c public .1.3.6.1.4.1.2021.10.1.3
查看被控端是否有CPU負載的數據返回
4. /usr/local/bin/php /home/wwwroot/cacti/poller.php
用來測試PHP是否可以採集到數據。如果上面的都正確,但這步出錯,很有可能是PHP配置的問題,或開啓了SuLinux
5.
如果按第2snmpwalk能採集到數據,但第3步無法採集,可能是PHP設置的問題,修改PHP.ini,很有可能是PHP權限問題。如果第4步正常而無法顯示圖,則可能是rra/ log/ Owner不對
 
 
 
Cacti + rrdtool 非常靈活,可以使用到非常廣的範圍,但是很多需要自己寫插件和模板,現在對cactirrdtool的研究還處中初級階段!要想好好利用這個工具,也得費一番心思!
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章