自己開設了一個網站http://zjsx0575.vicp.net,但是想知道當前網站的流量情況,我們可以安裝 MRTG 這套軟體經由網頁來監看網路流量。MRTG 會去收取 SNMP (Simple Network Management Protocol) 所產生的資料,因此所要記錄的機器必須要安裝 SNMP。在你的主機上安裝 MRTG 後,你不僅可以收集自己的流量資料,也可以收集區域網路絡上其它可以接收到的 SNMP 資料。因此在安裝MRTG流量分析軟體前首先必須要安裝SNMP軟體。這兩個軟體都可以在PORTS下安裝。
我們使用 ports 來安裝 SNMP:
# cd /usr/ports/net/net-snmp# ake install clean
安裝完成後,我們必須要先新增一個可以讀取 SNMP 資訊的 community name。所謂的 community name 是一個明碼的字串,我們可以將它視為 management station 和 agent 之間的密碼,是 MRTG 和 net-SNMP 溝通時必須要先傳送的字串。我們可以依不同的網域或主機給予不同的許可權,依 community name 的設定來決定不同許可權。一個網路組件可以有多個 community name,一般 SNMP Agent 所預設公開的 community name 是 public。我們不一定要將 community name 設定為 public,因為 public 是一般 SNMP 的預設值,為了安全的問題,我們不將它設為 public。這裡我們將設定 community name 為 mrtg,而且只有 read only 的許可權。
要設定 community name 請先新增一個文字檔案 /etc/snmpd.config(這個檔案對於不同的使用者安裝不同的目錄) 並加入下列設定:
採用ee snmpd.config開啟檔案你會發現
# $FreeBSD: src/etc/snmpd.config,v 1.1.4.2 2006/03/31 12:47:50 glebius Exp $
#
# Example configuration file for bsnmpd(1).
#
#
# Set some common variables
#
host := foobar
location := "Room 200"
contact := "10.33.250.2"
system := 1 # FreeBSD
traphost := localhost
trapport := 162
# Change this!
read := "public"
# Uncomment line 42 that sets the community string to enable write access.
write := "geheim"
trap := "mytrap"
#
# Configuration
#
%snmpd
begemotSnmpdDebugDumpPdus = 2
begemotSnmpdDebugSyslogPri = 7
#
# Set the read and write communities.
#
# The default value of the community strings is NULL (note, that this is
# different from the empty string). This disables both read and write access.
# To enable read access only the read community string must be set. Setting
# the write community string enables both read and write access with that
# string.
#
# Be sure to understand the security implications of SNMPv2 - the community
# strings are readable on the wire!
#
begemotSnmpdCommunityString.0.1 = $(read)
# begemotSnmpdCommunityString.0.2 = $(write)
begemotSnmpdCommunityDisable = 1
# open standard SNMP ports
begemotSnmpdPortStatus.[$(host)].161 = 1
begemotSnmpdPortStatus.127.0.0.1.161 = 1
# open a unix domain socket
begemotSnmpdLocalPortStatus."/var/run/snmpd.sock" = 1
begemotSnmpdLocalPortType."/var/run/snmpd.sock" = 4
# send traps to the traphost
begemotTrapSinkStatus.[$(traphost)].$(trapport) = 4
begemotTrapSinkVersion.[$(traphost)].$(trapport) = 2
begemotTrapSinkComm.[$(traphost)].$(trapport) = $(trap)
rocommunity mrtg
sysContact = $(contact)
sysLocation = $(location)
sysObjectId = 1.3.6.1.4.1.12325.1.1.2.1.$(system)
snmpEnableAuthenTraps = 2
#
# Load MIB-2 module
#
begemotSnmpdModulePath."mibII" = "/usr/lib/snmp_mibII.so"
# Force a polling rate for the 64-bit interface counters in case
# the automatic computation is wrong (which may be the case if an interface
# announces the wrong bit rate via its MIB).
#%mibII
#begemotIfForcePoll = 2000
#
# Netgraph module
#
#begemotSnmpdModulePath."netgraph" = "/usr/lib/snmp_netgraph.so"
#
#%netgraph
#begemotNgControlNodeName = "snmpd"
#
# pf(4) module
#
#begemotSnmpdModulePath."pf" = "/usr/lib/snmp_pf.so"
上述設定中,mrtg 為唯讀 community name,Office 是您機器所在位置,而 syscontact 所接的字串是您的 Eamil。另外,我們還必須在 /etc/rc.conf 中加入下列這一行:
snmpd_enable="YES"
接著,請執行 /usr/local/etc/rc.d/snmpd.sh start 來啟動 snmpd,如果出現錯誤則 cd /usr/local/etc/rc.d/,將 snmpd.sh 原本的內容刪除,並加入下列這一行:
/usr/local/sbin/snmpd
接著再執行 /usr/local/etc/rc.d/snmpd.sh 便可啟動 SNMP。
安裝 MRTG
我們使用 ports 來安裝 MRTG:
# cd /usr/ports/net/mrtg# make install
接著要產生 MRTG 的設定檔
# cd /usr/local/etc/mrtg# rehash# cfgmaker mrtg@alexwang.com >mrtg.cfg
這裡的 mrtg 是我們在安裝 net-snmp 時所設定的值。如果你使用錯的 community name,你可能會從要記錄的裝置上得到錯誤響應。而 alexwang.com 是你所要記錄的主機位置。mrtg.cfg 就是所要產生的設定檔名。
如果您想要記錄多個主機,只要在 cfgmaker 時多加入主機名稱即可,例如:
# cfgmaker mrtg@alexwang.com public@dns1.alexwang.com >mrtg.cfg
這樣就會同時記錄上面二台主機的流量了。
產生基本的設定檔後,我們可以再編輯剛才產生的設定檔 ee mrtg.cfg,在檔案開頭的部份加入一些客制化的設定:
# 如果要使用中文的 MRTG 則加入下面這一行Language: big5# 設定你的 MRTG 要放在哪個目錄,應該要放在網頁可以# 連結到的地方,我的網頁根目錄是 /home/www,所以我將# MRTG 放在下面的目錄。WorkDIR:/home/www/mrtg# 預設的 MRTG 所產生的圖時間是由右到左# 我喜歡由左到右,故加入下面這一行Options[_]: growright |
接著請建立一個你在 mrtg.cfg 中設定的 WorkDIR 的目錄:
# mkdir /home/www/mrtg
然後使用指令 indexmaker 來建立 MRTG 的首頁:
# indexmaker -title '流量統計' -output /home/www/mrtg/index.html mrtg.cfg
這裡的參數 -title 是該 index.html 檔的 title,而 -output 就是要輸出的檔案位置,預設是stdio(通常指的是螢幕) 。
輸出的檔案 index.html 你也可以使用其它的網頁編輯軟體再去修改美化它。接下來要將MRTG的一些圖片檔案複製到 mrtg 的目錄裡:
# cd /usr/ports/net/mrtg/work/mrtg*# cd images# cp * /home/www/mrtg/
最後啟動 mrtg:
# /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
第一次執行上面的指令可能會有一些錯誤訊息,不要理它,因為是第一次執行 mrtg,所沒有一新舊的圖,只要再多執行幾次就好了。沒問題之後,使用指令 crontab -e 來把上述指令每 5 分鐘執行一次,加入下面這一行:
*/5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg |
現在你可以使用 http://yourserver/mrtg 來連去看看。最後別忘了移除安裝過程的暫存檔:
# cd /usr/ports/net/mrtg/# make clean