環境說明:
作業系統:Centos 5.8_x86_64
cacti版本:cacti-0.8.8a
spine版本:cacti-spine-0.8.8a
說明:這裡隻介紹如何安裝配置cacti,并不涉及如何配置監控遠端主機。
<b>一、安裝依賴環境包:</b>
yum install httpd php php-mysql php-snmp mysql mysql-server net-snmp net-snmp-utils php-gd vixie-cron
如果為編譯安裝apache,需要指定--enable-sockets
yum install rrdtool --nogpgcheck
service mysqld start
service httpd start
service crond start
service snmpd start
chkconfig httpd on
chkconfig mysqld on
chkconfig snmpd on
chkconfig crond on
确定php擴充子產品:
mysql,SNMP,XML,Session,Sockets,GD,LDAP(如果安裝了php-ldap子產品的話)
給MySQL使用者root添加密碼:
mysqladmin --user=root password centos
<b></b>
二、安裝配置cacti
tar xf cacti-0.8.8a.tar.gz -C /var/www/html/
mv /var/www/html/cacti-0.8.8a /var/www/html/cacti
建立cacti資料庫
mysqladmin -uroot -p create cacti
如果是中文版則,需要如下指令建立
mysql> create database cacti default character set utf8;
導入sql語句
mysql -uroot -p cacti < /var/www/html/cacti/cacti.sql
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'centos';
mysql> flush privileges;
vim /var/www/html/cacti/include/config.php <<
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "centos";
useradd cacti
cd /var/www/html/cacti
chown -R cacti rra/ log/
echo "*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &> /dev/null" > /var/spool/cron/cacti
注意:首次執行poller.php時應使用cacti使用者,否則生成的rrd檔案cacti将沒有寫入權限!
<b>三、配置snmp使可以監控本機</b>
vim /etc/snmp/snmpd.conf <<
com2sec notConfigUser default public ==> 改為
com2sec notConfigUser 127.0.0.1 public
<b>四、配置使用spine來執行擷取資料</b>
依賴關系:
mysql-devel
net-snmp-devel
編譯安裝
tar -xf cacti-spine-0.8.8a.tar.gz -C /usr/src/
cd /usr/src/cacti-spine-0.8.8a/
./configure
make && make install
提供配置檔案
cd /usr/local/spine/etc/
cp spine.conf.dist spine.conf
vi spine.conf >> 修改一下内容
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass centos
DB_Port 3306
DB_PreG 0
啟用spine
登入cacti的網頁,點選Settings,在頁面上方點選Paths,找到Alternate Poller Path,寫入spine的路徑:/usr/local/spine/bin/spine,然後點選Save儲存。
再點選頁面上方的Poller,找到Poller Typer項,在下拉清單中選擇spine,然後點選Save儲存。
通過浏覽器通路http://serverip/cacti
<b>五、被監控端配置</b>
yum install net-snmp
vim /etc/snmp/snmpd.conf ==>
com2sec notConfigUser 192.168.56.201(監控端IP) public
view all included .1 80
access notConfigGroup "" any noauth exact all none none
<b>六、相關知識點</b>
測試snmp通過如下指令:
snmpwalk -v 2c -c public localhost system
模版:
圖形模版:圖是如何繪制
資料模版:定義如何擷取資料及儲存方法
主機模版:歸好類的圖形和資料模版
擷取資料-->儲存資料-->繪圖
自定義順序:
1、定義腳本收集資料,執行腳本輸出結果為:XXX:0-9 XXX:0-9
Name:輸入資料收集方法名稱
InputType:擷取資料的方法
InputString:/bin/bash <path_cacti>/scripts/xx.sh <hostname> <snmp_community>
建立完成後,添加輸入字段和輸出字段:
輸入字段為腳本引用的各個變量
輸出字段為腳本執行後生成的各個字段,名字要和輸出的名字一緻
2、定義資料模版
根據輸出字段添加各自的資料源
3、定義資料源
4、定義圖像模版
1、建立圖像模闆
Vertical Lable tcp_3 conn
2、添加圖像(Graph Template Items)
Text Format:該顔色線條的說明
Graph Item Type:圖像類型:
GPRINT:列印,類似目前值,最大值,平均值
COMMENT:顯示到圖形中的
4、圖形管理添加圖形
定義資料源所關聯的圖像
常用相關指令:
1、檢視一rrd檔案的最後一次或第一次的更新時間
rrdtool last localhost_load_1min_5.rrd | xargs -i date -d '1970-01-01 {} sec utc'
rrdtool first localhost_load_1min_5.rrd | xargs -i date -d '1970-01-01 {} sec utc'
2、檢視rrd檔案的内容
rrdtool fetch XXX.rrd AVERAGE
2、檢視rrd檔案結構資訊
rrdtool info XXX.rrd >>
filename = "eth0.rrd"
rrd_version = "0003"
step = 300 # RRDtool 希望每5分鐘收到一個資料
last_update = 1163862985 # 這是最近一次更新的 timestamp 。可以用 date 轉換為具體的時間
ds[eth0_in].type = "COUNTER" # 有一個名為 eth0_in 的 DS,DST是 COUNTER
ds[eth0_in].minimal_heartbeat = 600 # hearbeat 時間是600 秒
ds[eth0_in].min = 0.0000000000e+00 # eth0_in 的最小值是 0 (bytes)
ds[eth0_in].max = 1.2500000000e+07 # eth0_in 的最大值是 1250000000 (bytes)
ds[eth0_in].last_ds = "UNKN"
ds[eth0_in].value = 0.0000000000e+00
ds[eth0_in].unknown_sec = 85
ds[eth0_out].type = "COUNTER"
ds[eth0_out].minimal_heartbeat = 600
ds[eth0_out].min = 0.0000000000e+00
ds[eth0_out].max = 1.2500000000e+07
ds[eth0_out].last_ds = "UNKN"
ds[eth0_out].value = 0.0000000000e+00
ds[eth0_out].unknown_sec = 85
rra[0].cf = "AVERAGE" # 第一個 RRA 的編号是0,不是1。
rra[0].rows = 600 # 共儲存 600 個記錄
rra[0].pdp_per_row = 1 # 每個 CDP 由一個 PDP 統計得出
rra[0].xff = 5.0000000000e-01 # 隻要目前interval 的 PDP 為 unknown ,則該 CDP 的值也是unknown
rra[0].cdp_prep[0].value = NaN
rra[0].cdp_prep[0].unknown_datapoints = 0
rra[0].cdp_prep[1].value = NaN
rra[0].cdp_prep[1].unknown_datapoints = 0
rra[1].cf = "AVERAGE" # 第二個 RRA 的編号是 1。同樣也是 AVERAGE 型。
rra[1].rows = 600 # 也是儲存 600 個記錄
rra[1].pdp_per_row = 4 # 每個 CDP 由4個 PDP 的求平均值得出
rra[1].xff = 5.0000000000e-01 # 每個 CDP 最多允許2個 PDP 為 unknown ,超過則該 CDP 為unknown