RRDtool 是原 MRTG 作者另外開發的套件,它可將系統吐出來的資料做 logging 並繪製成圖表
而系統所吐出來的資料是 based on SNMP ( Simple Network Management Protocol ),所以只要是支援 SNMP 的設備都可以用 RRDtool 來做記錄與分析
不過仔細看了一下 RRDtool 操作的語法算小複雜,因此本篇教學會再搭配 Cacti 來協助控制 RRDtool 繪製報表
我的安裝環境如下
[ 安裝所需套件 ]
首先我們先安裝 RRDtool
# cd /usr/ports/databases/rrdtool
# make install clean
接下來安裝 Net-SNMP,因為 Cacti 需利用 Net-SNMP 裡的 snmpwalk 和 snmpget 這二個指令進行資料採集,所以這個是必裝的
# cd /usr/ports/net-mgmt/net-snmp
# make install clean
最後安裝 Cacti
# cd /usr/ports/net-mgmt/cacti
# make install clean
上述三個套件安裝完之後,就可以開始來設定囉!
[ 設定 SNMP ]
首先先來設定 SNMP 的部份
# cd /usr/local/share/snmp
# vi snmpd.conf
snmpd.conf 內容如下
rocommunity MySNMP // 設定 SNMP Read-Only 的 Community
syslocation MyOffice // 系統所在地
syscontact bojack@gmail.com // 管理者 E-mail
另外請在 /etc/rc.conf 加入一行 snmpd_enable="YES"
加好了之後就來啟動 SNMP 吧
# /usr/local/etc/rc.d/snmpd start
[ 設定 Cacti ]
設定 Cacti 這部份看個人習慣,如果您已經有 phpMyAdmin 的話可以在裡面操作,或是透過指令方式來新建
原則上我們需要新建一個 Database、User 讓 Cacti 可以存放相關資料
指令操作如下,新增一個 Database 名稱為 cacti
# mysqladmin -u root -p create cacti
Enter password: 輸入 Root 的密碼
新增一個 User 名叫 cacti 讓它可以存取 cacti 這個 Database,密碼設定為 justforcacti
# mysql -u root -p
Enter password: 輸入 Root 的密碼
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.92-log FreeBSD port: mysql-server-5.0.92
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'justforcacti';
Query OK, 0 rows affected (0.02 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
接下來我們要倒入 Database 相關的 Schema
# mysql -u cacti -p cacti < /usr/local/share/cacti/cacti.sql
Enter password: 以本教學為例輸入 justforcacti
Database 的 Schema 建好之後,接下來我們來去設定程式的部份
# cd /usr/local/share/cacti/include/
# vi config.php
config.php 內容如下,原則上要改的地方就只有 username 跟 password 而已
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "justforcacti";
$database_port = "3306";
/* Default session name - Session name must contain alpha characters */
#$cacti_session_name = "Cacti";
接下來新增排程設定,固定每 5 分鐘讓 Cacti 去取得資料
# crontab -u cacti -e
加入這一行即可
*/5 * * * * /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1
接下來我們要在 Apache 裡面設定 Cacti 的路徑
# vi /usr/local/etc/apache22/httpd.conf
在 httpd.conf 加入下面這幾行
Alias /cacti "/usr/local/share/cacti/"
<Directory "/usr/local/share/cacti/">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
好了之後要重新啟動 Apache 讓它生效
# /usr/local/etc/rc.d/apache22 restart
[ 初始化 Cacti ]
網址列請打入 http://您的 IP or Domain/cacti,連結成功後第一次應該會有個初始化的動作,直接 Next
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314597228-4043744491.png&width=515&height=428)
由於我們是新安裝,所以請選 New Install
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314597228-540456545.png&width=513&height=270)
這一頁原則上請確認相關會用到的程式都是 [OK: FILE FOUND] 的情況就可以按 FINISH 了
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314597229-3861575183.png&width=516&height=659)
最後會到登入的頁面,預設的帳號密碼是 admin,密碼也是 admin
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314597229-2375605211.png&width=425&height=252)
第一次登入時會強制要求改密碼
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314597918-3436690906.png&width=416&height=280)
[ 新增一台監控設備 ]
來為我們的系統新增一台要監看的設備吧,我是選了一台 Cisco 6509 ~ 咱們家的 Core Router
選擇畫面中的 Create devices for network
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314598280-2036725689_m.png&width=450&height=228)
點選上方 Device 右邊的 Add
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314598835-2636034785_m.png&width=450&height=227)
這次是新增一台 Cisco Router 6509,依序填入相關的資訊
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314600639-1081179060_m.png)
新增成功後系統就會透過 SNMP 相關指令去截取一些資訊回來,接下來我們點選右邊的 Create Graphs for this Host
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314600639-2528136999_m.png)
要產生的圖片分二種,一種是系統已訂好的樣版,另一種是透過 SNMP 產生的資訊,我想先監看 6509 往防火牆的那個介面
因此選擇下方的 SNMP - Interface Statistics
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314600639-4171141547_m.png&width=450&height=274)
勾選我想看的 GigabitEthernet Gi7/1 介面,右下角選 In/Out Bytes with Total Bandwidth 後按 Create
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314600639-1238905472_m.png)
新增好之後點選左邊的 Graph Management 就可以看到我們剛才新增的圖表,可以點選進去修改一下
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314600640-3302054065_m.png&width=450&height=179)
修改一下 Title 的部份為 Cisco 6509 往防火牆,好了之後按 Save
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314600640-2233960536_m.png&width=450&height=272)
點選上面的 graphs 後可以看到總共有右邊三個類型可選,Tree View、List View及Preview View
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314600640-1292263345_m.png)
點選左上方的圖進去後就可以看到 Cisco 6509 往防火牆的流量
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314600640-200311119_m.png&width=450&height=233)
這時應該會發現中文字怎麼都不見了吶!
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314600641-999634239_m.png&width=450&height=173)
這問題困擾了我一個下午,原則上解決的問題非常非常簡單,Cacti 或 RRDtool 什麼都不用改
就只是 FreeBSD 裡面沒有中文字型罷了,所以就去 Ports 裡面裝就解決了
# cd /usr/ports/chinese/font-std
# make install clean
至於 Cacti 還有一些外掛可以裝,就請自行連過去看看囉
參考資料
[1] 不自量力的 Weithenn - RRDTool-各項數據流量統計
http://pic.pimg.tw/bojack/1314597229-3861575183_m.png
![](https://imageproxy.pixnet.cc/imgproxy?url=https://pic.pimg.tw/bojack/1314597229-3861575183.png&width=516&height=659)