但是昨晚朋友跟我說MRTG只能看流量曲線圖和一定時間的平均傳輸速度
不能像DD-WRT那樣子明確的看出一天總共傳輸量
對於整天掛網抓檔來的人來說還是看像DD-WRT一樣的直條統計圖比較有爽度和成就感吧!


為了滿足畜牧業者的爽度和成就感就有了第四卷

感覺上叫四部曲怪怪的…所以改叫Part 4吧!
依照貫例先來看vnStata官網介紹吧!
我大致翻譯一下好了:
幾年前作者覺得需要某種形式的網絡流量監測
使用MRTG一段時間後發現同樣的問題:無法統計每天倒底有多少流量
接著作者又試過ntop發現根本用不到那麼多功能
再來是darkstat雖然小的多,但使用一個星期之後發現packet sniffer並不是作者真正想要的
還會因此產生不必要的CPU負載和高網路流量,而且還必須以root權限執行
其實作者須要的東西很簡單,只要求單純和穩定就夠了,所以決定自己寫出vnStat
vnStat這小東西真的像作者講的一樣單純又穩定
也因為如此它本身沒有任何的GUI,一切都是用文字命令來執行與呈現
這不是本篇的重點,所以詳細指令介紹請看官網(其實是我懶的寫啦!)

看到這裡各位一定會想只能用文字命令來執行多麻煩啊!
每次想看流量統計還得先用SSH登入下指令才看的到

因為如此有了本篇主角vStat PHP Frontend的誕生
好奇的人可以先玩玩官網的Demo再往下看
這是一個以PHP寫成的GUI來表現出vnStat所得到的資料與數據
以下將開始進入正題教各位怎麼在Synology NAS上裝上這功能…(這次的廢話好像特別長?!

1.安裝vnStat的ipkg
ipkg install vnstat
這樣就算完成了,各位可以依照官網的說明下幾個指令試試看
可以用vnstat --help來看指令參數說明
vnstat -i eth0 -u
先建立流量統計資料庫
2.安裝vnstat PHP frontend
跟前幾卷一樣把從官網抓回來的vnstat PHP frontend用File Station丟到public共用資料夾底下
cd /usr/syno/synoman/webman/3rdparty
切換到第三方應用程式安裝目錄底下
cp /volume1/public/vnstat_php_frontend-1.4.1.tar.gz /usr/syno/synoman/webman/3rdparty
複製壓縮檔
tar -xzvf vnstat_php_frontend-1.4.1.tar.gz
解壓縮
mv vnstat_php_frontend-1.4.1 vnstat
把那又長又難打的目錄名稱改短
3.編輯config.php
nano /usr/syno/synoman/webman/3rdparty/vnstat/config.php
$iface_list = array('eth0');
只留下eth0就好,畢竟我的NAS只有一個RJ-45,若是高階機種有兩個的可以再添加
$iface_title['eth0'] = 'Fish';
Fish請自己換成你的NAS在LAN上的名稱
下面的eth1、sixxs可以直接刪掉或是在前面加//變成註解
$vnstat_bin = '/opt/bin/vnstat';
告訴vnStat PHP frontend系統的vnStat裝在哪裡
$data_dir = '/tmp/';
流量統計資料庫的儲存位置
$graph_format='svg';
設定使用SVG或是PNG來呈現圖片
不知道SVG是啥的請看wiki
DD-WRT用的即時流量曲線圖也是SVG,瀏覽器要有對應的plug-in才能正確顯示
IE天生沒有得去adobe官網下載plug-in來裝;FireFox、Google Chrome、Opera等已內建
define('DEFAULT_COLORSCHEME', 'light');
後面的light是定義網頁所呈現的色彩風格,有light和red兩種
不喜歡的話可以參照下面的設定自己定義一種新的風格也可以
4.修改php.ini
這步很重要,沒改的話會在網頁上出錯誤訊息
nano /usr/syno/etc/php.ini
找到safe_mode_exec_dir(第17行)把後面的通通刪掉,改成下面這樣:
safe_mode_exec_dir =
找到open_basedir(第20行)把後面的通通刪掉,改成下面這樣:
open_basedir =
後面什麼都不要有,保持空白
個人對php不是很了解不清楚這兩行是做啥的

了解php的高手麻煩幫我補完一下吧!
(因為跟Part 3裝phpSysInfo的改法一樣我就直接貼過來啦!)
5.重新啟動Apache服務
上面驟改完php.ini設定檔後要重新啟動Apache才會生效
當然不需要重新開機,用下面的指令讓Apache service重新啟動就好了
/usr/syno/etc/rc.d/S97apache-sys.sh restart
/usr/syno/etc/rc.d/S97apache-user.sh restart
6.設定每分鐘自動更新統計資料
nano /etc/crontab
*/5 * * * * root sh /opt/bin/tps
*/1 * * * * root /opt/bin/vnstat -i eth0 -u
必須用Tab來隔開,不可使用空白
corntab這個檔案就是用來設定Linux系統的例行性任務
標準的Linux系統每分鐘會去讀取一次crontab的內容,也因為如此最小更新間隔單位是"分鐘"
無法做到像DD-WRT那樣子即時更新
Synology NAS是把crontab載入記憶體裡面,所以改完之後請重新啟動crond服務
/usr/syno/etc/rc.d/S04crond.sh stop
/usr/syno/etc/rc.d/S04crond.sh start
(和Part 2設定MRTG每五分鐘更新的方法一樣,只是改成每分鐘都更新;當然也是貼過來的

7.和DSM管理介面整合
nano /usr/syno/synoman/webman/3rdparty/vnstat/application.cfg
text = vnStat
description = Network traffic statistics
description_cht = 網路流量統計
icon_16 = icon_16.png
icon_32 = icon_32.png
type = popup
path = /webman/3rdparty/vnstat/index.php
adminonly = true
這次我不用embedded改用popup另開分頁是因為DSM右邊的網頁frame實在太小了會擠成下面這樣子

試過和螢幕解析度無關,開再大都是那麼小一個框(寬度會改變,但高度是定死的)
我跟Synology反應看看能不能在下次改版把這討厭的高度限制拿掉

不能一次顯示完整的資訊感覺實在不太好,所以乾脆另開分頁
不知道各參數定義什麼東西的話請回去看MRTG之卷有解釋
一樣把圖示用File Station丟進public共用資料夾
cp /volume1/public/*.png /usr/syno/synoman/webman/3rdparty/vnstat
這樣就算完成啦!去登入DSM看看成果吧!


因為改成popup所以會另開一個分頁




一切順利沒問題的話應該就像上面的圖一樣
如何?不比DD-WRT的差吧!還可以依照每小時、每天、每月來分別顯示
這可是DD-WRT辦不到的喔!

同樣附上我使用的圖示
有問題再一起提出來討論吧!
我自己從開始到結束只花不到半小時(包括中途debug的時間)
有了MRTG與phpSysInfo的經驗再來裝vnStat絕對是輕鬆樂勝啦!
謝謝收看,PC與NAS大家都是好朋友
