2007-02-10

流量統計工具 (RRDTool)

既然 Asus WL-500g 主要是一台網路設備,網路流量的統計數據就是一項很重要的資訊。在一般的伺服器上通常會跑像 MRTG (Multi Router Traffic Grapher) 的工具,而我們用的是 RRDtool (Round-Robin Database tool)。由於這個統計工具是透過 web + php 來展示的,而且要搭配 crontab 來定期收集資料,所以裝 RRDtool 之前記得要先安裝 PHP-enable 的 web server,還有 crontab 服務。確認以上套件都正確無誤後,安裝 RRDtool 的套件:

ipkg install rrdtool

這個套件 (1.2.14) 安裝完畢,還會連帶安裝像是 libart (2.3.17) 、freetype (2.1.10) 和 libpng (1.2.12),因為這些流量統計都是透過呼叫這些 library 即時產生出來的。安裝完套件一樣不需要改什麼設定,只要有一個 shell script 定期執行收集流量資料,然後產生統計圖表就行了。這個 shell 不用自己寫,可以下載或參考這個檔案,下載後上傳或是剪貼內容到 WL-500g 裡面就行了。不過記得,要修改一下統計網頁的產生目錄,編輯 rrdtool.sh 這個檔案並且修改圖片網頁的產生路徑 (RRDIMG),在你原來的網頁首頁路徑下再建一個目錄 rrd 就可以。假設你原來 web 的目錄在 /opt/public/www,你就可以修改 rrdtool.sh 指定成:

RRDIMG=/opt/public/www/rrd/

目錄不用手動建立,第一次產生資料時會自己產生(同樣的,對產生的網頁 layout 不滿意也可以自己手動調整 rrdtool.sh)。我們把 rrdtool.sh 這個檔案複製到 /opt/sbin 下面,另外再寫一個 shell 檔案用來呼叫它,檔名是 /opt/sbin/rrdrun.sh 檔案內容只有兩行(編輯完記得更改屬性成可執行檔):

#!/bin/sh
/opt/sbin/rrdtool.sh >> /opt/var/log/rrdtool.log

然後,我們再編輯我們的 crontab:

nano /opt/etc/crontab

每五分鐘收集一次資料,加入以下的紀錄:

*/5 * * * * admin /opt/sbin/rrdrun.sh

這樣每五分鐘就會透過 crontab 執行一次 rrdrun.sh,並且把記錄匯總到 log 檔裡,為節省系統資源,每次整點或半點才會重畫一次圖形。先別急,等個五到十分鐘,如果 crontab 沒問題有乖乖去執行,那麼你可以用瀏覽器查看自己的統計流量記錄,網址是 http://你的IP或網址/rrd,一切正確的話連過去你就會有圖形化的流量統計工具囉!

參考文章:
ASUS WL-Series RRDTool Tutorial

備註:
我發現,在 rrdtool.sh 裡面,被執行時是每十分鐘更新一次即時流量圖(Daily),每一個小時更新一次每週流量圖(Weekly),而每月和每年的的流量圖則是一天做一次(Monthly, Yearly),更新的時間和頻率可以自行調整,因為每次更新會重新產生 JPEG 流量圖,對系統 CPU 的 Loading 很大,而且要花一些時間,有時候上一筆 crontab 的工作還沒做完,下一筆就又來了,這也是之前我懷疑機器會當掉的一個因素,如果你也是用和我一樣 week 的 WL-500g (500gx 或更高檔版本可能會好一些),要裝這個服務可要自己微調一下~

回應: 3

Unknown 提到...

Abin兄:

又要來請教你了,已成功將USB換成4G,可以再撐一陣子了。

但這次遇到了2個先前沒遇過的問題:
1. 如你文中所述,系統REBOOT後,會自動MOUNT一個/tmp/harddik,所以,每次都會有2個一模一樣的裝置被mount,會不會影響呢?

