轉:rrdtool強大的繪圖的引擎

雲.智發表於2007-08-16

基於RRDTOOL+CACTI效能監視系統的架構
linux寶庫 收集整理  作者:ipaddr  時間:2007-02-09  收藏本站
   
 
 
 
 
來自:linux寶庫
聯絡:linuxmine#gmail.com
分類:[網路監控]

<script src=”http://cpro.baidu.com/cpro/ui/ui.js” type=”text/javascript”>
</script>

baidu

<iframe width=”559″ scrolling=”no” height=”120″ frameborder=”0″ src=”http://cpro.baidu.com/cpro/ui/uijs.php?&amp;uid=353007&amp;n=linuxpk_cpr&amp;tm=20&amp;cm=76&amp;um=26&amp;rsi0=559&amp;rsi1=120&amp;wn=1&amp;hn=4&amp;rssl0=right&amp;rssl1=bottom&amp;rsi2=0&amp;rss0=%23ffffff&amp;rss1=%23ffffff&amp;rss2=%230000cc&amp;rss3=%23000000&amp;rss4=%230000cc&amp;rss5=%23ffffff&amp;rad=1&amp;word=http%3A%2F%2Fwww.linuxpk.com%2F1843.html&amp;fv=9&amp;cn=1&amp;refer=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fhl%3Dzh-CN%26newwindow%3D1%26rlz%3D1B3GGGL_zh-CNCN232CN233%26q%3Drrdtool%26btnG%3DGoogle%2B%25E6%2590%259C%25E7%25B4%25A2%26meta%3D” allowtransparency=”1″ marginheight=”0″ marginwidth=”0″></iframe>
一、概述
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寫一套系統。幸運的是,半年前我找到了cacti(www.cacti.net)。對該工具我只有一個字形容:“great!”。
cacti 其實是一套php程式,它運用snmpget採集資料,使用rrdtool繪圖。它的介面非常漂亮,能讓你根本無需明白rrdtool的引數能輕易的繪出 漂亮的圖形。更難能可貴的是,它提供了強大的資料管理和使用者管理功能,一張圖是屬於一個host的,每一個host又可以掛載到一個樹狀的結構上。使用者的 管理上,作為一個開源軟體,它居然做到為指定一個使用者能檢視的“樹”、host、甚至每一張圖,還可以與LDAP結合進行使用者的驗證!我不由得佩服作者考 慮的周到!Cacti還提供自己增加模板的功能,讓你新增自己的snmp_query和script!可以說,cacti將rrdtool的所有“缺點” 都補足了!

三、監控管理工作站配置
採用Linux系統,CACTI要用到Net-SNMP,RRDTool,Aapche,PHP,Mysql,以下是安裝過程:
1. 安裝Apache+Mysql+PHP
安裝過程比較簡單,參考其它的資料,需要注意的是,PHP最好加上SNMP支援,編譯的時候,加上—enable-snmp
注意。PHP不能執行在安全模式,否則,Cacti工作不正常。無法呼叫/usr/local/bin/下面的程式。
2. 安裝rrdtool
官方網站: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相比,rrdtool自帶了gd庫,所以不用先安裝gd庫.(不過由於rrdtool自帶的gd庫不支援中文,所以rrdtool畫出來的圖也不能有中文,否則會出現亂碼).

注意:rrdtool1.2的版本由於已經不再自帶外部的lib庫(如cgilib,zlib等),所以需要從http: //people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/下載這些庫來安裝。建議還是使用 1.0的版本,比較方便。

