Synology NAS 改機教學 Part 4:vnStat樂勝之卷

本來我只打算寫三部曲…
但是昨晚朋友跟我說MRTG只能看流量曲線圖和一定時間的平均傳輸速度
不能像DD-WRT那樣子明確的看出一天總共傳輸量
對於整天掛網抓檔來的人來說還是看像DD-WRT一樣的直條統計圖比較有爽度和成就感吧!(如下圖)
Synology NAS 改機教學 Part 4:vnStat樂勝之卷
為了滿足畜牧業者的爽度和成就感就有了第四卷
感覺上叫四部曲怪怪的…所以改叫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 NAS 改機教學 Part 4:vnStat樂勝之卷
試過和螢幕解析度無關,開再大都是那麼小一個框(寬度會改變,但高度是定死的)
我跟Synology反應看看能不能在下次改版把這討厭的高度限制拿掉
不能一次顯示完整的資訊感覺實在不太好,所以乾脆另開分頁
不知道各參數定義什麼東西的話請回去看MRTG之卷有解釋
一樣把圖示用File Station丟進public共用資料夾
cp /volume1/public/*.png /usr/syno/synoman/webman/3rdparty/vnstat
這樣就算完成啦!去登入DSM看看成果吧!
Synology NAS 改機教學 Part 4:vnStat樂勝之卷
因為改成popup所以會另開一個分頁
Synology NAS 改機教學 Part 4:vnStat樂勝之卷
Synology NAS 改機教學 Part 4:vnStat樂勝之卷
Synology NAS 改機教學 Part 4:vnStat樂勝之卷
Synology NAS 改機教學 Part 4:vnStat樂勝之卷
一切順利沒問題的話應該就像上面的圖一樣
如何?不比DD-WRT的差吧!還可以依照每小時、每天、每月來分別顯示
這可是DD-WRT辦不到的喔!
同樣附上我使用的圖示
有問題再一起提出來討論吧!

我自己從開始到結束只花不到半小時(包括中途debug的時間)
有了MRTG與phpSysInfo的經驗再來裝vnStat絕對是輕鬆樂勝啦!

謝謝收看,PC與NAS大家都是好朋友
親愛的大大:
感謝你的文章,讓我受益良多,有一個問題想請教?
我的機器是 CS407 照你的步驟做完後出現以下的錯誤,也沒有出現圖。可以請教一下CS407可以使用 vStat PHP Frontend 嗎?
謝謝!

Notice: Undefined index: totalrx in /usr/syno/synoman/webman/3rdparty/vnstat/index.php on line 77
Notice: Undefined index: totalrxk in /usr/syno/synoman/webman/3rdparty/vnstat/index.php on line 77
Notice: Undefined index: totaltx in /usr/syno/synoman/webman/3rdparty/vnstat/index.php on line 78
Notice: Undefined index: totaltxk in /usr/syno/synoman/webman/3rdparty/vnstat/index.php on line 78
努力研讀單眼數位相機聖經的菜鳥!
winchi72 wrote:
親愛的大大: ...(恕刪)

CS407應該是可以正常使用沒問題的
會出現你那樣的錯誤訊息就表示php.ini設定檔有問題
剛才發現我漏寫了重新啟動Apache服務這一步驟
已補上,請您確認php.ini已修改之後重新啟動Apache服務再試試看吧!
P2P精神:我餵人人,人人餵我
感謝大大的回復!
經過測試!結果還是一樣
CS407有這麼悲哀嗎?
三種改機功能只有 phpSysInfo 成功!
不過沒關係!希望大大能夠多提一些改機的說明!我會努力得一個一個實驗。
雖然對 LINUX 不是很懂!
努力研讀單眼數位相機聖經的菜鳥!
winchi72 wrote:
感謝大大的回復!經過...(恕刪)

phpSysInfo能夠正常的話vnStat應該不太可能會出錯才對
除了php.ini那兩行後面要確實的刪掉連空白也不要留之外(改完一定要重新啟動Apache服務才會生效)
檢查一下你config.php的內容吧!
再不行把設定檔丟給我來試好了
P2P精神:我餵人人,人人餵我
努力研讀單眼數位相機聖經的菜鳥!
winchi72 wrote:
我又重新做了一次!結...(恕刪)

剛試過你的php.ini和config.php這兩個設定檔
直接套用在我的DS209+上很正常的說

有沒有其它人也有改的?
正常或是有問題都提出來讓我知道一下吧!
P2P精神:我餵人人,人人餵我
親愛的大大:
我已經試出來原因了
是我下面這個步驟作錯了

6.設定每分鐘自動更新統計資料
nano /etc/crontab
*/5 * * * * root sh /opt/bin/tps
*/1 * * * * root /opt/bin/vnstat -i eth0 -u

資料有更新才不會出現那個錯誤。

但是現在卻遇到一個問題,我所建立出來的資料檔的路徑放在
/opt/var/lib/vnstat/eth0

而config.php裡流量統計資料庫的儲存位置設定成
$data_dir = '/opt/var/lib/vnstat/';

數據資料有統計出來並且都有更新,但是圖形卻都出不來 不管是svg還是png都一樣,不知道是否我哪裡設定還有錯誤!
另外我發現 在 /etc/crontab 裡
*/5 * * * * root sh /opt/bin/tps
可以不用設定,這好像是硬碟溫度記錄用的。
網址如下monitor disks temperature
提供你參考。
努力研讀單眼數位相機聖經的菜鳥!
winchi72 wrote:
親愛的大大: ...(恕刪)

嗯~統計圖顯示不出來的…
既然你的流量記錄放在:/opt/var/lib/vnstat/eth0
那config.php的設定是不是應該改成:data_dir = '/opt/var/lib/vnstat/eth0';
兩者應該要一樣才不會出錯吧!

至於crontab你說可以不用加的那行
我沒裝RRDtool來統計溫度,那只是用來執行shell script而已
好像真的加不加都沒差?!
其實要監控硬碟溫度理論上用MRTG也是可以做的到,只是我沒有去試而已
P2P精神:我餵人人,人人餵我
親愛的大大:
感謝大大,非常棒的教學,期待大大更多精彩的分享

回報一個小問題

1.安裝vnStat的ipkg
pkg install vnstat (少了一個i)
ipkg install vnstat (應該是這樣吧!)

大大的圖示連結有誤(連到phpSysInfo的圖示了)

===============================

我也是使用CS407, 也遇到winchi72大大相同的問題

Notice: Undefined index: totalrx in /usr/syno/synoman/webman/3rdparty/vnstat/index.php on line 77
Notice: Undefined index: totalrxk in /usr/syno/synoman/webman/3rdparty/vnstat/index.php on line 77
Notice: Undefined index: totaltx in /usr/syno/synoman/webman/3rdparty/vnstat/index.php on line 78
Notice: Undefined index: totaltxk in /usr/syno/synoman/webman/3rdparty/vnstat/index.php on line 78

用nano編輯 /etc/crontab
*/1 * * * * root /opt/bin/vnstat -i eth0 -u
(那個-u不知為何會換行)
只好改用vi來編輯就OK了

並將config.php裡流量統計資料庫的儲存位置設定成
$data_dir = '/opt/var/lib/vnstat/';

做了以上的修改就大功告成了
(註: 我的CS407在改機3+1部曲都成功喔!)

再次感謝大大的精彩教學

關閉廣告

今日熱門文章 網友點擊推薦!

文章分享
評分
複製連結