隨著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所示。
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
[root@tsaiucd-snmp-4.2.1]# ./configure--prefix=/usr/local/snmp
[root@tsaiucd-snmp-4.2.1]# make
[root@tsaiucd-snmp-4.2.1]# 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
[root@tsaimrtg-2.9.17]# ./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
[root@tsaimrtg-2.9.17]# make;makeinstall
[root@tsaimrtg-2.9.17]# mkdir/usr/local/apache/htdocs/mrtg
|
(請注意,這里與你的WWW主頁的放置地點有關,請按照你的系統來設定,另外,由于我們需要設定網絡流量、CPU使用率,因此在mrtg中,再建立兩個子目錄,比較容易管理。)
[root@tsaimrtg-2.9.17]# mkdir/usr/local/apache/htdocs/mrtg.net
[root@tsaimrtg-2.9.17]# cpimages/*/usr/local/apache/htdocs/mrtg/net
|
到現在我們就已經正確地安裝了MRTG系統。
檢測網卡流量
要使用MRTG來作圖非常簡單,只要幾個小步驟就可以自動監測流量。首先以MRTG附的程序來制作一個參數項(預設為mrtg.cfg),然后修改一下mrtg.cfg這個參數項,再直接執行三次參數文件,之后用MRTG程序的小軟件直接制作成首頁,就可以察看圖表了。
設定MRTG的方法如下:
[root@tsaimrtg-2.9.17]# cd/usr/local/mrtg-2/bin
[root@tsaibin]#. /cfgmaker--
output=/usr/local/apache/htdocs/mrtg/net/mrtg.cfg
>public@vbird.adsldns.org
[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-u13|grepAverage|awk@#{print$3}@#`
cpusys=`/usr/bin/sar-u13|grepAverage|awk@#{print$5}@#`
UPtime=`/usr/bin/uptime|awk@#{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還有許多功能,希望讀者進一步挖掘。