安裝完後,執行rrdtool看是否正確,
如果執行不成功,提示命令不存在,則需要將所有RRDTool的可執行檔案,拷到/usr/local/bin
cp /usr/local/rrdtool/bin/* /usr/local/bin

3. 安裝Net-SNMP
RH下面,安裝了SNMP服務,但好象沒有snmpwalk,snmpget這兩個命令,所以需要安裝NET-SNMP。NET-SNMP官方網站:http://www.net-snmp.org/
下載net-snmp-5.1.3.1.tar.gz
tar zxvf net-snmp-5.1.3.1.tar.gz
cd net-snmp-5.1.3.1
./configure
make
make install
執行snmpget,snmpwalk測試是否安裝成功
RPM包的snmpwalk的名稱是:net-snmp-utils.*.rpm,也可以從安裝光碟上RPM安裝。
4. 安裝CACTI
官方網站:http://www.cacti.net/
a) 安裝cacti原始檔
下載cacti-0.8.6f.tar.gz
將這個壓縮包解壓到網站根目錄
#cp cacti-0.8.6f.tar.gz /usr/local/apache2/htdocs
#cd /usr/local/apache2/htdocs
#tar xzvf cacti-0.8.6f.tar.gz
#mv cacti-0.8.6f 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
配置Cacti連線資料庫
#vi /usr/local/apache2/htdocs/cacti/include/config.php

$database_type = “mysql”;
$database_default = “cactidb”;
$database_hostname = “localhost”;
$database_username = “cacti”;
$database_password = “password”;
c) 定時crontab執行cacti的收集資料程式
#vi /etc/crontab
*/5 * * * * /usr/local/bin/php /usr/local/apche2/htdocs/cacti/poller.php > /dev/null 2>&1

d) 配置Cacti
在瀏覽器上輸入:
http://IP/cacti
進入cacti的初始設定頁面:
在這裡我們要輸入一些原始的資訊:

NEXT -》
輸入一些資訊,如rrdtool、php、snmpwalk、snmpget的位置,使用ucd-snmp還是net-snmp等 -》
輸入原始的使用者和密碼:admin/admin -》
更改admin使用者的密碼 -》
點選 Save

安裝完成!!!
現在可以在瀏覽器中進入Cacti的世界了!
5. 測試

四、被監控端配置
大部分情況下,我們監控的是伺服器,以RedHat Linux為例,看看如何開啟SNMP服務。
只有開啟了SNMP服務,監控端才可以收集資料。
開啟預設的/etc/snmp/snmp.conf檔案,更改如下配置:
1、查詢以下欄位:
程式碼:
# sec.name source community
com2sec notConfigUser default public

將”comunity”欄位改為你要設定的密碼.比如”public”.
將“default”改為你想哪臺機器可以看到你的snmp資訊,如10.10.10.10。

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 all none none

將”read”欄位改為all.
程式碼:
#access notConfigGroup “” any noauth exact systemview none none

3、查詢以下欄位:程式碼:
## incl/excl subtree mask
#view all included .1 80
將該行前面的”#”去掉.

儲存關閉.

4、執行/etc/init.d/snmpd start命令執行snmpd.
5、如果有防火牆,開啟UDP 161埠。
最後執行netstat -ln檢視161埠是否開啟了.

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

五、測試
開啟本機的SNMP服務,
開啟http://localhost/cacti
預設Cacti有LocalHost的四項引數,直接可以檢視了。

六、排錯
1. 首先檢查一下rra/下面,有沒有資料
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 /usr/local/apche2/htdocs/cacti/poller.php 用來測試PHP是否可以採集到資料。如果上面的都正確,但這步出錯,很有可能是PHP配置的問題,或開啟了SuLinux。
5. 如果按第2步snmpwalk能採集到資料,但第3步無法採集,可能是PHP設定的問題,修改PHP.ini,很有可能是PHP許可權問題。

七、rrdtool1.2的安裝
1.2版的rrdtool畫出的圖,比1.0的要漂亮些.1.0用的是GD畫圖,1.2用的是libart和freetype畫圖.1.2的畫圖會慢一點.
1.2版的安裝,可以見http://bbs.chinaunix.net/forum/viewtopic.php?t=552224
上面的安裝比較麻煩,需要裝不少庫,其實,可以,可以直接RPM安裝,RedHat的系統,直接從安裝光碟上找到這幾個庫,安裝就可.主要的包有:
libart_lgpl
libart_lgpl-devel
libpng
libpng-devel
zlib
zlib-devel
freetype
freetype-devel
找到上面這些包,直接rpm –ivh *.rpm
cgilib好象沒有,而且,從rrdtool官方網站下載的cgilib無法安裝.我們也不需要rrdcgi,所以,可以不考慮了.
安裝完後,解壓1.2版的rrdtool
./configure –prefix=/usr/local/rrdtool –disable-rrdcgi
make
make install
cp /usr/local/rrdtool/bin/* /usr/local/bin/

參考:
RRDTOOL教學 http://www.study-area.org/tips/rrdtool/rrdtool.html
使用cacti監測系統效能 http://bbs.chinaunix.net/forum/viewtopic.php?t=594019

 


相關文章