Cacti安裝手冊php
第一步、 Cacti的架構html
第二步、 Cacti的工做流程python
第三步、 Cacti簡介mysql
1. cacti是用php語言實現的一個軟件,它的主要功能是用snmp服務獲取數據,而後用rrdtool儲存和更新數據,當用戶須要查看數據的時候用rrdtool生成圖表呈現給用戶。所以,snmp和rrdtool是cacti的關鍵。Snmp關係着數據的收集,rrdtool關係着數據存儲和圖表的生成。web
2. Mysql配合PHP程序存儲一些變量數據並對變量數據的調用如:主機名、主機ip、snmp團體名、端口號、模板信息等變量。sql
3. snmp抓到數據不是存儲在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目錄的rra文件夾下)。另外,當生成圖片時對採集的數據的處理方式:有gauge、counter、derive、absolute。參考如下例子:
類型:若是輸入數據依序爲 98 100 98: 數據庫
GAUGE(個別值,像CPU loading):產生圖形時畫 98 100 98 apache
COUNTER (累計值,像流量資料):產生圖形時畫 2 -2 網絡
DERIVE (累計值,像流量資料),小於0畫0:產生圖形時畫 2 0 架構
ABSOLUTE 如同 COUNTER,但 COUNTER 可能 overflow(數值過大),因此會取絕對值
補充說明,COUNTER/DERIVE/AVSOLVTE 雖是取差值,但會再除以兩次間隔間的秒數,如上 COUNTER 例,兩次間隔間爲 300 秒,那畫出來的就是 2/300,-2/300 的值
數據採集中能夠看到定義的是什麼數據類型:Counter和gauge
C:\usr\bin>snmpget -v 2c -c public 192.168.224.1 .1.3.6.1.2.1.6.5.0
TCP-MIB::tcpActiveOpens.0 = Counter32: 1927
C:\usr\bin>snmpget -v 2c -c public 192.168.224.1 .1.3.6.1.2.1.6.9.0
TCP-MIB::tcpCurrEstab.0 = Gauge32: 0
4. rrdtool對數據的更新和存儲就是對rrd文件的處理,rrd文件是大小固定的檔案文件(Round Robin Archive),它可以存儲的數據筆數在建立時就已經定義。
[root@localhost rra]# ls 220_181_11_156_mem_*
220_181_11_156_mem_buffers_30.rrd 220_181_11_156_mem_cache_31.rrd 220_181_11_156_mem_free_32.rrd
(能夠看出一個圖形對應好幾個rrd文件---即對應幾個數據源---但也能夠一個rrd文件包含幾個數據源)
具體RRDTool的知識見如下網頁:
使用Cacti監測系統與網絡性能:
http://hi.baidu.com/myfreezone/blog/item/7f00fd247d2411338744f9c3.html
RRDTool應用示例:
http://hi.baidu.com/myfreezone/blog/item/4720f0f280538e13b07ec5c1.html
對RRDTool的總結
http://hi.baidu.com/myfreezone/blog/item/18973aad8ad66b094b36d6f8.html
安裝rrdtool
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.2.11.tar.gz
因爲rrdtool1.2.11須要一些庫文件支持,故需先安裝配置支持的環境,而後編譯安裝。直接運行如下sh腳步就能夠完成安裝:
注意:將cgilib-0.5.tar.gz、zlib-1.2.2.tar.gz、libpng-1.2.8-config.tar.gz、freetype-2.1.9.tar.gz、libart_lgpl-2.3.17.tar.gz、rrdtool-1.2.11.tar.gz放到/root/rrdtool-1.2.11
將腳本保存爲/root/rrdtool-1.2.11/rrdtoolinstall,並給執行權限chmod 766 /root/rrdtool-1.2.11/rrdtoolinstall。
#!/bin/sh
BUILD_DIR=/root/rrdtool-1.2.11
INSTALL_DIR=/usr/local/rrdtool
cd $BUILD_DIR
tar zxf cgilib-0.5.tar.gz
cd cgilib-0.5
make CC=gcc CFLAGS="-O3 -fPIC -I."
mkdir -p $BUILD_DIR/lb/include
cp *.h $BUILD_DIR/lb/include
mkdir -p $BUILD_DIR/lb/lib
cp libcgi* $BUILD_DIR/lb/lib
cd $BUILD_DIR
tar zxf zlib-1.2.2.tar.gz
cd zlib-1.2.2
env CFLAGS="-O3 -fPIC" ./configure --prefix=$BUILD_DIR/lb
make
make install
cd $BUILD_DIR
tar zxvf libpng-1.2.8-config.tar.gz
cd libpng-1.2.8-config
env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
cd $BUILD_DIR
tar zxvf freetype-2.1.9.tar.gz
cd freetype-2.1.9
env CPPFLAGS="-I$BUILD_DIR/lb/include" LDFLAGS="-L$BUILD_DIR/lb/lib" CFLAGS="-O3 -fPIC" \
./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
cd $BUILD_DIR
tar zxvf libart_lgpl-2.3.17.tar.gz
cd libart_lgpl-2.3.17
env CFLAGS="-O3 -fPIC" ./configure --disable-shared --prefix=$BUILD_DIR/lb
make
make install
IR=-I$BUILD_DIR/lb/include
CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
LDFLAGS="-L$BUILD_DIR/lb/lib"
CFLAGS=-O3
export CPPFLAGS LDFLAGS CFLAGS
cd $BUILD_DIR
tar zxf rrdtool-1.2.11.tar.gz
cd rrdtool-1.2.11
./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl && make && make install
E.安裝net-snmp
Unix系統安裝的都是net-snmp或ucd-snmp(其實兩個都是同一組人寫的)。若是沒有安裝snmp,能夠到net-snmp.sourceforge.org上下載源碼編譯安裝。
我這裏說的安裝SNMP服務並非要求安裝SNMPD,實際上是Cacti須要用到net-snmp中的兩個命令――snmpwalk和snmpget進行數據的採集。咱們能夠直接在系統中運行snmpwalk和snmpget看是否有該命令,若是有則不用安裝了。
http://prdownloads.sourceforge.net/net-snmp/net-snmp-5.2.1.1.tar.gz
# tar zxf net-snmp-5.2.1.1.tar.gz
# cd net-snmp-5.2.1.1
#./configure --prefix=/usr/local/net-snmp --enable-developer
# make
# make install
安裝cacti
http://www.cacti.net/downloads/cacti-0.8.6f.tar.gz
# cp cacti-0.8.6f.tar.gz /usr/local/http/htdocs/
# cd /usr/local/http/htdocs/
# tar zxvf cacti-0.8.6f.tar.gz
# mv cacti-0.8.6f cacti
安裝cacti-cactid
http://www.cacti.net/downloads/cactid/cacti-cactid-0.8.6f-1.tar.gz
CACTID 的安裝須要如下支持:
· net-snmp-devel (須要編譯安裝net-snmp時添加--enable-developer選項)
· mysql
· mysql-devel (mysql源文件編譯安裝後默認支持)
· openssl-devel (redhat9.0默認安裝)
所以須要檢查是否具有安裝的環境。
# tar zxf cacti-cactid-0.8.6f-1.tar.gz
# cd cactid0.8.6-f1
# ./configure ;make
這是此目錄下你將看到cactid 和cactid.conf
# mkdir /usr/local/cactid
# cp cactid cactid.conf /usr/local/cactid/
H.安裝完成後配置cacti
1.配置apache
# vi /usr/local/http/conf/httpd.conf
加入 AddType application/x-tar .tgz
AddType application/x-httpd-php .php
AddType image/x-icon .ico
DirectoryIndex index.php index.html index.html.var
# /usr/local/http/bin/apachectl stop
# /usr/local/http/bin/apachectl start
編輯測試php文件 test.php內容以下:
<?
phpinfo();
?>
2.配置mysql
創建cacti需用的數據庫
# /usr/local/mysql/bin/mysql
mysql> create database cactidb;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on cactidb.* to root;
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on cactidb.* to root@localhost;
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on cactidb.* to cactiuser;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on cactidb.* to cactiuser@localhost;
Query OK, 0 rows affected (0.01 sec)
mysql> set password for cactiuser@localhost=password('cactipw');
Query OK, 0 rows affected (0.00 sec)
mysql> exit
# cd /usr/local/http/htdocs/cacti
# /usr/local/mysql/bin/mysql –u root cactidb < cacti.sql
3.配置cacti-cactid
# vi /usr/local/cactid/cactid.conf
DB_Host localhost
DB_Database cactidb
DB_User cactiuser
DB_Pass cactipw
4.配置cacti
# useradd cactiuser
# chown –R cactiuser rra/
# vi /usr/local/http/htdocs/cacti/include/config.php
$database_type = "mysql";
$database_default = "cactidb";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactipw";
爲cactiuser建立crontab
*/5 * * * * /usr/local/bin/php /usr/local/http/htdocs/cacti/poller.php > /dev/null 2>&1
5.完成配置
http://IP/cacti開始配置
默認用戶名密碼admin/admin
更改默認密碼
設定
snmpwalk Binary Path /usr/local/net-snmp/bin/snmpwalk
snmpget Binary Path /usr/local/net-snmp/bin/snmpget
RRDTool Binary Path /usr/local/rrdtool/bin/rrdtool
PHP Binary Path /usr/local/bin/php
Cacti Log File Path /usr/local/httpd/htdocs/cacti/log/cacti.log
Cactid Poller File Path /usr/local/cactid/cactid
另外,進入cacti後需確認更改一下位置:(以下圖)
Console>Settings>General
Console>Settings>Poller