2. 在跑RRD時,配合cron,會每隔5分鐘在/opt/var/log/rrdtool.log寫入流量紀錄,但卻一直無法產生圖檔(在/opt/public/www/rrd目錄中一直只有4個.html檔,但卻無法產生.png檔);我是安裝lighttpd + fastcgi,但無安裝microperl,這樣不行嗎?

以下為開機後執行PS所秀的程式列表:

admin@WL500g[/opt/public/www/rrd]:ps
PID Uid VmSize Stat Command
1 admin 188 S /sbin/init
2 admin SW [keventd]
3 admin RWN [ksoftirqd_CPU0]
4 admin SW [kswapd]
5 admin SW [bdflush]
6 admin SW [kupdated]
7 admin SW [mtdblockd]
46 admin 88 S klogd
47 nobody 268 S dnsmasq
49 admin 132 S syslogd -m 0 -O /tmp/syslog.log -S -l 7
50 admin SW [khubd]
63 admin SW [usb-storage-0]
64 admin SW [scsi_eh_0]
67 admin 68 S pppoe-relay -C br0 -S eth1 -F
81 admin 144 S pppd file /tmp/ppp/options.wan0
83 admin 292 S watchdog
86 admin 32 S ntp
111 admin SW [kjournald]
122 admin 280 S /opt/sbin/cron
128 admin 300 S /opt/sbin/xinetd
131 admin 200 S /opt/bin/php-fcgi -b 1026
142 admin 676 S /opt/sbin/lighttpd -f /opt/etc/lighttpd/lighttpd.conf
146 admin 236 S dropbear
193 admin 304 S httpd eth1
222 admin 192 S /opt/bin/php-fcgi -b 1026
8444 admin 372 S N vsftpd /opt/etc/vsftpd.conf
8446 admin 508 S N vsftpd /opt/etc/vsftpd.conf
8508 admin 476 S dropbear
8509 admin 456 S -sh
8515 admin 436 S N vsftpd /opt/etc/vsftpd.conf
8517 eva 524 S N vsftpd /opt/etc/vsftpd.conf
8939 admin 408 R ps
admin@WL500g[/opt/public/www/rrd]:

勞駕您了,Thanks!

Abin 提到...

To Beast: 你說的兩個問題我都有碰到過。關於第一個,可以確認一下你的 USB 碟第一個分割區是割 SWAP 還是資料碟 (ext2)?我以前碰到的狀況是第一個分割區我先割了 SWAP,不知為何,/tmp/harddisk 就一定會被 mount 起來,後來重割資料分割區先做,這個狀況就消失了,你可以試試看。不過同時被 mount 其實沒什麼關係(我之前沒發現問題前一直是這樣),覺得怪怪的話也可以在 post-boot 檔案裡加一行 umount 開機自動做。
第二個問題,可能是因為機器的運算能力太弱了,你可以用 top 命令查看一下,那個產生 png 檔的 process (rrdtool.sh) 有沒有再跑、是不是耗了很多 CPU 時間。
如果 top 裡面並沒有那個 process,請檢查你的 crontab 有沒有乖乖執行、rrdtool.sh 到底能不能用(手動執行,也會產生圖檔才是),RRD 和網頁伺服器用什麼關係應該不大,它其實只是產生一個網頁,然後透過工具產生網頁裡圖形檔,你的圖檔出不來可能是沒有執行到、執行有問題或是圖檔還在產生中,和伺服器應該沒有關係。
不過本文後面我也寫了備註,rrdtool 對系統的效能有一定的影響,所以要常常用 top 看看執行的效能和狀況,調整 crontab 的執行時點,不然,拖慢系統還可能會當機喔。

Unknown 提到...

感謝,小弟會再試試看,不行的話將RESET重新安裝試試!

張貼留言

歡迎留言或發表意見,不過要理性不做人身攻擊。匿名的朋友得到回應的速度會比較慢喔~
發問相關的禮貌和規矩請先參考這篇文章,不當留言、和本文無關的回應可能會被直接刪除無視喔!