要用 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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="你的IP" MRTG_INT_DESCR="eth0" EMAIL="roga@roga.tw" HOST="roga.tw" Title[eth0]: roga.tw - eth0 PageTop[eth0]: <H1>roga.tw eth0</H1> |
設定 ansi 因為 mrtg 在 utf-8 環境會運作不正常,當然也可以設定為 big5 ,這邊很多參數都很有趣,可以參考官方網站的解說 – mrtg-reference 。
接下來是產生 index 檔,使用 indexmaker
指令:
1 |
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)
這樣就大功告成了!
應該是 Perl 方面的問題,看它的 MSG 應該是找不到 IO::Socket::INET 這個 module ,因為 MRTG 本身是用 Perl 寫的。
抱歉,沒有解決您的問題 😐
附註
手動寫 mrtg.cfg 後 mrtg /etc/mrtg.cfg 也會出現同樣問題
我 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.
的錯誤訊息
可以請教這是什麼回事嗎