作者:仇立環 摘要 為了全面衡量網絡運行狀況,就需要對網絡狀態做更細致、更精確的測量。本文向你介紹一款基於SNMP的典型網絡流量統計分析工具MRTG(MultiRouter Traffic Grapher, MRTG)的使用方法 隨著Linux應用的日益廣泛,有大量的網絡服務器使用Linux操作系統。為了全面衡量網絡運行狀況,就需要對網絡狀態做更細致、更精確的測量。SNMP協議的制訂為互聯網測量提供了有力支持。MRTG(MultiRouter Traffic Grapher, MRTG)就是基於SNMP的典型網絡流量統計分析工具。它耗用的系統資源很小,因此有很多外掛的程序也依附在MRTG下。它通過SNMP協議從設備得到其流量信息,並將流量負載以包含JPEG格式圖形的Html文檔的方式顯示給用戶,以非常直觀的形式顯示流量負載。 工作原理 網絡服務器的資料總流量(網卡的資料傳送總數)、CPU使用率以及特殊服務(例如Squid的代理服務)等的封包傳送率(或者說是流量)是網絡管理人員所必須要注意的事項。因為當主機的CPU使用率過高時,系統可能呈現不穩定的狀態,這就需要注意是哪一個服務或者誰在嘗試竊取我們的資料。因此,網絡管理方面,有必要了解我們主機的流量狀態,並視流量來加以限制或者是加大帶寬。 我們可以從MRTG的主頁:http://www.mrtg.org下載MRTG軟件。在網站:http://www.stat.ee.ethz.ch/mrtg/可以得到MRTG流量監測圖的輸出結果。示例如圖1所示。 圖1 MRTG流量監測圖的輸出結果 MRTG是用Perl寫成的,並且使用了zlib、gd以及png等函數(zlib用來壓縮圖表、gd用來繪制圖表)。服務器中已經含有下列的軟件:perl(perl-5.0xx以上)、zlib(zlib-1.1.3-xx以上)、gd(gd-1.3.xx以上)、libpng和Apache。 可以用RPM來確認它們: rpm -qa grep perl rpm -qa grep zlib rpm -qa grep gd rpm -qa grep libpng 另外,由於MRTG以HTTP的格式輸出成圖表來顯示,因此必須要安裝好Apache。以下,我們使用了預設的Apache路徑,為/usr/local/apache/htdocs這個路徑來安裝MRTG輸出的圖表。要注意,如果沒有Apache,雖然仍可以強行執行MRTG,但那就無法顯示圖表了。 安裝MRTG 由於MRTG是通過SNMP通訊協議來要求資料,因此Linux上需要先安裝相應的軟件,通常是安裝UCd-snmp這套軟件。 1.下載ucd-snmp-4.2.1.tar.gz,mrtg-2.9.17.tar.gz。 2.安裝ucd-snmp-4.2.1.tar.gz。 [root@tsai/root]#cd /usr/local/src [root@tsaisrc]#cp /root/ucd-snmp-4.2.1.tar.gz [root@tsaisrc]#tar -zxvfucd-snmp-4.2.1.tar.gz [root@tsaisrc]#cd ucd-snmp-4.2.1 [[email protected]]# ./configure--prefix=/usr/local/snmp [[email protected]]# make [[email protected]]# makeinstall 3.啟動ucd-snmp。 直接在shell下面打上/usr/local/snmp/sbin/snmpd即可,或者直接加在/etc/rc.d/rc.local當中,就可以自動開機啟動了。 4.安裝。 [root@tsai/root]# cd/usr/local/src [root@tsaisrc]# cp/root/mrtg-2.9.17.tar.gz. [root@tsaisrc]# tar-zxvfmrtg-2.9.17.tar.gz [root@tsaisrc]# cdmrtg-2.9.17 [[email protected]]# ./configure--prefix=/usr/local/mrtg-2 >--with-gd=/usr/include >--with-gd-lib=/usr/lib >--with-gd-inc=/usr/include >--with-png=/usr/include >--with-zlib=/usr/include [[email protected]]# make;makeinstall [[email protected]]# mkdir/usr/local/apache/htdocs/mrtg (請注意,這裡與你的WWW主頁的放置地點有關,請按照你的系統來設定,另外,由於我們需要設定網絡流量、CPU使用率,因此在mrtg中,再建立兩個子目錄,比較容易管理。) [[email protected]]# mkdir/usr/local/apache/htdocs/mrtg/net [[email protected]]# cpimages/*/usr/local/apache/htdocs/mrtg/net 到現在我們就已經正確地安裝了MRTG系統。 檢測網卡流量 要使用MRTG來作圖非常簡單,只要幾個小步驟就可以自動監測流量。首先以MRTG附的程序來制作一個參數項(預設為mrtg.cfg),然後修改一下mrtg.cfg這個參數項,再直接執行三次參數文件,之後用MRTG程序的小軟件直接制作成首頁,就可以察看圖表了。 設定MRTG的方法如下: [[email protected]]# cd/usr/local/mrtg-2/bin [root@tsaibin]#. /cfgmaker-- output=/usr/local/apache/htdocs/mrtg/net/mrtg.cfg >[email protected] [root@tsaibin]# vi/usr/local/apache/htdocs/mrtg/net/mrtg.cfg 不過由於程序自動設定的mrtg.cfg會有問題,因此,請將下面這三行修改成你自己的樣式。 WorkDir:/usr/local/apache/htdocs/mrtg/net/ Options[_]:growright,bits Language:GB2312 [root@tsaibin]# ./mrtg/usr/local/apache/htdocs/mrtg/net/mrtg.cfg 開始測試你的參數項,要執行三次,就可以正常工作了,不過,若是有問題的話,就需要改mrtg.cfg,再執行直到沒有錯誤發生為止。 [root@tsaibin]# ./indexmaker >--output=/usr/local/apache/htdocs/mrtg/net/index.html >--title=VBird主機流量統計表 >/usr/local/apache/htdocs/mrtg/net/mrtg.cfg 上面這個程序indexmaker是在制作首頁。會自動地輸出一個index.html的文件中。 /usr/local/apache/htdocs/mrtg/net 注意:在public@vbird. adsldns.org這一行,public是有其意義的(在SNMP這個通訊服務裡面的預設搜尋的一個代碼)。如果主機的動態DNS名稱為your.domain.name,則就一定要寫成public@your. domain.name才行。 在設定五分鐘檢測一次之後,就可以開始檢測。然後就可以通過浏覽器訪問地址http://192.168.0.1/mrtg/,選擇適當的接口地址察看流量信息了。如果希望生成類似於http://www.stat.ee.ethz.ch/mrtg/的信息,就需要自己手工編輯一個index.html文檔,存放在/var/www/html/mrtg目錄下,內容為接口說明以及該接口的日統計信息的圖表。 檢測CPU負載量 檢測CPU負載量時,需要使用到額外的外掛程序,就是sysstat這個程序。 1.下載並安裝sysstat-4.0.2-1.i386.rpm: $ rpm-ivhsysstat-4.0.2-1.i386.rpm 2. 編寫外掛程序 可以應用安裝完sysstat套件後產生的/usr/bin/sar程序進行外掛程序的編寫,也可以使用bash寫一個監測CPU的小程序。示例如下: [root@tsaicpu]#vimrtg.cpu ---程序開始---- # !/bin/bash # 這個程序是用來檢測CPU的小外掛程序。 # 1.開始使用sar來監測CPU的user及System負載率 cpuusr=`/usr/bin/sar-u13grepAverageawk'{print$3}'` cpusys=`/usr/bin/sar-u13grepAverageawk'{print$5}'` UPtime=`/usr/bin/uptimeawk'{print$3""$4""$5}'` #2.列出四個數據(前兩個為數字) echo$cpuusr echo$cpusys echo$UPtime echovbird.adsldns.org(這裡寫你的主機名稱) ----程序結束---- [root@tsaicpu]#chmod755mrtg.cpu(設定成可執行) [root@tsaicpu]#./mrtg.cpu(測試看可執行否) 2.0 5.4 1day,22:30, vbird.adsldns.org 3.開始設定MRTG參數項,方法如下: [root@tsaicpu] # vi mrtg.cfg.cpu ----程序開始---- ###GlobalConfigOptions ###Togetbitsinsteadofbytesandgraphs growingtotheright WorkDir:/usr/local/apache/htdocs/mrtg/cpu/ Language:GB2313 Target [localhost]:`/usr/local/apache/htdocs/mrtg/cpu/mrtg.cpu` MaxBytes[localhost]:100 Options[localhost]:gauge,nopercent,growright YLegend[localhost]:CPUloading(%) ShortLegend[localhost]:% LegendO[localhost]: CPU使用者負載; LegendI[localhost]: CPU純系統負載; Title[localhost]:CPU?t???v PageTop[localhost]: 這之後開始執行參數項,注意,要執行三次以上: /usr/local/mrtg-2 /bin/mrtg/usr/local/apache/htdocs/mrtg/cpu/mrtg.cfg.cpu 4.寫入到/etc/crontab當中: */2****root/usr/local/mrtg-2 /bin/mrtg/usr/local/apache/htdocs/mrtg/cpu/mrtg.cfg.cpu>/dev/null2>&1 這樣就OK了,直接將Web指向http://your.host.domain/mrtg/cpu/localhost.html。 再來說說sar。基本上,sar可以用來檢測很多的東西,例如:sar- u 1 5,每一秒鐘測一次CPU,共計五次後算平均;sarr 3 3,每三秒看一次實體與虛擬內存用量,三次後算平均。 我們主要介紹了MRTG安裝前的准備工作、開始安裝、檢測網卡流量、檢測CPU負荷等。其實MRTG還有許多功能,希望讀者進一步挖掘。