09.07
要用 MRTG 測量網路卡流量的話,需要先安裝 SNMP 服務。
指令:wajig install snmpd
指令:wajig install snmp
snmp – NET SNMP (Simple Network Management Protocol) Apps
snmpd – NET SNMP (Simple Network Management Protocol) Agents
這兩個是不同的東西,都裝起來。
在 /etc/snmpd/snmpd.conf 裡面有連絡人資訊,可以打上去,另外如果設不起來,就把原本的設定檔備份,另外 touch 一個檔案,內容寫 rocommunity public 即可(但是所有訊息都會顯示)。
兩者都安裝完成之後,可以使用 snmpwalk -c public -v 1 localhost 來測試,如果跑出訊息像下面這樣,就表示正確。
root@roga:/etc/init.d# snmpwalk localhost -c public -v 1
SNMPv2-MIB::sysDescr.0 = STRING: Linux roga.tw 2.6.18-5-686 #1 SMP Fri Jun 1 00:47:00 UTC 2007 i686
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (27743) 0:04:37.43
SNMPv2-MIB::sysContact.0 = STRING: roga
SNMPv2-MIB::sysName.0 = STRING: roga.tw
SNMPv2-MIB::sysLocation.0 = STRING: roga.tw
..下略
接著是安裝 MRTG
指令:wajig install mrtg
安裝完成之後,產生 mrtg.cfg ,位置是在 /etc/mrtg.cfg
有人喜歡用 cfgmaker 來產生 config 檔,但是我不喜歡,所以直接 touch 一個檔案來設定:
WorkDir: /var/www/log/mrtg
Target[eth0]: \eth0:public@localhost:
Refresh: 600
Interval: 5
MaxBytes[eth0]: 193000
Language: ansi
options[_]: bits, growright, transparent, printrouter, pngdate
PNGTitle[eth0]: roga.tw-eth0
XScale[eth0]: 1.8
YScale[eth0]: 1.8
LegendO[eth0]: eth0 out flow
LegendI[eth0]: eth0 in flow
Colours[eth0]: 1#FFCC00,2#336699,3#FF0000,4#00FF00;
SetEnv[eth0]: MRTG_INT_IP=”220.130.223.205″ MRTG_INT_DESCR=”eth0″
EMAIL=”roga@roga.tw”
HOST=”roga.tw”
Title[eth0]: roga.tw – eth0
PageTop[eth0]: roga.tw eth0
設定 ansi 因為 mrtg 在 utf-8 環境會運作不正常,當然也可以設定為 big5 ,這邊很多參數都很有趣,可以參考官方網站的解說 – mrtg-reference 。
接下來是產生 index 檔,使用 indexmaker
指令:indexmaker –output=/var/www/log/mrtg/index.html –title=’roga.tw Traffic Info’ /etc/mrtg.cfg
接下來跑 mrtg /etc/mrtg.cfg 即可,如果預設的 shell 環境是 utf-8 的話,必須要設定 LANG ,指令改為: env LANG=C /usr/bin/mrtg /etc/mrtg.cfg 即可
接著是把 mrtg 加入到 crontab 裡面:
指令 vi /etc/crontab
加入:
*/5 * * * * root mrtg /etc/mrtg.cfg > /dev/null 2>&1
(在 utf8 環境下指令變為 env LANG=C /usr/bin/mrtg /etc/mrtg.cfg)
這樣就大功告成了!
我的 log of roga.tw 網址:http://log.roga.tw/

我 cfgmaker 會出現
Can’t locate object method “new” via package “IO::Socket::INET” (perhaps you forgot to load “IO::Socket::INET”?) at /usr/share/perl5/SNMP_Session.pm line 630.
的錯誤訊息
可以請教這是什麼回事嗎
附註
手動寫 mrtg.cfg 後 mrtg /etc/mrtg.cfg 也會出現同樣問題
應該是 Perl Interpreter 方面的問題,看它的 MSG 應該是找不到 IO::Socket::INET 這個 module ,因為 MRTG 本身是用 Perl 寫的。
抱歉,沒有解決您的問題