基於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寫一套系統。幸運的是,半年前我找到了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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章